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); } }
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); }