obj = FreeCAD.ActiveDocument.getObject('Sketch002')
skGeom = obj.GeometryFacadeList
skGeomEdges = []
skPlacement = obj.Placement # Get Sketch's placement to restore later
basewires = []
for i in skGeom:
if not i.Construction:
# support Line, Arc, Circle for Sketch as Base at the moment
if isinstance(i.Geometry, (Part.LineSegment, Part.Circle, Part.ArcOfCircle)):
skGeomEdgesI = i.Geometry.toShape()
skGeomEdges.append(skGeomEdgesI)
for cluster in Part.getSortedClusters(skGeomEdges):
#for cluster in Part.sortEdges(skGeomEdges):
clusterTransformed = []
for edge in cluster:
edge.Placement = edge.Placement.multiply(skPlacement) ## TODO add attribute to skip Transform...
clusterTransformed.append(edge)
# Only use cluster of edges rather than turning into wire
basewires.append(clusterTransformed)
c = [App.Placement(App.Vector(200.0,0.0,0.0),App.Rotation(App.Vector(0.0,0.0,1.0),0.0))]
print(basewires)
len(basewires)
for i in range(len(basewires)):
w=Part.Wire(basewires[i])
#w.Placement = c[i]
w.Placement = c[0]
Part.show(w)
If the 6-shape consists of 5 sequential edges, then you indeed get a false positive. We have also seen that an Xed rectangle can produce a single wire, which may also be problematic.
OK thanks. Have an idea how to 'avoid' undesirable edges be 'connected', though a long shot.
Now, it seems isReallyClosed() needs updating, agreed ?
Hope there is further advice on the algorithm behind Part.getSortedCluster, Part.sortEdges() - either one needs to be kept in the ArchWall.py for some reason