[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