From 2f4b08035fde4f288acaebe56e355f3e861ac61a Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 4 Jul 2019 11:03:03 -0300 Subject: [PATCH] Draft: Proper support for layers in DXF import/export (py exporter) --- src/Mod/Draft/Resources/ui/preferences-dxf.ui | 5 ++++- src/Mod/Draft/importDXF.py | 10 +++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/Mod/Draft/Resources/ui/preferences-dxf.ui b/src/Mod/Draft/Resources/ui/preferences-dxf.ui index e986336cb0..e3f79ee549 100644 --- a/src/Mod/Draft/Resources/ui/preferences-dxf.ui +++ b/src/Mod/Draft/Resources/ui/preferences-dxf.ui @@ -386,7 +386,10 @@ Ex: for files in millimeters: 1, in centimeters: 10, in meters: 1000, in inches: If this is checked, DXF layers will be imported as Draft VisGroups - Use VisGroups + Use Layers + + + true dxfUseDraftVisGroups diff --git a/src/Mod/Draft/importDXF.py b/src/Mod/Draft/importDXF.py index 61a72a626a..585269131b 100644 --- a/src/Mod/Draft/importDXF.py +++ b/src/Mod/Draft/importDXF.py @@ -254,7 +254,11 @@ def calcBulge(v1,bulge,v2): return startpoint.add(endpoint) def getGroup(ob): - "checks if the object is part of a group" + "checks if the object is part of a group or layer" + if dxfUseDraftVisGroups: + for layer in [o for o in FreeCAD.ActiveDocument.Objects if Draft.getType(o) == "Layer"]: + if ob in layer.Group: + return layer.Label for i in FreeCAD.ActiveDocument.Objects: if i.isDerivedFrom("App::DocumentObjectGroup"): for j in i.Group: @@ -1928,7 +1932,7 @@ def writePanelCut(ob,dxf,nospline,lwPoly,parent=None): # dxf.append(dxfLibrary.Line(pts,color=getACI(ob),layer="Tags")) def getStrGroup(ob): - "gets a string version of the group name" + "gets a string version of the group or layer name" l = getGroup(ob) if six.PY2: if isinstance(l,six.text_type): @@ -2335,7 +2339,7 @@ def readPreferences(): dxfImportHatches = p.GetBool("importDxfHatches",False) dxfUseStandardSize = p.GetBool("dxfStdSize",False) dxfGetColors = p.GetBool("dxfGetOriginalColors",False) - dxfUseDraftVisGroups = p.GetBool("dxfUseDraftVisGroups",False) + dxfUseDraftVisGroups = p.GetBool("dxfUseDraftVisGroups",True) dxfFillMode = p.GetBool("fillmode",True) dxfUseLegacyImporter = p.GetBool("dxfUseLegacyImporter",False) dxfUseLegacyExporter = p.GetBool("dxfUseLegacyExporter",False)