The two objects look like The FreeCAD file is The test GDML file being imported is My latest code attempt is branch borderSurface see https://github.com/KeithSloan/GDML/tree/borderSurface
The challenge is that the two cubes are one cube and a linked copy of the same cube displaced by 2000 ( Not my choice or under my control )
For the linked cube with displacment a new Shape is built with this code
Code: Select all
def getShape(obj):
print(obj.TypeId)
print(obj.Name)
if hasattr(obj,'Shape'):
return obj.Shape.copy()
print(dir(obj))
return obj
def adjustShape(part):
print("Adjust Shape")
print(part.Name)
print(part.OutList)
if hasattr(part,'LinkedObject'):
print(f'Linked Object {part.LinkedObject}')
part = part.getLinkedObject()
print(part.Name)
print(part.OutList)
obj = getGDMLObject(part.OutList)
obj.recompute()
# Shape is immutable so have to copy
shape = getShape(obj)
print(f'Shape Valid {shape.isValid()}')
print(dir(shape))
#return shape
return shape.translate(part.Placement.Base)
Code: Select all
def commonFace(shape0, shape1):
print('Common Face')
shape0.check()
shape1.check()
print(dir(shape0))
print(dir(shape1))
print(shape0.TypeId)
print(shape1.TypeId)
print(shape0.ShapeType)
print(shape1.ShapeType)
print(f'Vertexes {len(shape0.Vertexes)}')
print(f'Vertexes {len(shape1.Vertexes)}')
print(f'Faces {len(shape0.Faces)}')
print(f'Faces {len(shape1.Faces)}')
for face0 in shape0.Faces :
for face1 in shape1.Faces :
distance, points, info = face0.distToShape(face1)
print(f'Distance {distance} points {points} info {info}')
Code: Select all
22:33:30 Part::TopoShape
22:33:30 Part::TopoShape
22:33:30 Solid
22:33:30 Solid
22:33:30 Vertexes 8
22:33:30 Vertexes 8
22:33:30 Faces 6
22:33:30 Faces 6
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 2000.0 points [(Vector (-1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 3, None), ('Vertex', 1, None, 'Vertex', 1, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0))] info [('Vertex', 2, None, 'Vertex', 3, None), ('Vertex', 3, None, 'Vertex', 1, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0))] info [('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 3, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 0, None)]
22:33:30 Distance 2000.0 points [(Vector (1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 2, None), ('Vertex', 1, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0))] info [('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0))] info [('Vertex', 1, None, 'Vertex', 3, None), ('Vertex', 3, None, 'Vertex', 2, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 3, None), ('Vertex', 2, None, 'Vertex', 2, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0))] info [('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 3, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 2000.0 points [(Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 3, None), ('Vertex', 1, None, 'Vertex', 1, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0))] info [('Vertex', 2, None, 'Vertex', 3, None), ('Vertex', 3, None, 'Vertex', 1, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0))] info [('Vertex', 1, None, 'Vertex', 3, None), ('Vertex', 3, None, 'Vertex', 2, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 3, None), ('Vertex', 2, None, 'Vertex', 2, None)]
22:33:30 Distance 2000.0 points [(Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 2, None), ('Vertex', 1, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0))] info [('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 3, None), ('Vertex', 1, None, 'Vertex', 1, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0))] info [('Vertex', 2, None, 'Vertex', 3, None), ('Vertex', 3, None, 'Vertex', 1, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0))] info [('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 3, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 2000.0 points [(Vector (-1000.0, 1000.0, -1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (-1000.0, -1000.0, -1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (1000.0, 1000.0, -1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (1000.0, -1000.0, -1000.0), Vector (1000.0, -1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 2, None), ('Vertex', 1, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0))] info [('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 0, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0))] info [('Vertex', 1, None, 'Vertex', 3, None), ('Vertex', 3, None, 'Vertex', 2, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 3, None), ('Vertex', 2, None, 'Vertex', 2, None)]
22:33:30 Distance 2000.0 points [(Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, -1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, -1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, -1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, -1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 Distance 0.0 points [(Vector (-1000.0, 1000.0, 1000.0), Vector (-1000.0, 1000.0, 1000.0)), (Vector (-1000.0, -1000.0, 1000.0), Vector (-1000.0, -1000.0, 1000.0)), (Vector (1000.0, 1000.0, 1000.0), Vector (1000.0, 1000.0, 1000.0)), (Vector (1000.0, -1000.0, 1000.0), Vector (1000.0, -1000.0, 1000.0))] info [('Vertex', 0, None, 'Vertex', 0, None), ('Vertex', 1, None, 'Vertex', 1, None), ('Vertex', 2, None, 'Vertex', 2, None), ('Vertex', 3, None, 'Vertex', 3, None)]
22:33:30 End processing GDML file
22:33:30 time : 1.2244 seconds
22:34:03 Activated
Thanks