diff --git a/src/Mod/OpenSCAD/OpenSCADCommands.py b/src/Mod/OpenSCAD/OpenSCADCommands.py index 45b90ed7e38b..4f919672d102 100644 --- a/src/Mod/OpenSCAD/OpenSCADCommands.py +++ b/src/Mod/OpenSCAD/OpenSCADCommands.py @@ -53,7 +53,9 @@ def randomcolor(transp=0.0): return (random.random(),random.random(),random.random(),transp) def explode(obj,color=True): - if obj.isDerivedFrom('Part::Fuse') or obj.isDerivedFrom('Part::MultiFuse'): + if obj.isDerivedFrom('Part::Fuse') or \ + obj.isDerivedFrom('Part::MultiFuse') or \ + obj.isDerivedFrom('Part::Compound'): plm = obj.Placement outlist = obj.OutList[:] if plm.isNull() or all(len(oo.InList)==1 for oo in obj.OutList): diff --git a/src/Mod/OpenSCAD/exportDRAWEXE.py b/src/Mod/OpenSCAD/exportDRAWEXE.py index fbe362a08532..9ba490c3b207 100644 --- a/src/Mod/OpenSCAD/exportDRAWEXE.py +++ b/src/Mod/OpenSCAD/exportDRAWEXE.py @@ -146,6 +146,18 @@ def process_object(csg,ob,filename): d1['y']=f2s(ob.Normal.y) d1['z']=f2s(ob.Normal.z) csg.write('smirror %(name)s %(x)s %(y)s %(z)s %(dx)s %(dy)s %(dz)s\n' % d1) + elif ob.TypeId == 'Part::Compound': + if len(ob.Links) == 0: + pass + elif len(ob.Links) == 1: + process_object(csg,ob.Links[0],filename) + csg.write('tcopy %s %s\n'%(ob.Links[0].Name,d1['name'])) + else: + basenames=[] + for i,subobj in enumerate(ob.Links): + process_object(csg,subobj,filename) + basenames.append(subobj.Name) + csg.write('compound %s %s\n' % (' '.join(basenames),ob.Name)) elif ob.TypeId in ["Part::MultiCommon", "Part::MultiFuse"]: if len(ob.Shapes) == 0: pass