[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15937] trunk/blender/release/scripts/ import_dxf.py: DXF-importer script.
Remigiusz Fiedler
migius at 4d-vectors.de
Sun Aug 3 17:57:09 CEST 2008
Revision: 15937
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15937
Author: migius
Date: 2008-08-03 17:57:09 +0200 (Sun, 03 Aug 2008)
Log Message:
-----------
DXF-importer script. Works well with 2.46winXP
Please commit to 2.47 branch
patch history:
v1.12 - 2008.08.03
c2 warningfix: relocating of globals: layersmap, oblist
c2 modif UI: buttons newScene+targetLayer moved to start panel
v1.12 - 2008.07.04
c1 added control Curve's OrderU parameter
c1 modif UI: preset buttons X-2D-3D moved to start panel
b6 added handling exception of not registered LAYERs (Hammer-HL-editor DXF output)
b5 rebuild UI: global preset 2D for Curve-Import
b5 added UI-options: PL-MESH N+N plmesh_flip and normals_out
b5 added support for SPLINEs, added control OrderU parameter
b5 rewrote draw module for NURBS_curve and Bezier_curve
v1.12 - 2008.06.22
b4 change versioning system 1.0.12 -> 1.12
b4 print at start version-info to console
b3 bugfix: ob.name conflict with existing meshes (different ob.name/mesh.name)
Modified Paths:
--------------
trunk/blender/release/scripts/import_dxf.py
Modified: trunk/blender/release/scripts/import_dxf.py
===================================================================
--- trunk/blender/release/scripts/import_dxf.py 2008-08-03 15:56:35 UTC (rev 15936)
+++ trunk/blender/release/scripts/import_dxf.py 2008-08-03 15:57:09 UTC (rev 15937)
@@ -2,15 +2,15 @@
"""
Name: 'Autodesk DXF (.dxf)'
-Blender: 244
+Blender: 246
Group: 'Import'
Tooltip: 'Import for DXF geometry data (Drawing eXchange Format).'
"""
__author__ = 'Kitsu(Ed Blake) & migius(Remigiusz Fiedler)'
-__version__ = '1.0.12 - 2008.06.05 by migius'
+__version__ = '1.12 - 2008.07.04 by migius'
__url__ = ["http://blenderartists.org/forum/showthread.php?t=84319",
"http://wiki.blender.org/index.php/Scripts/Manual/Import/DXF-3D"]
-__email__ = ["Kitsune_e(at)yahoo.com", "migius(at)4d-vectors.de"]
+__email__ = ["migius(at)4d-vectors.de","Kitsune_e(at)yahoo.com"]
__bpydoc__ = """\
This script imports objects from DXF (2d/3d) into Blender.
@@ -19,7 +19,7 @@
Enhanced features are:
- configurable object filtering and geometry manipulation,
- configurable material pre-processing,
-- DXF-data analyze and raporting.
+- DXF-code analyze and reporting.
Supported DXF r12 objects:
LINE,
@@ -41,10 +41,10 @@
Supported DXF>r12 objects:
ELLIPSE,
-LWPOLYLINE (LightWeight Polylines),
-(wip v1.0.12) SPLINE,
-(wip v1.0.13) MLINE,
-(wip v1.0.13) MTEXT
+LWPOLYLINE (LightWeight Polyline),
+SPLINE,
+(wip v1.13) MLINE,
+(wip v1.13) MTEXT
Unsupported objects:
DXF r12: DIMENSION.
@@ -60,7 +60,7 @@
Supported scene definition objescts produced with AVE_RENDER:
scene: selection of lights assigned to the camera,
lights: DIRECT, OVERHEAD, SH_SPOT,
-(wip v1.0.13 import of AVE_RENDER material definitions)
+(wip v1.13 import of AVE_RENDER material definitions)
Hierarchy:
Entire DXF BLOCK hierarchy is preserved after import into Blender
@@ -73,7 +73,7 @@
width,
color,
layer,
-(wip v1.0.12: XDATA, grouped status)
+(wip v1.13: XDATA, grouped status)
It is recommended to use DXF-object properties for assign Blender materials.
Notes:
@@ -109,9 +109,22 @@
-- bug: Registry recall from hd_cache ?? only win32 bug??
-- support DXF-definitions of scene, lights and cameras
-- support ortho mode for VIEWs and VPORTs as cameras
- -- add support for SPLINEs
- v1.0.12: 2008.06.05 by migius
+
+ v1.12 - 2008.08.03 by migius
+ c2 warningfix: relocating of globals: layersmap, oblist
+ c2 modif UI: buttons newScene+targetLayer moved to start panel
+ v1.12 - 2008.07.04 by migius
+ c1 added control Curve's OrderU parameter
+ c1 modif UI: preset buttons X-2D-3D moved to start panel
+ b6 added handling exception of not registered LAYERs (Hammer-HL-editor DXF output)
+ b5 rebuild UI: global preset 2D for Curve-Import
+ b5 added UI-options: PL-MESH N+N plmesh_flip and normals_out
+ b5 added support for SPLINEs, added control OrderU parameter
+ b5 rewrote draw module for NURBS_curve and Bezier_curve
+ v1.12 - 2008.06.22 by migius
+ b4 change versioning system 1.0.12 -> 1.12
+ b4 print at start version-info to console
b3 bugfix: ob.name conflict with existing meshes (different ob.name/mesh.name)
v1.0.12: 2008.05.24 by migius
b2 added support for LWPOLYLINEs
@@ -310,16 +323,16 @@
#print 'psyco not imported'
pass
-print '\n\n\n\n'
-print 'DXF-Importer *** start ***' #---------------------
+#try: Curve.orderU
+print '\n\n\n'
+print 'DXF-Importer v%s *** start ***' %(__version__) #---------------------
+
SCENE = None
WORLDX = Mathutils.Vector((1,0,0))
WORLDY = Mathutils.Vector((1,1,0))
WORLDZ = Mathutils.Vector((0,0,1))
-oblist = [] #to be sure, it is an empty list
-
G_SCALE = 1.0 #(0.0001-1000) global scaling factor for all dxf data
G_ORIGIN_X = 0.0 #global translation-vector (x,y,z) in DXF units
G_ORIGIN_Y = 0.0
@@ -335,12 +348,15 @@
TRIM_LIMIT = 3.0 #limit for triming of polylines-wide-segments (values:0.0 - 5.0)
ELEVATION = 0.0 #standard elevation = coordinate Z
+BYBLOCK = 0
+BYLAYER = 256
TARGET_LAYER = 3 #target blender_layer
GROUP_BYLAYER = 0 #(0/1) all entities from same layer import into one blender-group
-cur_COUNTER = 0 #counter for progress_bar
-M_OBJ = False
-BYBLOCK = 0
-BYLAYER = 256
+LAYER_DEF_NAME = 'AAAA' #default layer name
+LAYER_DEF_COLOR = 4 #default layer color
+E_M = 0
+LAB = "*) parts under construction"
+M_OBJ = 0
FILENAME_MAX = 180 #max length of path+file_name string (FILE_MAXDIR + FILE_MAXFILE)
MAX_NAMELENGTH = 17 #max_effective_obnamelength in blender =21=17+(.001)
@@ -366,27 +382,27 @@
self.type = obj.type
self.name = obj.get_type(2)[0]
- self.data = obj.data[:]
+# self.data = obj.data[:]
- self.centerX = getit(obj.data, 10, 0.0) #view center pointX (in DCS)
- self.centerY = getit(obj.data, 20, 0.0) #view center pointY (in DCS)
+ self.centerX = getit(obj, 10, 0.0) #view center pointX (in DCS)
+ self.centerY = getit(obj, 20, 0.0) #view center pointY (in DCS)
self.height = obj.get_type(40)[0] #view height (in DCS)
self.width = obj.get_type(41)[0] #view width (in DCS)
self.dir = [0,0,0]
- self.dir[0] = getit(obj.data, 11, 0.0) #view directionX from target (in WCS)
- self.dir[1] = getit(obj.data, 21, 0.0) #
- self.dir[2] = getit(obj.data, 31, 0.0) #
+ self.dir[0] = getit(obj, 11, 0.0) #view directionX from target (in WCS)
+ self.dir[1] = getit(obj, 21, 0.0) #
+ self.dir[2] = getit(obj, 31, 0.0) #
self.target = [0,0,0]
- self.target[0] = getit(obj.data, 12, 0.0) #target pointX(in WCS)
- self.target[1] = getit(obj.data, 22, 0.0) #
- self.target[2] = getit(obj.data, 32, 0.0) #
+ self.target[0] = getit(obj, 12, 0.0) #target pointX(in WCS)
+ self.target[1] = getit(obj, 22, 0.0) #
+ self.target[2] = getit(obj, 32, 0.0) #
self.length = obj.get_type(42)[0] #Lens length
- self.clip_front = getit(obj.data, 43) #Front clipping plane (offset from target point)
- self.clip_back = getit(obj.data, 44) #Back clipping plane (offset from target point)
+ self.clip_front = getit(obj, 43) #Front clipping plane (offset from target point)
+ self.clip_back = getit(obj, 44) #Back clipping plane (offset from target point)
self.twist = obj.get_type(50)[0] #view twist angle in degrees
self.flags = getit(obj, 70, 0)
@@ -450,28 +466,28 @@
self.type = obj.type
self.name = obj.get_type(2)[0]
- self.data = obj.data[:]
+# self.data = obj.data[:]
#print 'deb:vport name, data:', self.name #-------
#print 'deb:vport data:', self.data #-------
self.height = obj.get_type(40)[0] #vport height (in DCS)
- self.centerX = getit(obj.data, 12, 0.0) #vport center pointX (in DCS)
- self.centerY = getit(obj.data, 22, 0.0) #vport center pointY (in DCS)
+ self.centerX = getit(obj, 12, 0.0) #vport center pointX (in DCS)
+ self.centerY = getit(obj, 22, 0.0) #vport center pointY (in DCS)
self.width = self.height * obj.get_type(41)[0] #vport aspect ratio - width (in DCS)
self.dir = [0,0,0]
- self.dir[0] = getit(obj.data, 16, 0.0) #vport directionX from target (in WCS)
- self.dir[1] = getit(obj.data, 26, 0.0) #
- self.dir[2] = getit(obj.data, 36, 0.0) #
+ self.dir[0] = getit(obj, 16, 0.0) #vport directionX from target (in WCS)
+ self.dir[1] = getit(obj, 26, 0.0) #
+ self.dir[2] = getit(obj, 36, 0.0) #
self.target = [0,0,0]
- self.target[0] = getit(obj.data, 17, 0.0) #target pointX(in WCS)
- self.target[1] = getit(obj.data, 27, 0.0) #
- self.target[2] = getit(obj.data, 37, 0.0) #
+ self.target[0] = getit(obj, 17, 0.0) #target pointX(in WCS)
+ self.target[1] = getit(obj, 27, 0.0) #
+ self.target[2] = getit(obj, 37, 0.0) #
self.length = obj.get_type(42)[0] #Lens length
- self.clip_front = getit(obj.data, 43) #Front clipping plane (offset from target point)
- self.clip_back = getit(obj.data, 44) #Back clipping plane (offset from target point)
+ self.clip_front = getit(obj, 43) #Front clipping plane (offset from target point)
+ self.clip_back = getit(obj, 44) #Back clipping plane (offset from target point)
self.twist = obj.get_type(51)[0] #view twist angle
self.flags = getit(obj, 70, 0)
@@ -528,29 +544,36 @@
"""Class for objects representing dxf LAYERs.
"""
def __init__(self, obj, name=None, color=None, frozen=None):
- """Expects an object of type layer as input.
+ """Expects an dxfobject of type layer as input.
+ if no dxfobject - creates surogate layer with default parameters
"""
- self.type = obj.type
- self.data = obj.data[:]
- if name:
- self.name = name
- #self.bfname = name #--todo---see layernamesmap in f_getLayersmap ---
- else:
- self.name = obj.get_type(2)[0] #layer name of object
+ if obj==None:
+ self.type = 'layer'
+ if name: self.name = name
+ else: self.name = LAYER_DEF_NAME
- if color:
- self.color = color
- else:
- self.color = obj.get_type(62)[0] #color of object
+ if color: self.color = color
+ else: self.color = LAYER_DEF_COLOR
- if frozen:
- self.frozen = frozen
- else:
- self.flags = obj.get_type(70)[0]
- self.frozen = self.flags & 1
-
-
+ if frozen!=None: self.frozen = frozen
+ else: self.frozen = 0
+ else:
+ if obj.type=='layer':
+ self.type = obj.type
+ #self.data = obj.data[:]
+ if name: self.name = name
+ #self.bfname = name #--todo---see layernamesmap in f_getLayersmap ---
+ else: self.name = obj.get_type(2)[0] #layer name of object
+
+ if color: self.color = color
+ else: self.color = obj.get_type(62)[0] #color of object
+
+ if frozen!=None: self.frozen = frozen
+ else:
+ self.flags = obj.get_type(70)[0]
+ self.frozen = self.flags & 1
+
def __repr__(self):
return "%s: name - %s, color - %s" %(self.__class__.__name__, self.name, self.color)
@@ -615,15 +638,15 @@
raise TypeError, "Wrong type \'%s\' for solid/trace object!" %obj.type
self.type = obj.type
- self.data = obj.data[:]
+# self.data = obj.data[:]
self.space = getit(obj, 67, 0)
self.thic = getit(obj, 39, 0)
self.color_index = getit(obj, 62, BYLAYER)
- self.layer = getit(obj.data, 8, None)
- self.extrusion = get_extrusion(obj.data)
- self.points = self.get_points(obj.data)
+ self.layer = getit(obj, 8, None)
+ self.extrusion = get_extrusion(obj)
+ self.points = self.get_points(obj)
@@ -736,16 +759,16 @@
if not obj.type == 'line':
raise TypeError, "Wrong type \'%s\' for line object!" %obj.type
self.type = obj.type
- self.data = obj.data[:]
+# self.data = obj.data[:]
self.space = getit(obj, 67, 0)
self.thic = getit(obj, 39, 0)
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list