udates from stable
This commit is contained in:
@@ -774,6 +774,7 @@ histIndex = cursor = -1 # How far back from the first letter are we? - in curren
|
||||
|
||||
# Autoexec, startup code.
|
||||
scriptDir = Get('scriptsdir')
|
||||
console_autoexec = None
|
||||
if scriptDir:
|
||||
if not scriptDir.endswith(Blender.sys.sep):
|
||||
scriptDir += Blender.sys.sep
|
||||
@@ -788,7 +789,10 @@ if scriptDir:
|
||||
except:
|
||||
cmdBuffer.append(cmdLine('...console_autoexec.py could not write, this is ok', 1, None))
|
||||
scriptDir = None # make sure we only use this for console_autoexec.py
|
||||
|
||||
|
||||
if not sys.exists(console_autoexec):
|
||||
console_autoexec = None
|
||||
|
||||
else:
|
||||
cmdBuffer.append(cmdLine('...Using existing console_autoexec.py in scripts dir', 1, None))
|
||||
|
||||
@@ -811,7 +815,7 @@ def include_console(includeFile):
|
||||
|
||||
exec('%s%s' % ('__CONSOLE_VAR_DICT__["bpy"]=', 'bpy'))
|
||||
|
||||
if scriptDir:
|
||||
if scriptDir and console_autoexec:
|
||||
include_console(console_autoexec) # pass the blender module
|
||||
|
||||
#-end autoexec-----------------------------------------------------------------#
|
||||
|
||||
@@ -7,10 +7,10 @@ Group: 'Import'
|
||||
Tooltip: 'Import for DXF geometry data (Drawing eXchange Format).'
|
||||
"""
|
||||
__author__ = 'Kitsu(Ed Blake) & migius(Remigiusz Fiedler)'
|
||||
__version__ = '1.0.beta09 by migius 02.09.2007'
|
||||
__version__ = '1.0.beta10 - 2007.09.09 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", "remi_(at)gmx.de"]
|
||||
__email__ = ["Kitsune_e(at)yahoo.com", "migius(at)4d-vectors.de"]
|
||||
__bpydoc__ = """\
|
||||
This script imports DXF objects (2d/3d) into Blender.
|
||||
|
||||
@@ -54,10 +54,8 @@ Notes:
|
||||
- Blocks are created on layer 19 then referenced at each insert point.
|
||||
* Big DXF-files (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.
|
||||
* The Blender curves of imported ARCs and POLYLINE-arc-segments have light malformed ends.(to fix in beta10)
|
||||
- Bug in newScene-option: ARCs and CIRCLEs are drawn at (0,0,0). (wip)
|
||||
|
||||
TODO:
|
||||
- filtering of unused/not-inserted Blocks
|
||||
- the new style object visibility
|
||||
- support for Spline-curves, Besier-curves
|
||||
- support for real 3d-solids (ACIS)
|
||||
@@ -65,24 +63,28 @@ TODO:
|
||||
|
||||
|
||||
History:
|
||||
v1.0 08.2007 by migius: "full 3d"-release
|
||||
TODO:
|
||||
-- command-line-mode/batch-mode
|
||||
v1.0 - 2007.09 by migius: "full 3d"-release
|
||||
planned tasks:
|
||||
-- filtering of unused/not-inserted BLOCKs
|
||||
-- human-formating of data in INI-File
|
||||
-- suport for MLine
|
||||
-- suport for Ellipse
|
||||
-- suport for Mtext
|
||||
-- blender_object.ID.properties[dxf_layer_name]
|
||||
-- Configuration files(.ini) can handle various material setups
|
||||
-- Configuration files(.ini) should/can handle various material setups
|
||||
-- added f_layerFilter
|
||||
-- to-check: new_scene-idea from ideasman42: each import create a new scene
|
||||
-- to-check: obj/mat/group/_mapping-idea from ideasman42:
|
||||
-- better support for long dxf-layer-names
|
||||
-- support width_force for LINEs/ARCs/CIRCLEs/ELLIPSEs = "solidify"
|
||||
-- added fill/non-fill option for closed curves: CIRCLEs,PLINEs
|
||||
-- bug:? Circle/Arcs in each "newScene" drawn at <0,0,0>
|
||||
-- curves: added fill/non-fill option for closed curves: CIRCLEs,ELLIPSEs,POLYLINEs
|
||||
-- bug:? object = Object.Get(obname) -> = SCENE.getChildren(obname)
|
||||
beta09: 02.09.2007 by migius
|
||||
-- command-line-mode/batch-mode
|
||||
-- fixed malformed endpoints of Blender curves of imported ARCs and POLYLINE-arc segments.
|
||||
beta10: 2007.09.09 by migius
|
||||
a1 added "fill_on" option to draw top and bottom sides of CIRCLEs and ELLIPSEs
|
||||
a1 rewrite f_CIRCLE.Draw: from Mesh.Primitive to Mesh
|
||||
a1 bugfix "newScene"-mode: Cylinders/Arcs were drawn at <0,0,0>location
|
||||
beta09: 2007.09.02 by migius
|
||||
g5 redesign UI: grouping of buttons
|
||||
g3 update multi-import-mode: <*.*> button
|
||||
g- added multi-import-mode: (path/*) for importing many dxf-files at once
|
||||
@@ -110,7 +112,7 @@ History:
|
||||
a- added support for 2d-POLYLINE: splines, fitted curves, fitted surfaces
|
||||
a- redesign f_Drawer for block_definitions
|
||||
a- rewrite import into Blender-Curve-Object
|
||||
beta08: 27.07.2007 by migius
|
||||
beta08: 2007.07.27 by migius
|
||||
l- bugfix: solid_vgroups, clean:scene.objects.new()
|
||||
l- redesign UI to standard Draw.Register+FileSelector, advanced_config_option
|
||||
k- bugfix UI:fileSelect() for MacOSX os.listdir()
|
||||
@@ -128,35 +130,35 @@ History:
|
||||
e- bugfix: closed-polymesh3d
|
||||
- rewrote: startUI, type_map.keys, f_drawer, for all class_f_draw(added "settings" as attribut)
|
||||
- added 2d/3d-support for Polyline_Width incl. angleintersection
|
||||
beta07: 19.06.2007 by migius
|
||||
beta07: 2007.06.19 by migius
|
||||
- added 3d-support for LWPolylines
|
||||
- added 2d/3d-support for Points
|
||||
beta06: 15.06.2007 by migius
|
||||
beta06: 2007.06.15 by migius
|
||||
- cleanup code
|
||||
- added 2d/3d-support for MINSERT=BlockArray in f_drawer, added f_rotXY_Vec
|
||||
beta05: 14.06.2007 by migius
|
||||
beta05: 2007.06.14 by migius
|
||||
- added 2d/3d-support for 3d-PolyLine, PolyMesh and PolyFace
|
||||
- added Global-Scale for size control of imported scenes
|
||||
beta04: 12.06.2007 by migius
|
||||
beta04: 2007.06.12 by migius
|
||||
- rewrote the f_drawBulge for correct import the arc-segments of Polylines
|
||||
beta03: 10.06.2007 by migius
|
||||
beta03: 2007.06.10 by migius
|
||||
- rewrote interface
|
||||
beta02: 09.06.2007 by migius
|
||||
beta02: 2007.06.09 by migius
|
||||
- added 3d-support for Arcs and Circles
|
||||
- added support for Object_Thickness(=height)
|
||||
beta01: 08.06.2007 by migius
|
||||
beta01: 2007.06.08 by migius
|
||||
- added 3d-support for Blocks/Inserts within nested-structures
|
||||
- rewrote f_transform for correct 3d-location/3d-rotation
|
||||
- added 3d-support Lines, 3dFaces
|
||||
- added 2d+3d-support for Solids and Traces
|
||||
|
||||
v0.9 by kitsu 01.2007: (for 2.43)
|
||||
v0.9 - 2007.01 by kitsu: (for 2.43)
|
||||
-
|
||||
|
||||
v0.8 by kitsu 12.2007:
|
||||
v0.8 - 2006.12 by kitsu:
|
||||
-
|
||||
|
||||
v0.5b by kitsu 10.2006 (for 2.42a)
|
||||
v0.5b - 2006.10 by kitsu: (for 2.42a)
|
||||
-
|
||||
|
||||
"""
|
||||
@@ -190,7 +192,7 @@ from Blender import *
|
||||
#import BPyMessages
|
||||
|
||||
|
||||
from dxfReader import readDXF # get_name, get_layer
|
||||
from dxfReader import readDXF # get_name, get_layer
|
||||
from dxfReader import Object as dxfObject
|
||||
from dxfColorMap import color_map
|
||||
from math import *
|
||||
@@ -214,7 +216,7 @@ WORLDX = Mathutils.Vector((1,0,0))
|
||||
WORLDY = Mathutils.Vector((1,1,0))
|
||||
WORLDZ = Mathutils.Vector((0,0,1))
|
||||
|
||||
G_SCALE = 1.0 #(0.0001-1000) global scaling factor for all dxf data
|
||||
G_SCALE = 1.0 #(0.0001-1000) global scaling factor for all dxf data
|
||||
MIN_DIST = 0.001 #cut-off value for sort out short-distance polyline-"duoble_vertex"
|
||||
ARC_RESOLUTION = 64 #(4-500) arc/circle resolution - number of segments
|
||||
ARC_RADIUS = 1.0 #(0.01-100) arc/circle radius for number of segments algorithm
|
||||
@@ -222,10 +224,10 @@ THIN_RESOLUTION = 8 #(4-500) thin_cylinder arc_resolution - number of segments
|
||||
MIN_THICK = MIN_DIST * 10.0 #minimal thickness by forced thickness
|
||||
MIN_WIDTH = MIN_DIST * 10.0 #minimal width by forced width
|
||||
ANGLECUT_LIMIT = 3.0 #limit for anglecut of polylines-wide-segments (values:1.0 - 5.0)
|
||||
TARGET_LAYER = 3 #target blender_layer
|
||||
TARGET_LAYER = 3 #target blender_layer
|
||||
GROUP_BYLAYER = 0 #(0/1) all entities from same layer import into one blender-group
|
||||
|
||||
FILENAME_MAX = 180 #max length of path+file_name string (FILE_MAXDIR + FILE_MAXFILE)
|
||||
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)
|
||||
INIFILE_DEFAULT_NAME = 'importDXF'
|
||||
INIFILE_EXTENSION = '.ini'
|
||||
@@ -254,29 +256,29 @@ 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
|
||||
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)
|
||||
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
|
||||
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
|
||||
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
|
||||
RIGHT = 2
|
||||
ALIGNED = 3 #if vertical alignment = 0
|
||||
MIDDLE = 4 #if vertical alignment = 0
|
||||
FIT = 5 #if vertical alignment = 0
|
||||
@@ -290,7 +292,7 @@ TOP = 3
|
||||
#attachment point
|
||||
TOP_LEFT = 1
|
||||
TOP_CENTER = 2
|
||||
TOP_RIGHT = 3
|
||||
TOP_RIGHT = 3
|
||||
MIDDLE_LEFT = 4
|
||||
MIDDLE_CENTER = 5
|
||||
MIDDLE_RIGHT = 6
|
||||
@@ -303,7 +305,7 @@ 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
|
||||
EXACT = 2 #taller characters will not override
|
||||
|
||||
|
||||
|
||||
@@ -354,7 +356,7 @@ def getit(obj, typ, default=None): #------------------------------------------
|
||||
# TODO - I found one case where item was a text instance
|
||||
# that failed with no __getitem__
|
||||
pass
|
||||
else: #else searching in Object with get_type-Methode
|
||||
else: #else searching in Object with get_type-Methode
|
||||
item = obj.get_type(typ)
|
||||
if item:
|
||||
it = item[0]
|
||||
@@ -483,8 +485,8 @@ class Solid: #-----------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me.verts.extend(points) # add vertices to mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
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
|
||||
|
||||
@@ -492,7 +494,7 @@ class Solid: #-----------------------------------------------------------------
|
||||
if settings.var['vGroup_on']:
|
||||
# each MeshSite 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)
|
||||
if vg_left: me.addVertGroup('side.left') ; me.assignVertsToGroup('side.left', vg_left, 1.0, replace)
|
||||
if vg_right:me.addVertGroup('side.right') ; me.assignVertsToGroup('side.right', vg_right, 1.0, replace)
|
||||
if vg_top: me.addVertGroup('side.top') ; me.assignVertsToGroup('side.top', vg_top, 1.0, replace)
|
||||
if vg_bottom:me.addVertGroup('side.bottom'); me.assignVertsToGroup('side.bottom',vg_bottom, 1.0, replace)
|
||||
@@ -566,11 +568,11 @@ class Line: #-----------------------------------------------------------------
|
||||
#print 'deb:line.draw obname from activObjectName: ', obname #---------------------
|
||||
ob = Object.Get(obname) # open an existing mesh_object
|
||||
#ob = SCENE.getChildren(obname) # open an existing mesh_object
|
||||
me = Mesh.Get(ob.name) # open objects mesh data
|
||||
me = Mesh.Get(ob.name) # open objects mesh data
|
||||
else:
|
||||
obname = 'li_%s' %self.layer # create object name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
activObjectName = ob.name
|
||||
activObjectLayer = self.layer
|
||||
@@ -683,9 +685,9 @@ class Point: #-----------------------------------------------------------------
|
||||
#print 'deb:draw:point.ob obname from activObjectName: ', obname #---------------------
|
||||
ob = Object.Get(obname) # open an existing mesh_object
|
||||
#ob = SCENE.getChildren(obname) # open an existing mesh_object
|
||||
me = Mesh.Get(ob.name) # open objects mesh data
|
||||
me = Mesh.Get(ob.name) # open objects mesh data
|
||||
else:
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
activObjectName = ob.name
|
||||
activObjectLayer = self.layer
|
||||
@@ -785,18 +787,18 @@ class LWpolyline: #------------------------------------------------------------
|
||||
points.append(point.loc)
|
||||
elif point.bulge and not self.closed and i == len(self.points)-1:
|
||||
points.append(point.loc)
|
||||
elif point.bulge: #
|
||||
elif point.bulge: #
|
||||
if i == len(self.points)-1:
|
||||
point2 = self.points[0]
|
||||
else:
|
||||
point2 = self.points[i+1]
|
||||
arc_res = settings.var['arc_res']/sqrt(settings.var['arc_rad'])
|
||||
verts = drawBulge(point, point2, arc_res)
|
||||
# if i == len(self.points)-1:
|
||||
# if self.closed:
|
||||
# verts.pop() #remove last(=first) vertex
|
||||
# else:
|
||||
# verts.pop() #remove last vertex, because this point will be writen as the next vertex
|
||||
# if i == len(self.points)-1:
|
||||
# if self.closed:
|
||||
# verts.pop() #remove last(=first) vertex
|
||||
# else:
|
||||
# verts.pop() #remove last vertex, because this point will be writen as the next vertex
|
||||
points.extend(verts)
|
||||
|
||||
thic = self.thic
|
||||
@@ -810,19 +812,19 @@ class LWpolyline: #------------------------------------------------------------
|
||||
if self.closed:
|
||||
faces.append([len1-1, 0, len1, 2*len1-1])
|
||||
#print 'deb:faces_list:\n', faces #-----------------------
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
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
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
else:
|
||||
edges = [[num, num+1] for num in xrange(len(points)-1)]
|
||||
if self.closed:
|
||||
edges.append([len(points)-1, 0])
|
||||
#print 'deb:edges_list:\n', edges #-----------------------
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
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
|
||||
me.edges.extend(edges) # add edges to the mesh
|
||||
me.edges.extend(edges) # add edges to the mesh
|
||||
|
||||
ob.LocZ = self.elevation
|
||||
transform(self.extrusion, 0, ob)
|
||||
@@ -866,7 +868,7 @@ class Polyline: #--------------------------------------------------------------
|
||||
if self.poly3d or self.plface or self.plmesh:
|
||||
self.poly2d = False # its not a 2D-polyline
|
||||
else:
|
||||
self.poly2d = True # it is a 2D-polyline
|
||||
self.poly2d = True # it is a 2D-polyline
|
||||
|
||||
self.swidth = getit(obj, 40, 0) # default start width
|
||||
self.ewidth = getit(obj, 41, 0) # default end width
|
||||
@@ -937,10 +939,10 @@ class Polyline: #--------------------------------------------------------------
|
||||
#print 'deb:faces_list:\n', faces #-----------------------
|
||||
obname = 'pf_%s' %self.layer # create object name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
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
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
|
||||
transform(self.extrusion, 0, ob)
|
||||
#print 'deb:polyface.draw.END:----------------' #------------------------
|
||||
@@ -980,10 +982,10 @@ class Polyline: #--------------------------------------------------------------
|
||||
#print 'deb:faces_list:\n', faces #-----------------------
|
||||
obname = 'pm_%s' %self.layer # create object name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
me.verts.extend([point.loc for point in self.points]) # add vertices to mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
|
||||
transform(self.extrusion, 0, ob)
|
||||
#print 'deb:polymesh.draw.END:----------------' #------------------------
|
||||
@@ -999,8 +1001,8 @@ class Polyline: #--------------------------------------------------------------
|
||||
return
|
||||
|
||||
if self.spline: pline_typ = 'ps' # Polyline-nurbSpline
|
||||
elif self.curved: pline_typ = 'pc' # Polyline-bezierCurve
|
||||
else: pline_typ = 'pl' # Polyline
|
||||
elif self.curved: pline_typ = 'pc' # Polyline-bezierCurve
|
||||
else: pline_typ = 'pl' # Polyline
|
||||
obname = '%s_%s' %(pline_typ, self.layer) # create object_name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
d_points = []
|
||||
@@ -1021,7 +1023,7 @@ class Polyline: #--------------------------------------------------------------
|
||||
d_points = temp_points
|
||||
|
||||
#print 'deb:polyline2dCurve.draw d_points=', d_points #---------------
|
||||
pline = Curve.New(obname) # create new curve data
|
||||
pline = Curve.New(obname) # create new curve data
|
||||
|
||||
if False: #self.spline: # NURBSplines-----FAKE(with Bezier)-----
|
||||
#print 'deb:polyline2dCurve.draw self.spline!' #---------------
|
||||
@@ -1066,8 +1068,8 @@ class Polyline: #--------------------------------------------------------------
|
||||
for d in d_points:
|
||||
d = d.loc
|
||||
d.append(weight1)
|
||||
temp_points.append(d)
|
||||
d_points = temp_points
|
||||
temp_points.append(d)
|
||||
d_points = temp_points
|
||||
|
||||
if not self.closed:
|
||||
# generate extended startpoint and endpoint------
|
||||
@@ -1109,7 +1111,7 @@ class Polyline: #--------------------------------------------------------------
|
||||
curve[0].handleTypes = [FREE, ALIGN] #remi--todo-----
|
||||
curve[-1].handleTypes = [ALIGN, FREE] #remi--todo-----
|
||||
|
||||
else: #--straight line/arc-segments----OK------
|
||||
else: #--straight line/arc-segments----OK------
|
||||
points = []
|
||||
d_points.append(d_points[0]) #------ first vertex added -------------
|
||||
#curve.setType(0) #polygon_type of Blender_curve
|
||||
@@ -1124,14 +1126,14 @@ class Polyline: #--------------------------------------------------------------
|
||||
for p in verts[1:]:
|
||||
curve.append(BezTriple.New(p))
|
||||
curve[-1].handleTypes = [AUTO, AUTO] #--todo--calculate bezier-tangents
|
||||
# curve[-1].handleTypes = [VECT, VECT] #--todo--calculate bezier-tangents
|
||||
# curve[-1].handleTypes = [VECT, VECT] #--todo--calculate bezier-tangents
|
||||
else:
|
||||
if i == 0: curve = pline.appendNurb(BezTriple.New(point1.loc))
|
||||
else: curve.append(BezTriple.New(point1.loc))
|
||||
curve[-1].handleTypes = [VECT, VECT] #--todo--calculate bezier-tangents
|
||||
if self.closed:
|
||||
curve.flagU = 1 # Set curve cyclic=close
|
||||
# curve[0].handleTypes = [VECT, VECT] #--todo--calculate bezier-tangents
|
||||
# curve[0].handleTypes = [VECT, VECT] #--todo--calculate bezier-tangents
|
||||
else:
|
||||
curve.flagU = 0 # Set curve not cyclic=open
|
||||
curve[0].handleTypes = [FREE, VECT] #--todo--calculate bezier-tangents
|
||||
@@ -1168,7 +1170,7 @@ class Polyline: #--------------------------------------------------------------
|
||||
elif self.curved: pline_typ = 'pc'
|
||||
else: pline_typ = 'pl'
|
||||
obname = '%s_%s' %(pline_typ, self.layer) # create object_name from layer name
|
||||
# obname = 'pl_%s' %self.layer # create object name from layer name
|
||||
# obname = 'pl_%s' %self.layer # create object name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
|
||||
if len(self.points) < 2:
|
||||
@@ -1380,10 +1382,10 @@ class Polyline: #--------------------------------------------------------------
|
||||
#faces = f_bottom + f_top
|
||||
#faces = f_left + f_right + f_start + f_end
|
||||
#print 'deb:faces_list:\n', faces #-----------------------
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
me.verts.extend(pointsW) # add vertices to mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
|
||||
# each MeshSite becomes vertexGroup for easier material assignment ---------------------
|
||||
# The mesh must first be linked to an object so the method knows which object to update.
|
||||
@@ -1412,10 +1414,10 @@ class Polyline: #--------------------------------------------------------------
|
||||
faces = [[num, len1+num, len1+num+1, num+1] for num in xrange(len1 - 1)]
|
||||
if self.closed:
|
||||
faces.append([len1, 0, len1-1, len1+len1-1])
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
me.verts.extend(pointsW) # add vertices to mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
|
||||
|
||||
# 1.level:IF no-width, but thickness ---------------------
|
||||
@@ -1432,20 +1434,20 @@ class Polyline: #--------------------------------------------------------------
|
||||
faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
|
||||
if self.closed:
|
||||
faces.append([len1-1, 0, len1, 2*len1-1])
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
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
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
|
||||
# 1.level:IF no-width and no-thickness ---------------------
|
||||
else:
|
||||
edges = [[num, num+1] for num in xrange(len(points)-1)]
|
||||
if self.closed:
|
||||
edges.append([len(points)-1, 0])
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
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
|
||||
me.edges.extend(edges) # add edges to the mesh
|
||||
me.edges.extend(edges) # add edges to the mesh
|
||||
|
||||
transform(self.extrusion, 0, ob)
|
||||
#print 'deb:polyline.draw.END:----------------' #-----------------------
|
||||
@@ -1687,7 +1689,7 @@ class Text: #-----------------------------------------------------------------
|
||||
# flip it and scale it to the text width
|
||||
ob.SizeX *= self.height * self.width_factor * self.mirrorX
|
||||
ob.SizeY *= self.height * self.mirrorY
|
||||
if thic != 0.0: ob.SizeZ *= abs(thic)
|
||||
if thic != 0.0: ob.SizeZ *= abs(thic)
|
||||
return ob
|
||||
|
||||
|
||||
@@ -1697,6 +1699,7 @@ def set_thick(thickness, settings):
|
||||
|
||||
Set thickness relative to settings variables:
|
||||
'thick_on','thick_force','thick_min'.
|
||||
Accepted also minus values of thickness
|
||||
python trick: sign(x)=cmp(x,0)
|
||||
"""
|
||||
if settings.var['thick_force']:
|
||||
@@ -1769,7 +1772,7 @@ class Mtext: #-----------------------------------------------------------------
|
||||
"""Gets location for a mtext type objects.
|
||||
|
||||
Mtext objects have only one point indicating
|
||||
"""
|
||||
"""
|
||||
loc = [0, 0, 0]
|
||||
loc[0] = getit(data, 10, None)
|
||||
loc[1] = getit(data, 20, None)
|
||||
@@ -1864,7 +1867,7 @@ class Circle: #----------------------------------------------------------------
|
||||
|
||||
thic = set_thick(self.thic, settings)
|
||||
if settings.var['curves_on']:
|
||||
c = Curve.New(obname) # create new curve data
|
||||
c = Curve.New(obname) # create new curve data
|
||||
p1 = (0, -radius, 0)
|
||||
p2 = (radius, 0, 0)
|
||||
p3 = (0, radius, 0)
|
||||
@@ -1896,29 +1899,73 @@ class Circle: #----------------------------------------------------------------
|
||||
ob.SizeZ *= abs(thic)
|
||||
return ob
|
||||
|
||||
else:
|
||||
# if False: #if radius < 2 * settings.var['dist_min']: # if circumfence is very small
|
||||
# verts_num = settings.var['thin_res'] # set a fixed number of verts
|
||||
# else:
|
||||
# #verts = circ/settings.var['dist_min'] # figure out how many verts we need
|
||||
# verts_num = settings.var['arc_res'] # figure out how many verts we need
|
||||
elif False:
|
||||
verts_num = settings.var['arc_res'] * sqrt(radius / settings.var['arc_rad'])
|
||||
if verts_num > 100: verts_num = 100 # Blender accepts only values [3:500]
|
||||
if verts_num < 4: verts_num = 4 # Blender accepts only values [3:500]
|
||||
if thic != 0:
|
||||
loc2 = thic * 0.5 #-----blenderAPI draw Cylinder with 2*thickness
|
||||
loc2 = thic * 0.5 #-----blenderAPI draw Cylinder with 2*thickness
|
||||
self.loc[2] += loc2 #---new location for the basis of cylinder
|
||||
#print 'deb:circleDraw:self.loc2:', self.loc #-----------------------
|
||||
c = Mesh.Primitives.Cylinder(int(verts_num), radius*2, abs(thic))
|
||||
else:
|
||||
c = Mesh.Primitives.Circle(int(verts_num), radius*2)
|
||||
|
||||
c.update()
|
||||
#c.update()
|
||||
ob = SCENE.objects.new(c, obname) # create a new circle_mesh_object
|
||||
ob.loc = tuple(self.loc)
|
||||
transform(self.extrusion, 0, ob)
|
||||
return ob
|
||||
|
||||
else:
|
||||
cir = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(cir) # create a new arc_object
|
||||
# set a number of segments in entire circle
|
||||
arc_res = settings.var['arc_res'] * sqrt(radius) / sqrt(settings.var['arc_rad'])
|
||||
start, end = 0.0 , 360.0
|
||||
verts, edges = drawArc(None, radius, start, end, arc_res)
|
||||
verts = verts[:-2] #list without last point (cause first piont equal)
|
||||
edges = edges[:-1]
|
||||
edges[-1][1] = 0
|
||||
print 'deb:edges:', edges #remi-todo----- why is this List inhomogene ? ----------
|
||||
if thic != 0:
|
||||
len1 = len(verts)
|
||||
thic_verts = []
|
||||
thic_verts.extend([[point[0], point[1], point[2]+thic] for point in verts])
|
||||
if thic < 0.0:
|
||||
thic_verts.extend(verts)
|
||||
verts = thic_verts
|
||||
else:
|
||||
verts.extend(thic_verts)
|
||||
faces = []
|
||||
faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
|
||||
faces.append([len1 - 1, 0, len1, len1 + len1 -1])
|
||||
if settings.var['fill_on']:
|
||||
if thic < 0.0:
|
||||
verts.append([0,0,thic]) #center of top side
|
||||
verts.append([0,0,0]) #center of bottom side
|
||||
else:
|
||||
verts.append([0,0,0]) #center of bottom side
|
||||
verts.append([0,0,thic]) #center of top side
|
||||
center1 = len(verts)-2
|
||||
center2 = len(verts)-1
|
||||
faces.extend([num+1, num, center1] for num in xrange(len1 - 1))
|
||||
faces.append([0, len1 - 1, center1])
|
||||
faces.extend([num+len1, num+1+len1, center2] for num in xrange(len1 - 1))
|
||||
faces.append([len1-1+len1, 0+len1, center2])
|
||||
#print 'deb:verts:', verts #---------------
|
||||
#print 'deb:faces:', faces #---------------
|
||||
cir.verts.extend(verts) # add vertices to mesh
|
||||
cir.faces.extend(faces) # add faces to the mesh
|
||||
else:
|
||||
cir.verts.extend(verts) # add vertices to mesh
|
||||
cir.edges.extend(edges) # add edges to the mesh
|
||||
|
||||
ob.loc = tuple(self.loc)
|
||||
transform(self.extrusion, 0, ob)
|
||||
return ob
|
||||
|
||||
|
||||
|
||||
|
||||
class Arc: #-----------------------------------------------------------------
|
||||
@@ -1982,7 +2029,7 @@ class Arc: #-----------------------------------------------------------------
|
||||
if settings.var['curves_on']:
|
||||
arc_res = 8
|
||||
verts, edges = drawArc(None, radius, start, end, arc_res)
|
||||
arc = Curve.New(obname) # create new curve data
|
||||
arc = Curve.New(obname) # create new curve data
|
||||
curve = arc.appendNurb(BezTriple.New(verts[0]))
|
||||
for p in verts[1:]:
|
||||
curve.append(BezTriple.New(p))
|
||||
@@ -2007,7 +2054,8 @@ class Arc: #-----------------------------------------------------------------
|
||||
return ob
|
||||
|
||||
else:
|
||||
arc = Mesh.New(obname) # create a new mesh
|
||||
arc = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(arc) # create a new arc_object
|
||||
# set a number of segments in entire circle
|
||||
arc_res = settings.var['arc_res'] * sqrt(radius) / sqrt(settings.var['arc_rad'])
|
||||
verts, edges = drawArc(None, radius, start, end, arc_res)
|
||||
@@ -2025,17 +2073,17 @@ class Arc: #-----------------------------------------------------------------
|
||||
#print 'deb:verts:', verts #remi-todo----- why is this List inhomogene ----------
|
||||
faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
|
||||
|
||||
arc.verts.extend(verts) # add vertices to mesh
|
||||
arc.faces.extend(faces) # add faces to the mesh
|
||||
arc.verts.extend(verts) # add vertices to mesh
|
||||
arc.faces.extend(faces) # add faces to the mesh
|
||||
else:
|
||||
arc.verts.extend(verts) # add vertices to mesh
|
||||
arc.edges.extend(edges) # add edges to the mesh
|
||||
arc.verts.extend(verts) # add vertices to mesh
|
||||
arc.edges.extend(edges) # add edges to the mesh
|
||||
|
||||
arc.update()
|
||||
ob = SCENE.objects.new(arc) # create a new arc_object
|
||||
#arc.update()
|
||||
#ob = SCENE.objects.new(arc) # create a new arc_object
|
||||
#ob.link(arc)
|
||||
ob.loc = tuple(center)
|
||||
ob.loc = Mathutils.Vector(ob.loc)
|
||||
#ob.loc = Mathutils.Vector(ob.loc)
|
||||
transform(self.extrusion, 0, ob)
|
||||
#ob.size = (1,1,1)
|
||||
return ob
|
||||
@@ -2286,6 +2334,7 @@ class Ellipse: #---------------------------------------------------------------
|
||||
"""for ELLIPSE: generate Blender_geometry.
|
||||
"""
|
||||
# Generate the geometery
|
||||
center = self.loc
|
||||
thic = set_thick(self.thic, settings)
|
||||
|
||||
if settings.var['curves_on']:
|
||||
@@ -2293,13 +2342,12 @@ class Ellipse: #---------------------------------------------------------------
|
||||
else:
|
||||
obname = 'el_%s' %self.layer # create object name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
|
||||
major = Mathutils.Vector(self.major)
|
||||
#remi--todo----AngleBetweenVecs makes abs(value)!-----
|
||||
delta = Mathutils.AngleBetweenVecs(major, WORLDX)
|
||||
center = self.loc
|
||||
radius = major.length
|
||||
start = degrees(self.start_angle)
|
||||
end = degrees(self.end_angle)
|
||||
@@ -2322,11 +2370,11 @@ class Ellipse: #---------------------------------------------------------------
|
||||
#print 'deb:verts:', verts #remi--todo----- why is this List inhomogene? ----------
|
||||
faces = [[num, num+1, num+len1+1, num+len1] for num in xrange(len1 - 1)]
|
||||
|
||||
me.verts.extend(verts) # add vertices to mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
me.verts.extend(verts) # add vertices to mesh
|
||||
me.faces.extend(faces) # add faces to the mesh
|
||||
else:
|
||||
me.verts.extend(verts) # add vertices to mesh
|
||||
me.edges.extend(edges) # add edges to the mesh
|
||||
me.verts.extend(verts) # add vertices to mesh
|
||||
me.edges.extend(edges) # add edges to the mesh
|
||||
|
||||
ob.loc = tuple(center)
|
||||
ob.SizeY = self.ratio
|
||||
@@ -2408,13 +2456,13 @@ class Face: #-----------------------------------------------------------------
|
||||
else:
|
||||
obname = 'fa_%s' %self.layer # create object name from layer name
|
||||
obname = obname[:MAX_NAMELENGTH]
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
me = Mesh.New(obname) # create a new mesh
|
||||
ob = SCENE.objects.new(me) # create a new mesh_object
|
||||
activObjectName = ob.name
|
||||
activObjectLayer = self.layer
|
||||
#print ('deb:except. new face.ob+mesh:"%s" created!' %ob.name) #---------------------
|
||||
|
||||
me = Mesh.Get(ob.name) # open objects mesh data
|
||||
me = Mesh.Get(ob.name) # open objects mesh data
|
||||
faces, edges = [], []
|
||||
n = len(me.verts)
|
||||
if len(self.points) == 4:
|
||||
@@ -2455,10 +2503,10 @@ type_map = {
|
||||
'point':Point,
|
||||
'3dface':Face,
|
||||
'line':Line,
|
||||
# 'mline':MLine,
|
||||
# 'mline':MLine,
|
||||
'polyline':Polyline,
|
||||
'lwpolyline':LWpolyline,
|
||||
# 'region':Region,
|
||||
# 'region':Region,
|
||||
'trace':Solid,
|
||||
'solid':Solid,
|
||||
'text':Text,
|
||||
@@ -2579,8 +2627,8 @@ class MatColors: #-------------------------------------------------------------
|
||||
mat.setRGBCol(color_map[color])
|
||||
mat.mode |= Material.Modes.SHADELESS
|
||||
mat.mode |= Material.Modes.WIRE
|
||||
# try: mat.setMode('Shadeless', 'Wire') #work-around for 2.45rc-bug
|
||||
# except: pass
|
||||
# try: mat.setMode('Shadeless', 'Wire') #work-around for 2.45rc-bug
|
||||
# except: pass
|
||||
self.colMaterials[color] = mat
|
||||
|
||||
|
||||
@@ -2627,8 +2675,8 @@ class MatLayers: #-------------------------------------------------------------
|
||||
mat.setRGBCol(color_map[color])
|
||||
mat.mode |= Material.Modes.SHADELESS
|
||||
mat.mode |= Material.Modes.WIRE
|
||||
# try: mat.setMode('Shadeless', 'Wire') #work-around for 2.45rc-bug
|
||||
# except: pass
|
||||
# try: mat.setMode('Shadeless', 'Wire') #work-around for 2.45rc-bug
|
||||
# except: pass
|
||||
self.layMaterials[layername] = mat
|
||||
|
||||
|
||||
@@ -2647,7 +2695,7 @@ class Blocks: #----------------------------------------------------------------
|
||||
def __init__(self, blocksmap, settings):
|
||||
"""Expects a dictionary mapping block_name:block_data.
|
||||
"""
|
||||
self.blocksmap = blocksmap #a dictionary mapping block_name:block_data
|
||||
self.blocksmap = blocksmap #a dictionary mapping block_name:block_data
|
||||
self.settings = settings
|
||||
self.blocks = {} #container for blocks
|
||||
|
||||
@@ -2695,7 +2743,7 @@ class Settings: #--------------------------------------------------------------
|
||||
"""
|
||||
self.obj_number = 1 #global object_number for progress_bar
|
||||
|
||||
self.var = dict(keywords) #a dictionary of (key_variable:Value) control parameter
|
||||
self.var = dict(keywords) #a dictionary of (key_variable:Value) control parameter
|
||||
self.drawTypes = dict(drawTypes) #a dictionary of (entity_type:True/False) = import on/off for this entity_type
|
||||
|
||||
self.var['colorFilter_on'] = False #deb:remi------------
|
||||
@@ -2731,7 +2779,7 @@ class Settings: #--------------------------------------------------------------
|
||||
"""Given the drawing, build dictionaries of Layers, Colors and Blocks.
|
||||
"""
|
||||
|
||||
#de: pa<70>t die distance parameter an globalScale
|
||||
#de: pa<70>t die distance parameter an globalScale
|
||||
if self.var['g_scale'] != 1:
|
||||
self.var['dist_min'] = self.var['dist_min'] / self.var['g_scale']
|
||||
self.var['thick_min'] = self.var['thick_min'] / self.var['g_scale']
|
||||
@@ -2851,8 +2899,8 @@ def main(dxfFile): #---------------#############################-----------
|
||||
if editmode:
|
||||
Window.EditMode(0) # leave edit mode before
|
||||
|
||||
SCENE = bpy.data.scenes.active
|
||||
SCENE.objects.selected = [] # deselect all
|
||||
#SCENE = bpy.data.scenes.active
|
||||
#SCENE.objects.selected = [] # deselect all
|
||||
|
||||
global cur_COUNTER #counter for progress_bar
|
||||
cur_COUNTER = 0
|
||||
@@ -2914,13 +2962,15 @@ def main(dxfFile): #---------------#############################-----------
|
||||
drawEntities(drawing.entities, settings)
|
||||
|
||||
#print 'deb:drawEntities after: oblist:', oblist #-----------------------
|
||||
if oblist and settings.var['g_scale'] != 1:
|
||||
if oblist: # and settings.var['g_scale'] != 1:
|
||||
globalScale(oblist, settings.var['g_scale'])
|
||||
|
||||
# Set the visable layers
|
||||
SCENE.setLayers([i+1 for i in range(18)])
|
||||
SCENE.update(1)
|
||||
#Blender.Redraw(-1)
|
||||
SCENE.objects.selected = [i[0] for i in oblist] #select only the imported objects
|
||||
#SCENE.objects.selected = SCENE.objects #select all objects in current scene
|
||||
Blender.Redraw()
|
||||
|
||||
time_text = Blender.sys.time() - time2
|
||||
@@ -2929,7 +2979,7 @@ def main(dxfFile): #---------------#############################-----------
|
||||
settings.progress(1.0/settings.obj_number, 'DXF import done!')
|
||||
print message
|
||||
#settings.write(message)
|
||||
if UI_MODE: Draw.PupMenu('DXF importer: Done!|finished in %.4f sec.' % time_text)
|
||||
if UI_MODE: Draw.PupMenu('DXF importer: Done!|finished in %.4f sec.' % time_text)
|
||||
|
||||
finally:
|
||||
# restore state even if things didn't work
|
||||
@@ -3079,7 +3129,7 @@ def drawer(_type, entities, settings, block_def): #----------------------------
|
||||
|
||||
# filtering only objects on layers from acceptedLayersList
|
||||
if settings.var['layerFilter_on']:
|
||||
# entities = [entity for entity in entities if entity.layer[0] in ['M','3','0'] and not entity.layer.endswith('H')]
|
||||
# entities = [entity for entity in entities if entity.layer[0] in ['M','3','0'] and not entity.layer.endswith('H')]
|
||||
entities = [entity for entity in entities if entity.layer in settings.acceptedLayers]
|
||||
|
||||
# filtering only objects on not-frozen layers
|
||||
@@ -3114,7 +3164,7 @@ def drawer(_type, entities, settings, block_def): #----------------------------
|
||||
if settings.var['group_bylayer_on'] and not block_def:
|
||||
group = getGroup('l:%s' % entity.layer[:MAX_NAMELENGTH-2])
|
||||
|
||||
if _type == 'insert': #---- INSERT and MINSERT=array ------------------------
|
||||
if _type == 'insert': #---- INSERT and MINSERT=array ------------------------
|
||||
#print 'deb:insert entity.loc:', entity.loc #----------------
|
||||
columns = entity.columns[0]
|
||||
coldist = entity.columns[1]
|
||||
@@ -3241,22 +3291,22 @@ def setMaterial_from(entity, ob, settings, block_def): #-----------------------
|
||||
mat = settings.colMaterials(entity.color_index)
|
||||
elif settings.var['material_from'] == 2: # 2= material from layer
|
||||
mat = settings.layMaterials(entity.layer)
|
||||
# elif settings.var['material_from'] == 3: # 3= material from layer+color
|
||||
# mat = settings.layMaterials(entity.layer)
|
||||
# color = entity.color_index
|
||||
# if type(color) == int:
|
||||
# mat.setRGBCol(color_map[abs(color)])
|
||||
# elif settings.var['material_from'] == 4: # 4= material from block
|
||||
# elif settings.var['material_from'] == 5: # 5= material from INI-file
|
||||
else: # set neutral material
|
||||
# elif settings.var['material_from'] == 3: # 3= material from layer+color
|
||||
# mat = settings.layMaterials(entity.layer)
|
||||
# color = entity.color_index
|
||||
# if type(color) == int:
|
||||
# mat.setRGBCol(color_map[abs(color)])
|
||||
# elif settings.var['material_from'] == 4: # 4= material from block
|
||||
# elif settings.var['material_from'] == 5: # 5= material from INI-file
|
||||
else: # set neutral material
|
||||
try:
|
||||
mat = Material.Get('dxf-neutral')
|
||||
except:
|
||||
mat = Material.New('dxf-neutral')
|
||||
mat.mode |= Material.Modes.SHADELESS
|
||||
mat.mode |= Material.Modes.WIRE
|
||||
# try:mat.setMode('Shadeless', 'Wire') #work-around for 2.45rc1-bug
|
||||
# except: pass
|
||||
# try:mat.setMode('Shadeless', 'Wire') #work-around for 2.45rc1-bug
|
||||
# except: pass
|
||||
try:
|
||||
#print 'deb:material mat:', mat #-----------
|
||||
ob.setMaterials([mat]) #assigns Blender-material to object
|
||||
@@ -3369,7 +3419,7 @@ def drawArc(center, radius, start, end, arc_res): #----------------------------
|
||||
def drawCurveCircle(circle): #--- no more used --------------------------------------------
|
||||
"""Given a dxf circle object return a blender circle object using curves.
|
||||
"""
|
||||
c = Curve.New('circle') # create new curve data
|
||||
c = Curve.New('circle') # create new curve data
|
||||
center = circle.loc
|
||||
radius = circle.radius
|
||||
|
||||
@@ -3477,7 +3527,7 @@ g_scale_list = "scale factor: %t|x 1000 %x3|x 100 %x2|x 10 %x1|x 1 %x0|x 0.1 %x-
|
||||
|
||||
dxfFileName = Draw.Create("")
|
||||
iniFileName = Draw.Create(INIFILE_DEFAULT_NAME + INIFILE_EXTENSION)
|
||||
user_preset = 1
|
||||
user_preset = 0
|
||||
config_UI = Draw.Create(0) #switch_on/off extended config_UI
|
||||
|
||||
keywords_org = {
|
||||
@@ -3486,7 +3536,7 @@ keywords_org = {
|
||||
'one_mesh_on': 1,
|
||||
'vGroup_on' : 1,
|
||||
'dummy_on' : 0,
|
||||
'newScene_on' : 0,
|
||||
'newScene_on' : 1,
|
||||
'target_layer' : TARGET_LAYER,
|
||||
'group_bylayer_on' : GROUP_BYLAYER,
|
||||
'g_scale' : float(G_SCALE),
|
||||
@@ -3503,7 +3553,8 @@ keywords_org = {
|
||||
'dist_force': 0,
|
||||
'material_on': 1,
|
||||
'material_from': 2,
|
||||
'pl_3d' : 1,
|
||||
'pl_3d' : 1,
|
||||
'fill_on' : 1,
|
||||
'arc_res' : ARC_RESOLUTION,
|
||||
'arc_rad' : ARC_RADIUS,
|
||||
'thin_res' : THIN_RESOLUTION,
|
||||
@@ -3570,9 +3621,9 @@ def saveConfig(): #remi--todo-----------------------------------------------
|
||||
else:
|
||||
#if BPyMessages.Warning_SaveOver(iniFile): #<- remi find it too abstarct
|
||||
if sys.exists(iniFile):
|
||||
f = file(iniFile, 'r'); header_str = f.readline(); f.close()
|
||||
f = file(iniFile, 'r'); header_str = f.readline(); f.close()
|
||||
if header_str.startswith(INIFILE_HEADER[0:12]):
|
||||
if Draw.PupMenu(' OK ? %t|SAVE OVER: ' + '\'%s\'' %iniFile) == 1:
|
||||
if Draw.PupMenu(' OK ? %t|SAVE OVER: ' + '\'%s\'' %iniFile) == 1:
|
||||
save_ok = True
|
||||
elif Draw.PupMenu(' OK ? %t|SAVE OVER: ' + '\'%s\'' %iniFile +
|
||||
'|Alert: this file has no valid ImportDXF-format| ! it may belong to another aplication !') == 1:
|
||||
@@ -3656,6 +3707,28 @@ def resetDefaultConfig_2D(): #-----------------------------------------------
|
||||
"""
|
||||
resetDefaultConfig()
|
||||
global GUI_A, GUI_B
|
||||
keywords2d = {
|
||||
'curves_on' : 0,
|
||||
'one_mesh_on': 1,
|
||||
'vGroup_on' : 1,
|
||||
'thick_on' : 0,
|
||||
'thick_force': 0,
|
||||
'width_on' : 1,
|
||||
'width_force': 0,
|
||||
'dist_on' : 1,
|
||||
'dist_force': 0,
|
||||
'pl_3d' : 0,
|
||||
'fill_on' : 0,
|
||||
'pl_section_on': 1,
|
||||
'points_as' : 2,
|
||||
'lines_as' : 2,
|
||||
'mlines_as' : 2,
|
||||
'plines_as' : 2,
|
||||
'solids_as' : 1,
|
||||
'blocks_as' : 1,
|
||||
'texts_as' : 1
|
||||
}
|
||||
|
||||
drawTypes2d = {
|
||||
'point' : 1,
|
||||
'line' : 1,
|
||||
@@ -3676,27 +3749,6 @@ def resetDefaultConfig_2D(): #-----------------------------------------------
|
||||
'trace' : 1
|
||||
}
|
||||
|
||||
keywords2d = {
|
||||
'curves_on' : 0,
|
||||
'one_mesh_on': 1,
|
||||
'vGroup_on' : 1,
|
||||
'thick_on' : 0,
|
||||
'thick_force': 0,
|
||||
'width_on' : 1,
|
||||
'width_force': 0,
|
||||
'dist_on' : 1,
|
||||
'dist_force': 0,
|
||||
'pl_3d' : 0,
|
||||
'pl_section_on': 1,
|
||||
'points_as' : 2,
|
||||
'lines_as' : 2,
|
||||
'mlines_as' : 2,
|
||||
'plines_as' : 2,
|
||||
'solids_as' : 1,
|
||||
'blocks_as' : 1,
|
||||
'texts_as' : 1
|
||||
}
|
||||
|
||||
for k, v in keywords2d.iteritems():
|
||||
GUI_A[k].val = v
|
||||
for k, v in drawTypes2d.iteritems():
|
||||
@@ -3721,7 +3773,7 @@ def draw_UI(): #---------------------------------------------------------------
|
||||
|
||||
simple_menu_h = 110
|
||||
extend_menu_h = 380
|
||||
y = simple_menu_h # y is menu upper.y
|
||||
y = simple_menu_h # y is menu upper.y
|
||||
if config_UI.val: y += extend_menu_h
|
||||
x = 20 #menu left.x
|
||||
but0c = x + menu_margin #buttons 0.column position.x
|
||||
@@ -3734,7 +3786,7 @@ def draw_UI(): #---------------------------------------------------------------
|
||||
#glRasterPos2d(8, 125)
|
||||
|
||||
colorbox(x, y+20, x+menu_w+menu_margin*2, menu_margin)
|
||||
Draw.Label("ImportDXF-3D v" + __version__, but0c, y, menu_w, 20)
|
||||
Draw.Label("DXF Importer ver." + __version__, but0c, y, menu_w, 20)
|
||||
|
||||
if config_UI.val:
|
||||
y -= 30
|
||||
@@ -3843,9 +3895,10 @@ def draw_UI(): #---------------------------------------------------------------
|
||||
|
||||
y -= 20
|
||||
Draw.BeginAlign()
|
||||
# GUI_A['thin_res'] = Draw.Number('thin:', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['thin_res'].val, 4, 500, "thin cylinder resolution - number of segments")
|
||||
GUI_A['arc_rad'] = Draw.Number('rad:', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['arc_rad'].val, 0.01, 100, "basis radius for number of segments")
|
||||
GUI_A['arc_res'] = Draw.Number('res:', EVENT_NONE, but1c, y, but_1c, 20, GUI_A['arc_res'].val, 4, 500, "arc/circle resolution - number of segments")
|
||||
# GUI_A['thin_res'] = Draw.Number('thin:', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['thin_res'].val, 4, 500, "thin cylinder resolution - number of segments")
|
||||
GUI_A['arc_rad'] = Draw.Number('radi:', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['arc_rad'].val, 0.01, 100, "basis radius for arc/circle resolution")
|
||||
GUI_A['arc_res'] = Draw.Number('res:', EVENT_NONE, but1c, y, but_1c-25, 20, GUI_A['arc_res'].val, 4, 500, "arc/circle resolution - number of segments")
|
||||
GUI_A['fill_on'] = Draw.Toggle('cap', EVENT_NONE, but1c+but_1c-25, y, 25, 20, GUI_A['fill_on'].val, "draws top and bottom caps of CYLINDERs on/off")
|
||||
Draw.EndAlign()
|
||||
Draw.BeginAlign()
|
||||
GUI_A['width_on'] = Draw.Toggle('width:', EVENT_NONE, but2c, y, but_2c-20, 20, GUI_A['width_on'].val, "support width on/off")
|
||||
@@ -3854,7 +3907,7 @@ def draw_UI(): #---------------------------------------------------------------
|
||||
Draw.EndAlign()
|
||||
|
||||
y -= 30
|
||||
GUI_A['dummy_on'] = Draw.Toggle(' - ', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['dummy_on'].val, "reserved")
|
||||
#GUI_A['dummy_on'] = Draw.Toggle(' - ', EVENT_NONE, but0c, y, but_0c, 20, GUI_A['dummy_on'].val, "reserved")
|
||||
GUI_A['newScene_on'] = Draw.Toggle('newScene', EVENT_NONE, but1c, y, but_1c, 20, GUI_A['newScene_on'].val, "creates new Blender-Scene for each import on/off")
|
||||
GUI_A['target_layer'] = Draw.Number('layer', EVENT_NONE, but2c, y, but_2c, 20, GUI_A['target_layer'].val, 1, 18, "imports into this Blender-layer (<19> reserved for block_definitions)")
|
||||
GUI_A['optimization'] = Draw.Number('optim:', EVENT_NONE, but3c, y, but_3c, 20, GUI_A['optimization'].val, 0, 3, "Optimization Level: 0=Debug/directDrawing, 1=Verbose, 2=ProgressBar, 3=silentMode/fastest")
|
||||
@@ -3867,10 +3920,10 @@ def draw_UI(): #---------------------------------------------------------------
|
||||
|
||||
y -= 20
|
||||
Draw.BeginAlign()
|
||||
Draw.PushButton('Presets', EVENT_PRESETS, but0c, y, but_0c, 20, "calls the names of Preset-INI-files")
|
||||
Draw.PushButton('Load', EVENT_LOAD_INI, but1c, y, but_1c, 20, ' Loads configuration from ini-file: %s' % iniFileName.val)
|
||||
Draw.PushButton('Presets', EVENT_PRESETS, but0c, y, but_0c, 20, "tipist for Preset-INI-files")
|
||||
Draw.PushButton('Load', EVENT_LOAD_INI, but1c, y, but_1c, 20, ' Loads configuration from ini-file: %s' % iniFileName.val)
|
||||
Draw.PushButton('Save', EVENT_SAVE_INI, but2c, y, but_2c, 20, 'Saves configuration to ini-file: %s' % iniFileName.val)
|
||||
# user_preset = Draw.Number('preset:', EVENT_PRESETS, but2c, y, but_2c, 20, user_preset.val, 0, 5, "call user Preset-INI-files")
|
||||
# user_preset = Draw.Number('preset:', EVENT_PRESETS, but2c, y, but_2c, 20, user_preset.val, 0, 5, "call user Preset-INI-files")
|
||||
Draw.PushButton('2D', EVENT_PRESET2D, but3c, y, but_3c/2, 20, 'resets configuration to 2D-defaults')
|
||||
Draw.PushButton('3D', EVENT_PRESET, but3c+but_3c/2, y, but_3c/2, 20, 'resets configuration to 3D-defaults')
|
||||
Draw.EndAlign()
|
||||
@@ -3919,7 +3972,7 @@ def event(evt, val):
|
||||
Blender.Draw.Exit()
|
||||
|
||||
def bevent(evt):
|
||||
# global EVENT_NONE,EVENT_LOAD_DXF,EVENT_LOAD_INI,EVENT_SAVE_INI,EVENT_EXIT
|
||||
# global EVENT_NONE,EVENT_LOAD_DXF,EVENT_LOAD_INI,EVENT_SAVE_INI,EVENT_EXIT
|
||||
global config_UI, user_preset
|
||||
|
||||
######### Manages GUI events
|
||||
@@ -3945,7 +3998,7 @@ def bevent(evt):
|
||||
import webbrowser
|
||||
webbrowser.open('http://wiki.blender.org/index.php?title=Scripts/Manual/Import/DXF-3D')
|
||||
except:
|
||||
Draw.PupMenu('DXF importer: HELP Alert!%t|no connection to manual-page on Blender-Wiki! try:|\
|
||||
Draw.PupMenu('DXF importer: HELP Alert!%t|no connection to manual-page on Blender-Wiki! try:|\
|
||||
http://wiki.blender.org/index.php?title=Scripts/Manual/Import/DXF-3D')
|
||||
Draw.Redraw()
|
||||
elif (evt==EVENT_LOAD_INI):
|
||||
@@ -3971,7 +4024,7 @@ http://wiki.blender.org/index.php?title=Scripts/Manual/Import/DXF-3D')
|
||||
dxfFile = dxfFileName.val
|
||||
#print 'deb: dxfFile file: ', dxfFile #----------------------
|
||||
if dxfFile.lower().endswith('*.dxf'):
|
||||
if Draw.PupMenu('DXF importer: OK?|will import all DXF-files from:|%s' % dxfFile) == 1:
|
||||
if Draw.PupMenu('DXF importer: OK?|will import all DXF-files from:|%s' % dxfFile) == 1:
|
||||
global UI_MODE
|
||||
UI_MODE = False
|
||||
multi_import(dxfFile[:-5]) # cut last char:'*.dxf'
|
||||
@@ -3983,16 +4036,22 @@ http://wiki.blender.org/index.php?title=Scripts/Manual/Import/DXF-3D')
|
||||
_dxf_file = dxfFile.split('/')[-1].split('\\')[-1]
|
||||
_dxf_file = _dxf_file[:-4] # cut last char:'.dxf'
|
||||
_dxf_file = _dxf_file[:MAX_NAMELENGTH] #? [-MAX_NAMELENGTH:])
|
||||
#sce = Blender.Scene.New(_dxf_file)
|
||||
#sce.makeCurrent()
|
||||
global SCENE
|
||||
SCENE = Blender.Scene.New(_dxf_file)
|
||||
SCENE.makeCurrent()
|
||||
#or so? Blender.Scene.makeCurrent(_dxf_file)
|
||||
sce = bpy.data.scenes.new(_dxf_file)
|
||||
bpy.data.scenes.active = sce
|
||||
#sce = bpy.data.scenes.new(_dxf_file)
|
||||
#bpy.data.scenes.active = sce
|
||||
else:
|
||||
SCENE = Blender.Scene.GetCurrent()
|
||||
SCENE.objects.selected = [] # deselect all
|
||||
main(dxfFile)
|
||||
#Blender.Draw.Exit()
|
||||
Draw.Redraw()
|
||||
#SCENE.objects.selected = SCENE.objects
|
||||
#Window.RedrawAll()
|
||||
#Blender.Redraw()
|
||||
#Draw.Redraw()
|
||||
else:
|
||||
Draw.PupMenu('DXF importer: Alert!%t|no valid DXF-file selected!')
|
||||
Draw.PupMenu('DXF importer: Alert!%t|no valid DXF-file selected!')
|
||||
print "DXF importer: error, no valid DXF-file selected! try again"
|
||||
Draw.Redraw()
|
||||
|
||||
@@ -4003,6 +4062,7 @@ def multi_import(DIR):
|
||||
"""Imports all DXF-files from directory DIR.
|
||||
|
||||
"""
|
||||
global SCENE
|
||||
batchTIME = Blender.sys.time()
|
||||
#if #DIR == "": DIR = os.path.curdir
|
||||
if DIR == "": DIR = Blender.sys.dirname(Blender.Get('filename'))
|
||||
@@ -4021,12 +4081,16 @@ def multi_import(DIR):
|
||||
_dxf_file = dxfFile.split('/')[-1].split('\\')[-1]
|
||||
_dxf_file = _dxf_file[:-4] # cut last char:'.dxf'
|
||||
_dxf_file = _dxf_file[:MAX_NAMELENGTH] #? [-MAX_NAMELENGTH:])
|
||||
#sce = Blender.Scene.New(_dxf_file)
|
||||
#sce.makeCurrent()
|
||||
SCENE = Blender.Scene.New(_dxf_file)
|
||||
SCENE.makeCurrent()
|
||||
#or so? Blender.Scene.makeCurrent(_dxf_file)
|
||||
sce = bpy.data.scenes.new(_dxf_file)
|
||||
bpy.data.scenes.active = sce
|
||||
#sce = bpy.data.scenes.new(_dxf_file)
|
||||
#bpy.data.scenes.active = sce
|
||||
else:
|
||||
SCENE = Blender.Scene.GetCurrent()
|
||||
SCENE.objects.selected = [] # deselect all
|
||||
main(dxfFile)
|
||||
#Blender.Redraw()
|
||||
|
||||
print 'TOTAL TIME: %.6f' % (Blender.sys.time() - batchTIME)
|
||||
|
||||
@@ -4072,4 +4136,4 @@ if 1:
|
||||
main(_dxf)
|
||||
|
||||
print 'TOTAL TIME: %.6f' % (Blender.sys.time() - TIME)
|
||||
"""
|
||||
"""
|
||||
Reference in New Issue
Block a user