@@ -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