def expandplacements(obj,placement):
    ownplacement=placement.multiply(obj.Placement)
    if obj.isDerivedFrom('Part::FeaturePython') and isinstance(obj.Proxy,MatrixTransform):
        #expandplacementsmatrix(obj,ownplacement.toMatrix())
        expandplacementsmatrix(obj,placement.toMatrix())
    elif likeprimitive(obj,False):
        obj.Placement=ownplacement
    elif obj.isDerivedFrom('Part::Mirroring'):
        import OpenSCADUtils
        mm  = OpenSCADUtils.mirror2mat(obj.Normal,obj.Base)
        #todo: set the base to 0,0,0
        innerp=FreeCAD.Placement(mm * ownplacement.toMatrix() *mm)
        expandplacements(obj.Source,innerp)
        obj.Placement=FreeCAD.Placement()
    else:
        for outobj in obj.OutList:
            if obj.isDerivedFrom('Part::Extrusion'):
                obj.Dir=ownplacement.Rotation.multVec(obj.Dir)
            elif obj.isDerivedFrom('Part::Revolution'):
                obj.Axis=ownplacement.Rotation.multVec(obj.Axis)
                #obj.Base=ownplacement.Rotation.multVec(obj.Base)
            expandplacements(outobj,ownplacement)
        obj.Placement=FreeCAD.Placement()
Beispiel #2
0
def expandplacements(obj,placement):
    ownplacement=placement.multiply(obj.Placement)
    if obj.isDerivedFrom('Part::FeaturePython') and isinstance(obj.Proxy,MatrixTransform):
        #expandplacementsmatrix(obj,ownplacement.toMatrix())
        expandplacementsmatrix(obj,placement.toMatrix())
    elif likeprimitive(obj,False):
        obj.Placement=ownplacement
    elif obj.isDerivedFrom('Part::Mirroring'):
        import OpenSCADUtils
        mm  = OpenSCADUtils.mirror2mat(obj.Normal,obj.Base)
        #TODO: set the base to 0,0,0
        innerp=FreeCAD.Placement(mm * ownplacement.toMatrix() *mm)
        expandplacements(obj.Source,innerp)
        obj.Placement=FreeCAD.Placement()
    else:
        for outobj in obj.OutList:
            if obj.isDerivedFrom('Part::Extrusion'):
                obj.Dir=ownplacement.Rotation.multVec(obj.Dir)
            elif obj.isDerivedFrom('Part::Revolution'):
                obj.Axis=ownplacement.Rotation.multVec(obj.Axis)
                #obj.Base=ownplacement.Rotation.multVec(obj.Base)
            expandplacements(outobj,ownplacement)
        obj.Placement=FreeCAD.Placement()