[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20639] branches/bb_dev: svn merge -r 20607:20638 https://svn.blender.org/svnroot/bf-blender/trunk/ blender

Benoit Bolsee benoit.bolsee at online.be
Thu Jun 4 23:55:02 CEST 2009


Revision: 20639
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20639
Author:   ben2610
Date:     2009-06-04 23:55:02 +0200 (Thu, 04 Jun 2009)

Log Message:
-----------
svn merge -r 20607:20638 https://svn.blender.org/svnroot/bf-blender/trunk/blender

Modified Paths:
--------------
    branches/bb_dev/release/Makefile
    branches/bb_dev/release/scripts/bpymodules/dxfLibrary.py
    branches/bb_dev/release/scripts/export_dxf.py
    branches/bb_dev/release/scripts/import_dxf.py
    branches/bb_dev/release/scripts/scripttemplate_gamelogic.py
    branches/bb_dev/source/blender/src/buttons_editing.c
    branches/bb_dev/source/blender/src/buttons_logic.c
    branches/bb_dev/source/blender/src/hddaudio.c
    branches/bb_dev/source/gameengine/Converter/BL_MeshDeformer.cpp
    branches/bb_dev/source/gameengine/GameLogic/SCA_JoystickSensor.cpp

Modified: branches/bb_dev/release/Makefile
===================================================================
--- branches/bb_dev/release/Makefile	2009-06-04 21:24:41 UTC (rev 20638)
+++ branches/bb_dev/release/Makefile	2009-06-04 21:55:02 UTC (rev 20639)
@@ -176,7 +176,7 @@
       else
 	@strip -x $(DISTDIR)/blender$(EXT0)
 	@if [ -f $(DISTDIR)/blenderplayer$(EXTO) ]; then \
-           strip -x $(DISTDIR)/blender$(EXT0) ; \
+           strip -x $(DISTDIR)/blenderplayer$(EXT0) ; \
 	fi
       endif
     endif

Modified: branches/bb_dev/release/scripts/bpymodules/dxfLibrary.py
===================================================================
--- branches/bb_dev/release/scripts/bpymodules/dxfLibrary.py	2009-06-04 21:24:41 UTC (rev 20638)
+++ branches/bb_dev/release/scripts/bpymodules/dxfLibrary.py	2009-06-04 21:55:02 UTC (rev 20639)
@@ -1,6 +1,6 @@
 #dxfLibrary.py : provides functions for generating DXF files
 # --------------------------------------------------------------------------
-__version__ = "v1.30 - 2009.05.28"
+__version__ = "v1.31 - 2009.06.02"
 __author__ = "Stani Michiels(Stani), Remigiusz Fiedler(migius)"
 __license__ = "GPL"
 __url__ = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
@@ -18,28 +18,30 @@
 -
 
 TODO:
-- add support for DXFr14 (new file header)
-- add support for SPLINEs, although it is DXFr14 object
+- add support for DXFr14 (needs extended file header)
+- add support for SPLINEs (possible first in DXFr14 version)
 
 History
+v1.31 - 2009.06.02 by migius
+ - modif _Entity class: added paperspace,elevation
 v1.30 - 2009.05.28 by migius
-- bugfix 3dPOLYLINE/POLYFACE: VERTEX needs x,y,z coordinates, index starts with 1 not 0
+ - bugfix 3dPOLYLINE/POLYFACE: VERTEX needs x,y,z coordinates, index starts with 1 not 0
 v1.29 - 2008.12.28 by Yorik
-- modif POLYLINE to support bulge segments
+ - modif POLYLINE to support bulge segments
 v1.28 - 2008.12.13 by Steeve/BlenderArtists
-- bugfix for EXTMIN/EXTMAX to suit Cycas-CAD
+ - bugfix for EXTMIN/EXTMAX to suit Cycas-CAD
 v1.27 - 2008.10.07 by migius
-- beautifying output code: keys whitespace prefix
-- refactoring DXF-strings format: NewLine moved to the end of
+ - beautifying output code: keys whitespace prefix
+ - refactoring DXF-strings format: NewLine moved to the end of
 v1.26 - 2008.10.05 by migius
-- modif POLYLINE to support POLYFACE
+ - modif POLYLINE to support POLYFACE
 v1.25 - 2008.09.28 by migius
-- modif FACE class for r12
+ - modif FACE class for r12
 v1.24 - 2008.09.27 by migius
-- modif POLYLINE class for r12
-- changing output format from r9 to r12(AC1009)
+ - modif POLYLINE class for r12
+ - changing output format from r9 to r12(AC1009)
 v1.1 (20/6/2005) by www.stani.be/python/sdxf
-- Python library to generate dxf drawings
+ - Python library to generate dxf drawings
 ______________________________________________________________
 """ % (__author__,__version__,__license__,__url__)
 
@@ -106,17 +108,21 @@
 #-------------------------------------------------------
 class _Entity(_Call):
 	"""Base class for _common group codes for entities."""
-	def __init__(self,color=None,extrusion=None,layer='0',
+	def __init__(self,paperspace=None,color=None,layer='0',
 				 lineType=None,lineTypeScale=None,lineWeight=None,
-				 thickness=None,parent=None):
+				 extrusion=None,elevation=None,thickness=None,
+				 parent=None):
 		"""None values will be omitted."""
+		self.paperspace	  = paperspace
 		self.color		  = color
-		self.extrusion	  = extrusion
 		self.layer		  = layer
 		self.lineType	   = lineType
 		self.lineTypeScale  = lineTypeScale
 		self.lineWeight	 = lineWeight
+		self.extrusion	  = extrusion
+		self.elevation	  = elevation
 		self.thickness	  = thickness
+		#self.visible	  = visible
 		self.parent		 = parent
 
 	def _common(self):
@@ -124,13 +130,16 @@
 		if self.parent:parent=self.parent
 		else:parent=self
 		result =''
+		if parent.paperspace==1: result+='  67\n1\n'
 		if parent.layer!=None: result+='  8\n%s\n'%parent.layer
 		if parent.color!=None: result+=' 62\n%s\n'%parent.color
-		if parent.extrusion!=None: result+='%s\n'%_point(parent.extrusion,200)
 		if parent.lineType!=None: result+='  6\n%s\n'%parent.lineType
 		#TODO: if parent.lineWeight!=None: result+='370\n%s\n'%parent.lineWeight
+		#TODO: if parent.visible!=None: result+='60\n%s\n'%parent.visible
 		if parent.lineTypeScale!=None: result+=' 48\n%s\n'%parent.lineTypeScale
+		if parent.elevation!=None: result+=' 38\n%s\n'%parent.elevation
 		if parent.thickness!=None: result+=' 39\n%s\n'%parent.thickness
+		if parent.extrusion!=None: result+='%s\n'%_point(parent.extrusion,200)
 		return result
 
 #--------------------------

Modified: branches/bb_dev/release/scripts/export_dxf.py
===================================================================
--- branches/bb_dev/release/scripts/export_dxf.py	2009-06-04 21:24:41 UTC (rev 20638)
+++ branches/bb_dev/release/scripts/export_dxf.py	2009-06-04 21:55:02 UTC (rev 20639)
@@ -7,7 +7,7 @@
  Tooltip: 'Export geometry to DXF/DWG-r12 (Drawing eXchange Format).'
 """
 
-__version__ = "1.34 - 2009.05.28"
+__version__ = "1.34 - 2009.06.02"
 __author__  = "Remigiusz Fiedler (AKA migius)"
 __license__ = "GPL"
 __url__  = "http://wiki.blender.org/index.php/Scripts/Manual/Export/autodesk_dxf"
@@ -28,25 +28,27 @@
 url: %s
 
 IDEAs:
-- correct normals for POLYLINE-POLYFACE via proper vertex-order
 - HPGL output, especially usefull for correct scaled printing of 2d drawings
 		
 TODO:
-- export dupligroups and dupliverts as blocks ( option for the user to decide ) 
+- export dupligroups and dupliverts as blocks (option for the user to decide) 
 - optimize POLYFACE routine: remove double-vertices
-- optimize POLYFACE routine: remove unused vertices
+- optimize POLYFACE routine: remove loose vertices
+- support any-oriented mirrored curves(to POLYLINEs): fix blender negative-matrix.invert()
 - support hierarchies: groups, instances, parented structures
-- support 210-code (3d orientation vector)
 - write drawing extends for automatic view positioning in CAD
-- support mapping: materials to DXF-styles
+- mapping materials to DXF-styles
 
 History
-v1.34 - 2009.05.28 by migius
-- bugfix POLYFACE export, synchronized with dxfLibrary.py
+v1.34 - 2009.06.02 by migius
+- support XYmirrored 2d-curves to POLYLINEs: works correct only for rotX,rotY==0.0
+- support thickness and elevation for curve-objects
+- fix extrusion 210-code (3d orientation vector)
+- fix POLYFACE export, synchronized with dxfLibrary.py
 - changed to the new 2.49 method Vector.cross()
 - output style manager (first try)
 v1.33 - 2009.05.25 by migius
-- bugfix flipping normals in mirrored objects
+- bugfix flipping normals in mirrored mesh-objects
 - added UI-Button for future Shadow Generator
 - support curve objects in projection-2d mode
 - UI stuff: camera selector/manager
@@ -122,7 +124,7 @@
 
 import Blender
 from Blender import Mathutils, Window, Scene, Draw, Camera, BezTriple
-from Blender import Registry, Object, Mesh
+from Blender import Registry, Object, Mesh, Curve
 import os
 import subprocess
 
@@ -132,10 +134,11 @@
 #from dxfLibrary import *
 
 import math
-from math import atan, log10
+from math import atan, atan2, log10, sin, cos
 
 #pi = math.pi
 #pi = 3.14159265359
+r2d = 180.0 / math.pi
 d2r = math.pi / 180.0
 #note: d2r * angle == math.radians(angle)
 
@@ -392,29 +395,75 @@
 	#print 'deb: flatten points=', points #---------
 	return points
 
+#---- migration to 2.49-------------------------------------------------
+if 'cross' in dir(Mathutils.Vector()):
+	#Draw.PupMenu('DXF exporter: Abort%t|This script version works for Blender up 2.49 only!')
+	def	M_CrossVecs(v1,v2):
+		return v1.cross(v2) #for up2.49
+	def M_DotVecs(v1,v2):
+		return v1.dot(v2) #for up2.49
+else:
+	def	M_CrossVecs(v1,v2):
+		return Mathutils.CrossVecs(v1,v2) #for pre2.49
+	def M_DotVecs(v1,v2):
+		return Mathutils.DotVecs(v1,v2) #for pre2.49
+	
 
 #-----------------------------------------------------
 def	getExtrusion(matrix):
-	
-	print 'deb:getExtrusion() matrix=\n', matrix #---------
-	ma = matrix.copy().normalize()
-	AZaxis = ma[2] # = ArbitraryZvector
-	ArbitraryZaxis = [AZaxis[0],AZaxis[1],AZaxis[2]]
-	threshold = 1.0 / 64.0
-	if abs(Zaxis[0]) < threshold or abs(Zaxis[1]) < threshold:
-		#AXaxis = Mathutils.CrossVecs(WORLDY,AZaxis) #for<2.49
-		AXaxis = WORLDY.cross(AZaxis)
+	#print 'deb:getExtrusion()  given matrix=\n', matrix #---------
+	AZaxis = matrix[2].copy().resize3D().normalize() # = ArbitraryZvector
+	Extrusion = [AZaxis[0],AZaxis[1],AZaxis[2]]
+	if AZaxis[2]==1.0:
+		Extrusion = None
+		AXaxis = matrix[0].copy().resize3D() # = ArbitraryZvector
 	else:
-		#AXaxis = Mathutils.CrossVecs(WORLDZ,AZaxis) #for<2.49
-		AXaxis = WORLDZ.cross(AZaxis)
-	
-	Rotation = Mathutils.AngleBetweenVecs(WORLDX,AXaxis) #output in degrees
-	Elevation = 1.0
-	
-	return ArbitraryZaxis, Rotation, Elevation
+		threshold = 1.0 / 64.0
+		if abs(AZaxis[0]) < threshold or abs(AZaxis[1]) < threshold:
+			# AXaxis is the intersection WorldPlane and ExtrusionPlane
+			AXaxis = M_CrossVecs(WORLDY,AZaxis)
+		else:
+			AXaxis = M_CrossVecs(WORLDZ,AZaxis)
 
+	#print 'deb:\n' #-------------
+	#print 'deb:getExtrusion()  Extrusion=', Extrusion #---------
+	return Extrusion, AXaxis.normalize() 
 
 #-----------------------------------------------------
+def	getZRotation(AXaxis, rot_matrix_invert):
+	#ZRotation = Mathutils.AngleBetweenVecs(WORLDX,AXaxis) #output in degrees
+
+	# this works: Xaxis is the obj.matrix Xaxis vector
+	#Xaxis = matrix[0].copy().resize3D() # = ArbitraryXvector
+	##Xaxis.normalize() # = ArbitraryXvector
+	#ZRotation = - d2r * Mathutils.AngleBetweenVecs(Xaxis,AXaxis) #output in degrees
+
+	# this works too, maybe faster
+	# transform AXaxis into OCS:Object-Coord-System 
+	#rot_matrix = normalizeMat(matrix.rotationPart())
+	#rot_matrix_invert = rot_matrix.invert()
+	vec = AXaxis * rot_matrix_invert
+	##vec = AXaxis * matrix.copy().invert()
+	##vec.normalize() # not needed for atan2()
+	##print '\ndeb:getExtrusion()  vec=', vec #---------
+	ZRotation = - atan2(vec[1],vec[0]) #output in radians
+
+	#print 'deb:ZRotation()  ZRotation=', ZRotation*r2d #---------
+	return ZRotation
+
+
+#------------------------------------------
+def normalizeMat(matrix):
+	mat12 = matrix.copy()
+	mat12 = [Mathutils.Vector(v).normalize() for v in mat12]
+	if len(mat12)>3:
+		matr12 = Mathutils.Matrix(mat12[0],mat12[1],mat12[2],mat12[3])
+	else:

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list