Skip to content

Commit 858d156

Browse files
feat-wip: creating fallbac solution when only 2 parallel faces found
1 parent a4b4f21 commit 858d156

File tree

1 file changed

+13
-0
lines changed
  • src/gh/components/DF_pose_estimation

1 file changed

+13
-0
lines changed

src/gh/components/DF_pose_estimation/code.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,20 @@ def RunScript(self,
5151
df_bb_centroid = (df_bb_points[0] + df_bb_points[1]) / 2
5252
rh_bb_centroid = Rhino.Geometry.Point3d(df_bb_centroid[0], df_bb_centroid[1], df_bb_centroid[2])
5353

54+
5455
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)
5568

5669
pose = df_poses.DFPose(
5770
origin = [rh_bb_centroid.X, rh_bb_centroid.Y, rh_bb_centroid.Z],

0 commit comments

Comments
 (0)