Support "Assemble them all" trajectory generation from CAD

This commit is contained in:
IDONTSUDO 2023-06-18 15:33:16 +00:00 committed by Igor Brylyov
parent 47773be8d4
commit a38c3bec5a
42 changed files with 537 additions and 119 deletions

View file

@ -1,20 +1,40 @@
import FreeCAD as App
from helper.is_solid import is_object_solid
def is_object_solid(obj):
"""If obj is solid return True"""
if not isinstance(obj, App.DocumentObject):
return False
if hasattr(obj, 'Group'):
return False
if not hasattr(obj, 'Shape'):
return False
# if not hasattr(obj.Shape, 'Mass'):
# return False
if not hasattr(obj.Shape, 'Solids'):
return False
if len(obj.Shape.Solids) == 0:
return False
return True
class AssemblyParseUseCase:
_parts = []
_asm = []
def getAsm(self):
return self._asm
def __init__(self) -> None:
self.initParse()
if (self._asm.__len__() == 0):
self.initParse()
pass
def initParse(self):
for el in App.ActiveDocument.Objects:
if(is_object_solid(el)):
for el in App.ActiveDocument.Objects:
if (is_object_solid(el)):
self._asm.append(el.Label)
def toJson(self):
@ -28,15 +48,11 @@ class AssemblyParseUseCase:
if groupLink.get(el.Label) == None:
groupLink[el.Label] = []
for i in el.Group:
if str(i).find('Pad') != -1:
groupLink[el.Label].append(i)
if groupLink.__len__() == 0:
return None
return None
return groupLink
def getLinkedProperty(self):
return self._asm