@@ -47,24 +47,20 @@ def RunScript(self,
4747 continue
4848 rh_face_normals .append (Rhino .Geometry .Vector3d (plane_normal [0 ], plane_normal [1 ], plane_normal [2 ]))
4949
50- df_bb_points = df_cloud .get_axis_aligned_bounding_box ()
51- df_bb_centroid = (df_bb_points [0 ] + df_bb_points [1 ]) / 2
52- rh_bb_centroid = Rhino .Geometry .Point3d (df_bb_centroid [0 ], df_bb_centroid [1 ], df_bb_centroid [2 ])
53-
50+ df_bb_points = df_cloud .get_tight_bounding_box ()
51+ df_bb_centroid = sum (df_bb_points )/ len (df_bb_points )
52+ rh_tentative_bb_centroid = Rhino .Geometry .Point3d (df_bb_centroid [0 ], df_bb_centroid [1 ], df_bb_centroid [2 ])
5453
5554 new_xDirection , new_yDirection = df_poses .select_vectors (rh_face_normals , i_assembly .beams [i ].plane .XAxis , i_assembly .beams [i ].plane .YAxis )
56- if not new_yDirection :
57- df_beam_pc = dfb_geometry .DFPointCloud ()
58- for face_cloud in face_clouds :
59- df_face_cloud = df_cvt_bindings .cvt_rhcloud_2_dfcloud (face_cloud )
60- df_beam_pc .add_points (df_face_cloud )
61- corners = df_beam_pc .get_tight_bounding_box ()
62- rh_corners = [Rhino .Geometry .Point3d (pt [0 ], pt [1 ], pt [2 ]) for pt in corners ]
63- plane = Rhino .Geometry .Plane .CreateFromPoints (rh_corners [0 ],rh_corners [1 ],rh_corners [2 ])
64- box = Rhino .Geometry .Box (plane , rh_corners )
65- longest_edge = sorted (box .ToBrep ().Edges , key = lambda e : e .GetLength ())[- 1 ]
66- longest_edge_direction = longest_edge .TangentAtEnd
67- new_yDirection = Rhino .Geometry .Vector3d .CrossProduct (new_xDirection , longest_edge_direction )
55+ rh_tentative_plane = Rhino .Geometry .Plane (rh_tentative_bb_centroid , new_yDirection , new_xDirection )
56+
57+ rh_beam_cloud = Rhino .Geometry .PointCloud ()
58+ for face_cloud in face_clouds :
59+ rh_beam_cloud .Merge (face_cloud )
60+
61+ rh_bbox = rh_beam_cloud .GetBoundingBox (rh_tentative_plane )
62+ rh_bbox .Transform (Rhino .Geometry .Transform .PlaneToPlane (Rhino .Geometry .Plane .WorldXY , rh_tentative_plane ))
63+ rh_bb_centroid = rh_bbox .Center
6864
6965 pose = df_poses .DFPose (
7066 origin = [rh_bb_centroid .X , rh_bb_centroid .Y , rh_bb_centroid .Z ],
0 commit comments