[Bf-committers] Stable Branch, Re: [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15132] trunk/blender/release/scripts/ import_dxf.py: import_dxf.py script update: ver.
Diego Hernan Borghetti
bdiego at gmail.com
Mon Jun 9 19:45:21 CEST 2008
On Thu, 5 Jun 2008, Remigiusz Fiedler wrote:
Hello all:
One of the topic that we don't touch in the last meeting is this, what is
the policy in this case ? I mean this commit have bugfix but also new
things.
I see this like a bugfix, it have new things but always "to fix" or made
the import script work fine.
comments ? Campbell ?
> Revision: 15132
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15132
> Author: migius
> Date: 2008-06-05 14:31:16 +0200 (Thu, 05 Jun 2008)
>
> Log Message:
> -----------
> import_dxf.py script update: ver. 1.0.12b3-2008.06.05
> bugfix: ob.name conflict with existing meshes (different ob.name/mesh.name)
> refactor/support for LWPOLYLINEs
>
> 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-06-05 11:08:51 UTC (rev 15131)
> +++ trunk/blender/release/scripts/import_dxf.py 2008-06-05 12:31:16 UTC (rev 15132)
> @@ -1,5 +1,5 @@
> #!BPY
> -# coding: utf-8
> +
> """
> Name: 'Autodesk DXF (.dxf)'
> Blender: 244
> @@ -7,14 +7,15 @@
> Tooltip: 'Import for DXF geometry data (Drawing eXchange Format).'
> """
> __author__ = 'Kitsu(Ed Blake) & migius(Remigiusz Fiedler)'
> -__version__ = '1.0.12 - 2008.02.08 by migius'
> +__version__ = '1.0.12 - 2008.06.05 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"]
> __bpydoc__ = """\
> This script imports objects from DXF (2d/3d) into Blender.
>
> -This script imports 2d and 3d geometery from DXFr12 format files.
> +This script imports 2d and 3d geometery from DXF files.
> +Supported DXF format versions: from (r2.5) r12 up to 2008.
> Enhanced features are:
> - configurable object filtering and geometry manipulation,
> - configurable material pre-processing,
> @@ -40,22 +41,23 @@
>
> Supported DXF>r12 objects:
> ELLIPSE,
> -(wip v1.0.12 partly supported) LWPOLYLINE (LightWeight),
> -(wip v1.0.12) MLINE,
> -(wip v1.0.12) MTEXT
> +LWPOLYLINE (LightWeight Polylines),
> +(wip v1.0.12) SPLINE,
> +(wip v1.0.13) MLINE,
> +(wip v1.0.13) MTEXT
>
> -Unsupported Objects:
> +Unsupported objects:
> DXF r12: DIMENSION.
> -DXF>r12: SPLINE, GROUP, RAY/XLINE, LEADER, 3DSOLID, BODY, REGION, dynamic BLOCK
> +DXF>r12: GROUP, RAY/XLINE, LEADER, 3DSOLID, BODY, REGION, dynamic BLOCK
>
> -Supported Geometry: 2d and 3d DXF-objects.
> -Curves imported as curves or meshes optionally.
> +Supported geometry: 2d and 3d DXF-objects.
> +Curves imported as Blender curves or meshes optionally.
>
> Supported layout modes:
> "model space" is default,
> "paper space" as option (= "layout views")
>
> -Scene definitions produced with AVE_RENDER:
> +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)
> @@ -77,14 +79,10 @@
> Notes:
> - Recommend that you run 'RemoveDoubles' on each imported mesh after using this script
> - Blocks are created on layer 19 then referenced at each insert point.
> -- Big DXF-files (over 1500 objects) decrease import performance.
> +- support for DXF-files up to 160MB on systems with 1GB RAM
> +- DXF-files with over 1500 objects decrease import performance.
> The problem is not the inefficiency of python-scripting but Blenders performance
> -in creating new objects in his database - probably a database management problem.
> -
> -TODO:
> -- the new style object visibility
> -- support for real 3d-solids (ACIS)
> -- (to see more, search for "--todo--" in script code)
> +in creating new objects in scene database - probably a database management problem.
>
> """
>
> @@ -92,6 +90,7 @@
> History:
> v1.0 - 2008.01. by migius
> planned tasks:
> + -- (to see more, search for "--todo--" in script code)
> -- command-line-mode/batch-mode
> -- in-place-editing for dupliGroups
> -- support for MLINE (is exported to r12 as BLOCK*Unnamed with LINEs)
> @@ -102,17 +101,23 @@
> -- added f_layerFilter
> -- to-check: obj/mat/group/_mapping-idea from ideasman42:
> -- curves: added "fill/non-fill" option for closed curves: CIRCLEs,ELLIPSEs,POLYLINEs
> - -- bug:? object = Object.Get(obname) -> = SCENE.getChildren(obname)
> -- "normalize Z" option to correct non-planar figures
> -- LINEs need "width" in 3d-space incl vGroups
> -- support width_force for LINEs/ELLIPSEs = "solidify"
> -- add better support for color_index BYLAYER=256, BYBLOCK=0
> - -- bug: "oneMesh" produces sometimes errors
> + -- bug: "oneMesh" produces irregularly errors
> -- 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
> + 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
> + b2 added support for ProE in readerDXF.py
> v1.0.12: 2008.02.08 by migius
> - -- support DXF-definitions of scene, lights and cameras
> - -- support ortho mode for VIEWs and VPORTs as cameras
> + b1 update: object = Object.Get(obname) -> f_getSceChild().getChildren()
> a9 bugfix by non-existing tables views, vports, layers (Kai reported)
> v1.0.12: 2008.01.17 by migius
> a8 lately used INI-dir/filename persistently stored in Registry
> @@ -279,9 +284,9 @@
> # --------------------------------------------------------------------------
>
> import Blender
> -#import bpy
> from Blender import *
> #from Blender.Mathutils import Vector, Matrix
> +import bpy
> #import BPyMessages
>
> from dxfReader import readDXF
> @@ -313,6 +318,8 @@
> 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
> @@ -330,6 +337,10 @@
>
> 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
>
> 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)
> @@ -342,77 +353,8 @@
> FREE = BezTriple.HandleTypes.FREE
> VECT = BezTriple.HandleTypes.VECT
> ALIGN = BezTriple.HandleTypes.ALIGN
> -cur_COUNTER = 0 #counter for progress_bar
>
>
> -"""This module provides wrapper objects for dxf entities.
> -
> - The wrappers expect a "dxf object" as input. The dxf object is
> - an object with a type and a data attribute. Type is a lowercase
> - string matching the 0 code of a dxf entity. Data is a list containing
> - dxf objects or lists of [code, data] pairs.
> -
> - This module is not general, and is only for dxf import.
> -"""
> -
> -# from Stani's dxf writer v1.1 (c)www.stani.be (GPL)
> -#---color values
> -BYBLOCK = 0
> -BYLAYER = 256
> -
> -#---block-type flags (bit coded values, may be combined):
> -ANONYMOUS =1 # This is an anonymous block generated by hatching, associative dimensioning, other internal operations, or an application
> -NON_CONSTANT_ATTRIBUTES =2 # This block has non-constant attribute definitions (this bit is not set if the block has any attribute definitions that are constant, or has no attribute definitions at all)
> -XREF =4 # This block is an external reference (xref)
> -XREF_OVERLAY =8 # This block is an xref overlay
> -EXTERNAL =16 # This block is externally dependent
> -RESOLVED =32 # This is a resolved external reference, or dependent of an external reference (ignored on input)
> -REFERENCED =64 # This definition is a referenced external reference (ignored on input)
> -
> -#---polyline flags
> -CLOSED =1 # This is a closed polyline (or a polygon mesh closed in the M direction)
> -CURVE_FIT =2 # Curve-fit vertices have been added
> -SPLINE_FIT =4 # Spline-fit vertices have been added
> -POLYLINE_3D =8 # This is a 3D polyline
> -POLYGON_MESH =16 # This is a 3D polygon mesh
> -CLOSED_N =32 # The polygon mesh is closed in the N direction
> -POLYFACE_MESH =64 # The polyline is a polyface mesh
> -CONTINOUS_LINETYPE_PATTERN =128 # The linetype pattern is generated continuously around the vertices of this polyline
> -
> -#---text flags
> -#horizontal
> -LEFT = 0
> -CENTER = 1
> -RIGHT = 2
> -ALIGNED = 3 #if vertical alignment = 0
> -MIDDLE = 4 #if vertical alignment = 0
> -FIT = 5 #if vertical alignment = 0
> -#vertical
> -BASELINE = 0
> -BOTTOM = 1
> -MIDDLE = 2
> -TOP = 3
> -
> -#---mtext flags
> -#attachment point
> -TOP_LEFT = 1
> -TOP_CENTER = 2
> -TOP_RIGHT = 3
> -MIDDLE_LEFT = 4
> -MIDDLE_CENTER = 5
> -MIDDLE_RIGHT = 6
> -BOTTOM_LEFT = 7
> -BOTTOM_CENTER = 8
> -BOTTOM_RIGHT = 9
> -#drawing direction
> -LEFT_RIGHT = 1
> -TOP_BOTTOM = 3
> -BY_STYLE = 5 #the flow direction is inherited from the associated text style
> -#line spacing style (optional):
> -AT_LEAST = 1 #taller characters will override
> -EXACT = 2 #taller characters will not override
> -
> -
> class View: #-----------------------------------------------------------------
> """Class for objects representing dxf VIEWs.
> """
> @@ -652,7 +594,15 @@
> return vec
>
>
> +#------------------------------------------
> +def getSceneChild(name):
> + dudu = [i for i in SCENE.objects if i.name==name]
> +# dudu = [i for i in SCENE.getChildren() if i.name==name]
> + #print 'deb:getSceneChild %s -result: %s:' %(name,dudu) #-----------------
> + if dudu!=[]: return dudu[0]
> + return None
>
> +
> class Solid: #-----------------------------------------------------------------
> """Class for objects representing dxf SOLID or TRACE.
> """
> @@ -754,16 +704,16 @@
> if l == 4: faces = [[0,1,3,2]]
> elif l == 3: faces = [[0,1,2]]
> elif l == 2: edges = [[0,1]]
> -
> -
> -
> - me = Mesh.New(obname) # create a new mesh
> +
> + if M_OBJ: obname, me, ob = makeNewObject()
> + else:
> + me = Mesh.New(obname) # create a new mesh
> + ob = SCENE.objects.new(me) # create a new mesh_object
> me.verts.extend(points) # add vertices to mesh
> if faces: me.faces.extend(faces) # add faces to the mesh
> if edges: me.edges.extend(edges) # add faces to the mesh
>
> - ob = SCENE.objects.new(me) # create a new mesh_object
> - if settings.var['vGroup_on']:
> + if settings.var['vGroup_on'] and not M_OBJ:
> # each MeshSide becomes vertexGroup for easier material assignment ---------------------
> replace = Blender.Mesh.AssignModes.ADD #or .AssignModes.ADD/REPLACE
> if vg_left: me.addVertGroup('side.left') ; me.assignVertsToGroup('side.left', vg_left, 1.0, replace)
> @@ -777,9 +727,6 @@
>
> return ob
>
> -
> -
> -
> class Line: #-----------------------------------------------------------------
> """Class for objects representing dxf LINEs.
> """
> @@ -838,7 +785,7 @@
> elif settings.var['lines_as'] == 3: # as thin cylinder
> cyl_rad = 0.5 * settings.var['width_min']
>
> - if settings.var['lines_as'] == 5: # LINE curve representation-------------------------
> + elif settings.var['lines_as'] == 5: # LINE curve representation-------------------------
> obname = 'li_%s' %self.layer # create object name from layer name
>
> @@ Diff output truncated at 10240 characters. @@
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
--
Diego
More information about the Bf-committers
mailing list