Skip to content

Commit 0f2425a

Browse files
committed
WIP-ADD: preview for joint and joint faces identifiers
1 parent 9c35628 commit 0f2425a

File tree

1 file changed

+36
-1
lines changed
  • src/gh/components/DF_preview_assembly

1 file changed

+36
-1
lines changed

src/gh/components/DF_preview_assembly/code.py

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,20 @@ class DFPreviewAssembly(component):
2020
def __init__(self):
2121
super(DFPreviewAssembly, self).__init__()
2222
self._dfassembly = None
23+
self._joint_rnd_clr = None
2324

2425
def RunScript(self, i_assembly: DFAssembly=None):
2526
if i_assembly is None:
2627
return None
2728

2829
self._dfassembly = i_assembly
2930

31+
self._joint_rnd_clr = [System.Drawing.Color.FromArgb(
32+
System.Convert.ToInt32(255 * np.random.rand()),
33+
System.Convert.ToInt32(255 * np.random.rand()),
34+
System.Convert.ToInt32(255 * np.random.rand())) for _ in range(len(self._dfassembly.beams))]
35+
return None
36+
3037
# Preview overrides
3138
def DrawViewportWires(self, args):
3239
for beam in self._dfassembly.beams:
@@ -38,7 +45,7 @@ def DrawViewportWires(self, args):
3845
vertices_pt3d_rh : typing.List[rg.Point3d] = [vertex.to_rg_point3d() for vertex in beam.vertices]
3946
df_cloud.points = [np.array([vertex.X, vertex.Y, vertex.Z]).reshape(3, 1) for vertex in vertices_pt3d_rh]
4047
obb: rg.Brep = diffCheck.df_cvt_bindings.cvt_dfOBB_2_rhbrep(df_cloud.get_tight_bounding_box())
41-
args.Display.DrawBrepWires(obb, System.Drawing.Color.Red)
48+
# args.Display.DrawBrepWires(obb, System.Drawing.Color.Red) ## keep for debugging
4249

4350
# axis arrow
4451
obb_faces = obb.Faces
@@ -60,3 +67,31 @@ def DrawViewportWires(self, args):
6067
#######################################
6168
## DFJoints
6269
#######################################
70+
# draw an hatch for each joint's face
71+
# beam_center = beam.center
72+
# beam_idx
73+
for idx_joint, joint in enumerate(beam.joints):
74+
joint_faces = joint.faces
75+
for idx_face, face in enumerate(joint_faces):
76+
face_center = face.to_brep_face().GetBoundingBox(False).Center
77+
args.Display.DrawPoint(face_center, self._joint_rnd_clr[idx_joint])
78+
79+
vector_face_center_2_beam_center = face_center - beam.center
80+
vector_face_center_2_beam_center.Unitize()
81+
vector_face_center_2_beam_center *= 0.4 * extension_length
82+
83+
ln = rg.Line(face_center, face_center + vector_face_center_2_beam_center)
84+
args.Display.DrawDottedLine(ln, self._joint_rnd_clr[idx_joint])
85+
86+
# name of the joint is defined by: 1) the beam index, 2) the joint index, 3) the face index
87+
name_face_joint: str = f"{beam.index_assembly}-{idx_joint}-{idx_face}"
88+
args.Display.Draw2dText(
89+
name_face_joint,
90+
self._joint_rnd_clr[idx_joint],
91+
ln.To,
92+
True, 18)
93+
# joint_faces = joint.faces
94+
# for face in joint_faces:
95+
# mesh_rh = face.to_mesh()
96+
97+
# args.Display.DrawMeshWires(mesh_rh, System.Drawing.Color.Blue)

0 commit comments

Comments
 (0)