protected override void PreDrawObjects(Rhino.Display.DrawEventArgs e) { base.PreDrawObjects(e); RhinoObject foundObject = Rhino.RhinoDoc.ActiveDoc.Objects.Find(Id); Rhino.Geometry.BoundingBox bbox = foundObject.Geometry.GetBoundingBox(true); bbox.Inflate(2); e.Display.EnableDepthWriting(false); List <Rhino.Geometry.Point3d> bboxCorners = bbox.GetCorners().ToList(); List <Rhino.Geometry.Line> bboxEdges = bbox.GetEdges().ToList(); //e.Display.DrawBoxCorners(bbox, System.Drawing.Color.Red, 3, 4); Rhino.Display.RhinoView myViewport = Rhino.RhinoDoc.ActiveDoc.Views.ActiveView; Rhino.Display.RhinoViewport viewport = myViewport.ActiveViewport; e.Display.EnableDepthWriting(true); e.Display.EnableDepthWriting(false); switch (foundObject.ObjectType) { case Rhino.DocObjects.ObjectType.Point: e.Display.DrawPoint(((Rhino.Geometry.Point)foundObject.Geometry).Location, PointStyle.X, 2, myCol); break; case Rhino.DocObjects.ObjectType.Curve: e.Display.DrawCurve((Rhino.Geometry.Curve)foundObject.Geometry, myCol, 4); break; case Rhino.DocObjects.ObjectType.Extrusion: DisplayMaterial eMaterial = new DisplayMaterial(myCol, 0.5); e.Display.DrawBrepShaded(((Rhino.Geometry.Extrusion)foundObject.Geometry).ToBrep(), eMaterial); break; case Rhino.DocObjects.ObjectType.Brep: DisplayMaterial bMaterial = new DisplayMaterial(myCol, 0.5); e.Display.DrawBrepShaded((Brep)foundObject.Geometry, bMaterial); Mesh[] meshes = Rhino.Geometry.Mesh.CreateFromBrep((Brep)foundObject.Geometry); Mesh globalMesh = new Rhino.Geometry.Mesh(); foreach (Mesh m in meshes) { globalMesh.Append(m); } Polyline[] myPolys2 = globalMesh.GetOutlines(viewport); foreach (Polyline poly in myPolys2) { e.Display.DrawCurve(poly.ToNurbsCurve(), Color.Black, 6); } break; case Rhino.DocObjects.ObjectType.Mesh: var mesh = foundObject.Geometry as Rhino.Geometry.Mesh; if (mesh.VertexColors.Count > 0) { for (int i = 0; i < mesh.VertexColors.Count; i++) { mesh.VertexColors[i] = Color.FromArgb(100, mesh.VertexColors[i]); } e.Display.DrawMeshFalseColors(mesh); } else { DisplayMaterial mMaterial = new DisplayMaterial(myCol, 0.5); e.Display.DrawMeshShaded(mesh, mMaterial); } //e.Display.DrawMeshWires((Mesh)obj, Color.DarkGray); break; case Rhino.DocObjects.ObjectType.TextDot: //e.Display.Draw3dText( ((TextDot)obj).Text, Colors[count], new Plane(((TextDot)obj).Point)); var textDot = (TextDot)foundObject.Geometry; e.Display.DrawDot(textDot.Point, textDot.Text, myCol, Color.White); break; case Rhino.DocObjects.ObjectType.Annotation: var textObj = (Rhino.Geometry.TextEntity)foundObject.Geometry; e.Display.Draw3dText(textObj.Text, Color.Black, textObj.Plane, textObj.TextHeight, Rhino.RhinoDoc.ActiveDoc.Fonts[textObj.FontIndex].FaceName); break; } e.Display.EnableDepthWriting(true); List <Rhino.Geometry.Line> myEdges = new List <Rhino.Geometry.Line>(); if (Edges.Count > 0) { System.Drawing.Color colorKid = System.Drawing.Color.LightCoral; foreach (List <Guid> li in Edges) { RhinoObject foundObject0 = Rhino.RhinoDoc.ActiveDoc.Objects.Find(li[0]); RhinoObject foundObject1 = Rhino.RhinoDoc.ActiveDoc.Objects.Find(li[1]); } } Rhino.RhinoDoc.ActiveDoc.Views.Redraw(); }
protected override void SolveInstance(IGH_DataAccess DA) { // Clear lists _dispCrvN.Clear(); _dispCrvVy.Clear(); _dispCrvVz.Clear(); _dispCrvT.Clear(); _dispCrvMyy.Clear(); _dispCrvMzz.Clear(); _bbPts.Clear(); ////// INDATA ////// List<ResultElement> res = new List<ResultElement>(); List<bool> dispToggles = new List<bool>(); List<double> sFacs = new List<double>(); string name = null; // Result element if (!DA.GetDataList(0, res)) { return; } // Display toggles if (!DA.GetDataList(1, dispToggles)) { return; } if (dispToggles.Count != 6) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Number of bools in input should be 6"); return; } // Scaling factors if (!DA.GetDataList(2, sFacs)) { return; } bool sFacInputCorrect = false; if (sFacs.Count == 6) sFacInputCorrect = true; else if (sFacs.Count == 1) { sFacs.AddRange(new List<double> { sFacs[0], sFacs[0], sFacs[0], sFacs[0], sFacs[0] }); sFacInputCorrect = true; } if (!sFacInputCorrect) { AddRuntimeMessage(GH_RuntimeMessageLevel.Error, "Number of scale factors in input should be 1 or 6"); return; } if (!DA.GetData(3, ref name)) { if (res.Count > 0) { name = res[0].N1.First().Key; } } // Now it is assumed that all inputs are correct // Get toggles and scaling factors bool bN = dispToggles[0]; double sfN = sFacs[0]; bool bVy = dispToggles[1]; double sfVy = sFacs[1]; bool bVz = dispToggles[2]; double sfVz = sFacs[2]; bool bT = dispToggles[3]; double sfT = sFacs[3]; bool bMyy = dispToggles[4]; double sfMyy = sFacs[4]; bool bMzz = dispToggles[5]; double sfMzz = sFacs[5]; foreach (ResultElement re in res) { // Get element orientation Vector3d elX = re.LocalX; Vector3d elY = re.LocalY; Vector3d elZ = re.elNormal; ////// START DRAWING STUFF ////// // Normal force if (bN) _dispCrvN.AddRange(CreateCurvesFromResults(re, re.N1[name], elZ, sfN)); // Shear force in weak direction if (bVy) _dispCrvVy.AddRange(CreateCurvesFromResults(re, re.Vy[name], elY, sfVy)); // Shear force in strong direction if (bVz) _dispCrvVz.AddRange(CreateCurvesFromResults(re, re.Vz[name], elZ, sfVz)); // Torsion if (bT) _dispCrvT.AddRange(CreateCurvesFromResults(re, re.T[name], elZ, sfT)); // Moment around minor axis (bending in strong direction) if (bMyy) _dispCrvMyy.AddRange(CreateCurvesFromResults(re, re.My[name], elZ, sfMyy)); // Moment around major axis (bending in weak direction) if (bMzz) _dispCrvMzz.AddRange(CreateCurvesFromResults(re, re.Mz[name], elY, sfMzz)); } // Set bounding box _bb = new BoundingBox(_bbPts); _bb.Inflate(1.2); //Increase size by 20% to include all parts of all curves }
protected override void PreDrawObjects(Rhino.Display.DrawEventArgs e) { base.PreDrawObjects(e); for (int i = 0; i < Ids.Count; i++) { RhinoObject foundObject = Rhino.RhinoDoc.ActiveDoc.Objects.Find(Ids[i]); Rhino.Geometry.BoundingBox bbox = foundObject.Geometry.GetBoundingBox(true); bbox.Inflate(2); e.Display.EnableDepthWriting(false); //e.Display.DrawBoxCorners(bbox, System.Drawing.Color.DarkGray, 3, 2); e.Display.EnableDepthWriting(true); switch (foundObject.ObjectType) { case Rhino.DocObjects.ObjectType.Point: e.Display.DrawPoint(((Rhino.Geometry.Point)foundObject.Geometry).Location, PointStyle.X, 2, myCol); break; case Rhino.DocObjects.ObjectType.Curve: e.Display.DrawCurve((Rhino.Geometry.Curve)foundObject.Geometry, myCol, 3); break; case Rhino.DocObjects.ObjectType.Extrusion: DisplayMaterial eMaterial = new DisplayMaterial(myCol, 0.5); e.Display.DrawBrepShaded(((Rhino.Geometry.Extrusion)foundObject.Geometry).ToBrep(), eMaterial); break; case Rhino.DocObjects.ObjectType.Brep: DisplayMaterial bMaterial = new DisplayMaterial(myCol, 0.5); e.Display.DrawBrepShaded((Brep)foundObject.Geometry, bMaterial); break; case Rhino.DocObjects.ObjectType.Mesh: var mesh = foundObject.Geometry as Rhino.Geometry.Mesh; if (mesh.VertexColors.Count > 0) { for (int j = 0; j < mesh.VertexColors.Count; j++) { mesh.VertexColors[j] = Color.FromArgb(100, mesh.VertexColors[j]); } e.Display.DrawMeshFalseColors(mesh); } else { DisplayMaterial mMaterial = new DisplayMaterial(myCol, 0.5); e.Display.DrawMeshShaded(mesh, mMaterial); } //e.Display.DrawMeshWires((Mesh)obj, Color.DarkGray); break; case Rhino.DocObjects.ObjectType.TextDot: //e.Display.Draw3dText( ((TextDot)obj).Text, Colors[count], new Plane(((TextDot)obj).Point)); var textDot = (TextDot)foundObject.Geometry; e.Display.DrawDot(textDot.Point, textDot.Text, myCol, Color.White); break; case Rhino.DocObjects.ObjectType.Annotation: var textObj = (Rhino.Geometry.TextEntity)foundObject.Geometry; e.Display.Draw3dText(textObj.Text, Color.Black, textObj.Plane, textObj.TextHeight, Rhino.RhinoDoc.ActiveDoc.Fonts[textObj.FontIndex].FaceName); break; } } Rhino.RhinoDoc.ActiveDoc.Views.Redraw(); }