Beispiel #1
0
        public override void DrawViewportWires(IGH_PreviewArgs args)
        {
            args.Viewport.GetFrustumFarPlane(out Plane plane);
            RhinoViewport viewport = args.Viewport;

            ///軸外力の描画用関数*******************************************************************************
            for (int i = 0; i < _arrow.Count; i++)
            {
                if (VisualizeModel.VisualizeModel.Value == 1)
                {
                    var size = VisualizeModel.VisualizeModel.fontsize; Point3d point = _arrow[i].From; plane.Origin = point;
                    viewport.GetWorldToScreenScale(point, out double pixPerUnit); size /= pixPerUnit;
                    Text3d drawText = new Text3d(_text[i] + "kN", plane, size);
                    args.Display.Draw3dText(drawText, Color.MintCream); drawText.Dispose();
                }
                Line arrow = _arrow[i];
                args.Display.DrawLine(arrow, Color.MintCream, 2);
                args.Display.DrawArrowHead(arrow.To, arrow.Direction, Color.MintCream, 25, 0);
            }
        }
Beispiel #2
0
        protected override void PreDrawObjects(DrawEventArgs e)
        {
            var box = BoundingBox.Empty;

            foreach (var mesh in DisplayMeshes)
            {
                var b = mesh.GetBoundingBox(false);
                box.Union(b);
                e.Display.DrawMeshWires(mesh, Color.AliceBlue);
                e.Display.DrawMeshFalseColors(mesh);
            }

            e.Viewport.GetFrustumFarPlane(out Plane plane);

            foreach (var text in DisplayText)
            {
                string  t     = text.Value.ToString("f2");
                Point3d point = text.Key;
                plane.Origin = point;

                Text3d drawText = new Text3d(t, plane, 0.5);
                e.Display.Draw3dText(drawText, Color.Black);
                drawText.Dispose();
            }

            foreach (var line in DisplayPolyline)
            {
                e.Display.DrawPolyline(line, Color.Black);
            }

            foreach (var obj in Geometries)
            {
                if (obj == null)
                {
                    continue;
                }

                var mat = new DisplayMaterial
                {
                    Diffuse      = Color.AliceBlue,
                    Transparency = 0.5
                };

                var b = obj.GetBoundingBox(false);

                box.Union(b);

                switch (obj.ObjectType)
                {
                case ObjectType.Brep:
                {
                    var mesh = new Mesh();
                    Array.ForEach(Mesh.CreateFromBrep(obj as Brep, MeshingParameters.FastRenderMesh), m => mesh.Append(m));
                    e.Display.DrawMeshShaded(mesh, mat);
                    break;
                }

                case ObjectType.Curve:
                    e.Display.DrawCurve(obj as Curve, Color.AliceBlue);
                    break;

                case ObjectType.Point:
                    e.Display.DrawPoint((obj as Rhino.Geometry.Point).Location, Color.AliceBlue);
                    break;

                case ObjectType.Surface:
                {
                    var mesh = Mesh.CreateFromSurface(obj as Surface, MeshingParameters.FastRenderMesh);
                    e.Display.DrawMeshShaded(mesh, mat);
                    break;
                }

                case ObjectType.Mesh:
                    e.Display.DrawMeshShaded(obj as Mesh, mat);
                    break;

                default:
                    break;
                }
            }

            e.Viewport.SetClippingPlanes(box);
        }