def draftify(objectslist, makeblock=False, delete=True): """draftify(objectslist,[makeblock],[delete]) Turn each object of the given list (objectslist can also be a single object) into a Draft parametric wire. TODO: support more objects Parameters ---------- objectslist : makeblock : bool If makeblock is True, multiple objects will be grouped in a block. delete : bool If delete = False, old objects are not deleted """ import Part import DraftGeomUtils if not isinstance(objectslist, list): objectslist = [objectslist] newobjlist = [] for obj in objectslist: if hasattr(obj, 'Shape'): for cluster in Part.getSortedClusters(obj.Shape.Edges): w = Part.Wire(cluster) if DraftGeomUtils.hasCurves(w): if (len(w.Edges) == 1) and (DraftGeomUtils.geomType( w.Edges[0]) == "Circle"): nobj = make_circle.make_circle(w.Edges[0]) else: nobj = App.ActiveDocument.addObject( "Part::Feature", obj.Name) nobj.Shape = w else: nobj = make_wire.make_wire(w) newobjlist.append(nobj) gui_utils.format_object(nobj, obj) # sketches are always in wireframe mode. In Draft we don't like that! if App.GuiUp: nobj.ViewObject.DisplayMode = "Flat Lines" if delete: App.ActiveDocument.removeObject(obj.Name) if makeblock: return make_block.make_block(newobjlist) else: if len(newobjlist) == 1: return newobjlist[0] return newobjlist
def makeCompound(objectslist): """Return a compound object made from the given objects.""" newobj = make_block.make_block(objectslist) add_list.append(newobj) return newobj