| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | """Provides GUI tools to convert Draft objects to Sketches and back. |
| | |
| | Many Draft objects will be converted to a single non-constrained Sketch. |
| | |
| | However, a single sketch with disconnected traces will be converted |
| | into several individual Draft objects. |
| | """ |
| | |
| | |
| | |
| |
|
| | |
| | |
| | from PySide.QtCore import QT_TRANSLATE_NOOP |
| | import FreeCADGui as Gui |
| | import Draft_rc |
| | import draftguitools.gui_base_original as gui_base_original |
| | import draftguitools.gui_tool_utils as gui_tool_utils |
| | from draftutils.messages import _msg |
| | from draftutils.translate import translate |
| |
|
| | |
| | True if Draft_rc.__name__ else False |
| |
|
| |
|
| | class Draft2Sketch(gui_base_original.Modifier): |
| | """Gui Command for the Draft2Sketch tool.""" |
| |
|
| | def GetResources(self): |
| | """Set icon, menu and tooltip.""" |
| |
|
| | return { |
| | "Pixmap": "Draft_Draft2Sketch", |
| | "MenuText": QT_TRANSLATE_NOOP("Draft_Draft2Sketch", "Draft to Sketch"), |
| | "ToolTip": QT_TRANSLATE_NOOP( |
| | "Draft_Draft2Sketch", |
| | "Converts bidirectionally between Draft objects and sketches.\nMultiple selected Draft objects are converted into a single sketch.\nHowever, a single sketch with disconnected traces is converted into several individual Draft objects.", |
| | ), |
| | } |
| |
|
| | def Activated(self): |
| | """Execute when the command is called.""" |
| | super().Activated(name="Convert Draft/Sketch") |
| | if not self.ui: |
| | return |
| | if not Gui.Selection.getSelection(): |
| | self.ui.selectUi(on_close_call=self.finish) |
| | _msg(translate("draft", "Select an object to convert")) |
| | self.call = self.view.addEventCallback("SoEvent", gui_tool_utils.selectObject) |
| | else: |
| | self.proceed() |
| |
|
| | def proceed(self): |
| | """Proceed with the command if one object was selected.""" |
| | if self.call is not None: |
| | self.end_callbacks(self.call) |
| | sel = Gui.Selection.getSelection() |
| | allSketches = True |
| | allDraft = True |
| | Gui.addModule("Draft") |
| | for obj in sel: |
| | if obj.isDerivedFrom("Sketcher::SketchObject"): |
| | allDraft = False |
| | elif obj.isDerivedFrom("Part::Part2DObjectPython") or obj.isDerivedFrom( |
| | "Part::Feature" |
| | ): |
| | allSketches = False |
| | else: |
| | allDraft = False |
| | allSketches = False |
| |
|
| | if not sel: |
| | return |
| | elif allDraft: |
| | _cmd = "Draft.make_sketch" |
| | _cmd += "(" |
| | _cmd += "FreeCADGui.Selection.getSelection(), " |
| | _cmd += "autoconstraints=True" |
| | _cmd += ")" |
| | _cmd_list = ["sk = " + _cmd, "FreeCAD.ActiveDocument.recompute()"] |
| | self.commit(translate("draft", "Convert to Sketch"), _cmd_list) |
| | elif allSketches: |
| | n = 0 |
| | _cmd_list = list() |
| | for o in sel: |
| | _cmd = "Draft.draftify" |
| | _cmd += "(" |
| | _cmd += "FreeCAD.ActiveDocument." + o.Name + ", " |
| | _cmd += "delete=False" |
| | _cmd += ")" |
| | _cmd_list.append("df" + str(n) + " = " + _cmd) |
| | n += 1 |
| |
|
| | _cmd_list.append("FreeCAD.ActiveDocument.recompute()") |
| | self.commit(translate("draft", "Convert to Draft"), _cmd_list) |
| | else: |
| | _cmd_list = list() |
| | n = 0 |
| | for obj in sel: |
| | _cmd_df = "Draft.draftify" |
| | _cmd_df += "(" |
| | _cmd_df += "FreeCAD.ActiveDocument." + obj.Name + ", " |
| | _cmd_df += "delete=False" |
| | _cmd_df += ")" |
| |
|
| | _cmd_sk = "Draft.make_sketch" |
| | _cmd_sk += "(" |
| | _cmd_sk += "FreeCAD.ActiveDocument." + obj.Name + ", " |
| | _cmd_sk += "autoconstraints=True" |
| | _cmd_sk += ")" |
| |
|
| | if obj.isDerivedFrom("Sketcher::SketchObject"): |
| | _cmd_list.append("obj" + str(n) + " = " + _cmd_df) |
| | elif obj.isDerivedFrom("Part::Part2DObjectPython") or obj.isDerivedFrom( |
| | "Part::Feature" |
| | ): |
| | _cmd_list.append("obj" + str(n) + " = " + _cmd_sk) |
| | |
| | |
| | |
| | |
| | n += 1 |
| | _cmd_list.append("FreeCAD.ActiveDocument.recompute()") |
| | self.commit(translate("draft", "Convert Draft/Sketch"), _cmd_list) |
| | self.finish() |
| |
|
| |
|
| | Gui.addCommand("Draft_Draft2Sketch", Draft2Sketch()) |
| |
|
| | |
| |
|