Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Treyer <treyer@arch.ethz.ch>2014-10-21 18:37:45 +0400
committerLukas Treyer <treyer@arch.ethz.ch>2014-10-21 18:39:05 +0400
commit68e4b7e6bf9ddd643bd8ac9b48b8b9aeaeae4b03 (patch)
tree8bd3867f7884cde92fabeca14d55654829816eb2 /io_import_dxf
parent2750b4e7a1d888314793d1ab713554e6a84ab233 (diff)
Proper error message for DXF versions below AC1009. Users get notified that DXF files with version below AC1009 (DXF12) are not supported. This is because there is not enough documentation available for those versions. Users with files that old are kindly requested to export their projects to newer versions. In some cases it might also work to just replace AC1006 (or anything below AC1009) with AC1009 directly in the DXF.
Diffstat (limited to 'io_import_dxf')
-rw-r--r--io_import_dxf/__init__.py26
-rwxr-xr-xio_import_dxf/dxfgrabber/headersection.py6
-rwxr-xr-xio_import_dxf/dxfgrabber/sections.py7
3 files changed, 28 insertions, 11 deletions
diff --git a/io_import_dxf/__init__.py b/io_import_dxf/__init__.py
index e3cfa99b..fae5b173 100644
--- a/io_import_dxf/__init__.py
+++ b/io_import_dxf/__init__.py
@@ -22,6 +22,7 @@ import bpy
import os
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty, FloatProperty
from .dxfimport.do import Do, Indicator
+from .dxfgrabber.headersection import MinVersionError
from .transverse_mercator import TransverseMercator
@@ -109,17 +110,20 @@ def read(report, filename, obj_merge=BY_LAYER, import_text=True, import_light=Tr
thicknessWidth=True, but_group_by_att=True, dxf_unit_scale=1.0):
# import dxf and export nurbs types to sat/sab files
# because that's how autocad stores nurbs types in a dxf...
- do = Do(filename, obj_merge, import_text, import_light, export_acis, merge_lines, do_bbox, block_rep, recenter,
- projDXF, projSCN, thicknessWidth, but_group_by_att, dxf_unit_scale)
- errors = do.entities(os.path.basename(filename).replace(".dxf", ""), new_scene)
-
- # display errors
- for error in errors:
- report('ERROR', error)
-
- # inform the user about the sat/sab files
- if len(do.acis_files) > 0:
- report('INFO', "Exported %d NURBS objects to sat/sab files next to your DXF file" % len(do.acis_files))
+ try:
+ do = Do(filename, obj_merge, import_text, import_light, export_acis, merge_lines, do_bbox, block_rep, recenter,
+ projDXF, projSCN, thicknessWidth, but_group_by_att, dxf_unit_scale)
+ errors = do.entities(os.path.basename(filename).replace(".dxf", ""), new_scene)
+
+ # display errors
+ for error in errors:
+ report({'ERROR', 'INFO'}, error)
+
+ # inform the user about the sat/sab files
+ if len(do.acis_files) > 0:
+ report({'INFO'}, "Exported %d NURBS objects to sat/sab files next to your DXF file" % len(do.acis_files))
+ except MinVersionError as minv:
+ report({'ERROR', 'INFO'}, str(minv))
def display_groups_in_outliner():
diff --git a/io_import_dxf/dxfgrabber/headersection.py b/io_import_dxf/dxfgrabber/headersection.py
index a12cee95..8c709a5e 100755
--- a/io_import_dxf/dxfgrabber/headersection.py
+++ b/io_import_dxf/dxfgrabber/headersection.py
@@ -31,3 +31,9 @@ class HeaderSection(dict):
groups = TagGroups(tags[2:-1], split_code=9)
for group in groups:
self[group[0].value] = group[1].value
+
+
+class MinVersionError(Exception):
+
+ def __init__(self, version):
+ Exception.__init__(self, "Minimum Version DXF12 (AC1009) not met. Version found: %s." % version)
diff --git a/io_import_dxf/dxfgrabber/sections.py b/io_import_dxf/dxfgrabber/sections.py
index 286ebf09..c1b03714 100755
--- a/io_import_dxf/dxfgrabber/sections.py
+++ b/io_import_dxf/dxfgrabber/sections.py
@@ -8,6 +8,7 @@ __author__ = "mozman <mozman@gmx.at>"
from .codepage import toencoding
from .defaultchunk import DefaultChunk, iterchunks
from .headersection import HeaderSection
+from .headersection import MinVersionError
from .tablessection import TablesSection
from .entitysection import EntitySection, ObjectsSection
from .blockssection import BlocksSection
@@ -29,6 +30,11 @@ class Sections(object):
section = cls()
self._sections[section.name] = section
+ def check_min_version(self, version_string):
+ v = int(version_string.replace("AC", ""))
+ if v < 1009:
+ raise MinVersionError(version_string)
+
def _setup_sections(self, tagreader, drawing):
def name(section):
return section[1].value
@@ -38,6 +44,7 @@ class Sections(object):
if bootstrap:
new_section = HeaderSection.from_tags(section)
drawing.dxfversion = new_section.get('$ACADVER', 'AC1009')
+ self.check_min_version(drawing.dxfversion)
codepage = new_section.get('$DWGCODEPAGE', 'ANSI_1252')
drawing.encoding = toencoding(codepage)
bootstrap = False