[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1354] == dxf import ==

Luca Bonavita mindrones at gmail.com
Wed Jan 5 14:48:41 CET 2011


Revision: 1354
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=1354
Author:   mindrones
Date:     2011-01-05 14:48:41 +0100 (Wed, 05 Jan 2011)

Log Message:
-----------
== dxf import ==

- removed the version in contrib, has been left by mistake
- formatted the version in trunk to have the main docstring after bl_addon_info
- formatted bl_addon_info itself

Modified Paths:
--------------
    trunk/py/scripts/addons/io_import_scene_dxf.py

Removed Paths:
-------------
    contrib/py/scripts/addons/io_import_scene_dxf.py

Deleted: contrib/py/scripts/addons/io_import_scene_dxf.py
===================================================================
--- contrib/py/scripts/addons/io_import_scene_dxf.py	2011-01-05 13:24:05 UTC (rev 1353)
+++ contrib/py/scripts/addons/io_import_scene_dxf.py	2011-01-05 13:48:41 UTC (rev 1354)
@@ -1,2506 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-#  This program is free software; you can redistribute it and/or
-#  modify it under the terms of the GNU General Public License
-#  as published by the Free Software Foundation; either version 2
-#  of the License, or (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program; if not, write to the Free Software Foundation,
-#  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-"""
-Release note by migius (DXF support maintainer) 2011.01.02:
-Script supports only a small part of DXF specification:
-- imports LINE, ARC, CIRCLE, ELLIPSE, SOLID, TRACE, POLYLINE, LWPOLYLINE
-- imports TEXT, MTEXT
-- supports 3d-rotation of entities (210 group)
-- supports THICKNESS for SOLID, TRACE, LINE, ARC, CIRCLE, ELLIPSE
-- ignores WIDTH, THICKNESS, BULGE in POLYLINE/LWPOLYLINE
-- ignores face-data in POLYFACE / POLYMESH
-- ignores TEXT 2d-rotation
-- ignores hierarchies (BLOCK, INSERT, GROUP)
-- ignores LAYER
-- ignores COLOR, LINEWIDTH, LINESTYLE
-
-This script is a temporary solution.
-Probably no more improvements will be done to this script.
-The full-feature importer script from 2.49 will be back in 2.6 release.
-
-Installation:
-Place this file to Blender addons directory (on Windows it is %Blender_directory%\2.53\scripts\addons\)
-You must activate the script in the "Add-Ons" tab (user preferences).
-Access it from File > Import menu.
-
-History:
-ver 0.1.3 - 2011.01.02 by migius
-- added draw curves as sequence for "Draw_as_Curve"
-- added toggle "Draw as one" as user preset in UI
-- added draw POINT as mesh-vertex
-- added draw_THICKNESS for LINE, ARC, CIRCLE, ELLIPSE, LWPOLYLINE and POLYLINE
-- added draw_THICKNESS for SOLID, TRACE
-ver 0.1.2 - 2010.12.27 by migius
-- added draw() for TRACE
-- fixed wrong vertex order in SOLID
-- added CIRCLE resolution as user preset in UI
-- added closing segment for circular LWPOLYLINE and POLYLINE
-- fixed registering for 2.55beta
-ver 0.1.1 - 2010.09.07 by migius
-- fixed dxf-file names recognition limited to ".dxf"
-- fixed registering for 2.53beta
-ver 0.1 - 2010.06.10 by Thomas Larsson
-"""
-
-bl_addon_info = {
-    'name': 'Import Autocad DXF (.dxf)',
-    'author': 'Thomas Larsson',
-    'version': (0,1,3),
-    'blender': (2, 5, 6),
-    'api': 32738,
-    'location': 'File > Import',
-    'description': 'Import files in the Autocad DXF format (.dxf)',
-    'warning': 'supporting only a sub-set of DXF specification',
-    'wiki_url': 'http://wiki.blender.org/index.php/Extensions:2.5/Py/Scripts/Import-Export/DXF_Importer',
-    'tracker_url': 'https://projects.blender.org/tracker/index.php?func=detail&aid=23480&group_id=153&atid=468',
-    'category': 'Import-Export'}
-
-__version__ = '.'.join([str(s) for s in bl_addon_info['version']])
-
-import os
-import codecs
-import math
-from math import sin, cos, radians
-import bpy
-import mathutils
-from mathutils import Vector, Matrix
-
-#
-#    Global flags
-#
-
-T_Merge = 0x01
-T_NewScene = 0x02
-T_Curves = 0x04
-T_DrawOne = 0x08
-T_Debug = 0x10
-T_Verbose = 0x20
-T_ThicON = 0x40
-
-toggle = T_Merge | T_NewScene | T_DrawOne | T_ThicON
-theCircleRes = 32
-theMergeLimit = 1e-5
-
-#
-#    class CSection:
-#
-
-class CSection:
-    type = None
-
-    def __init__(self):
-        self.data = []
-
-    def display(self):
-        print("Section", self.type)
-        for datum in self.data:
-            datum.display()
-
-#
-#    class CTable:
-#
-
-class CTable:
-    def __init__(self):
-        self.type = None
-        self.name = None
-        self.handle = None
-        self.owner = None
-        self.subclass = None
-        self.nEntries = 0
-    def display(self):
-        print("Table %s %s %s %s %s %d" % (self.type, self.name, self.handle, self.owner, self.subclass, self.nEntries))
-
-#
-#    class CEntity:
-#
-class CEntity:
-    def __init__(self, typ, drawtype):
-        self.type = typ
-        self.drawtype = drawtype
-        self.handle = None
-        self.owner = None
-        self.subclass = None
-        self.layer = 0
-        self.color = 0
-        self.invisible = 0
-        self.linetype_name = ''
-        self.linetype_scale = 1.0
-        self.paperspace = 0
-        #self.normal = Vector((0,0,1))
-
-    def display(self):
-        print("Entity %s %s %s %s %s %s %x" % 
-            (self.type, self.handle, self.owner, self.subclass, self.layer, self.color, self.invisible))
-
-    def build(self, vn=0):
-        global toggle
-        if toggle & T_Debug:
-            raise NameError("Warning: can not build - unsupported entity type: %s" % self.type)
-        return(([], [], [], vn)) 
-
-    def draw(self):
-        global toggle
-        if toggle & T_Debug:
-            raise NameError("Warning: can not draw - unsupported entity type: %s" % self.type)
-        return
-
-
-DxfCommonAttributes = {
-    5 : 'handle',
-    6 : 'linetype_name',
-    8 : 'layer',
-    48 : 'linetype_scale',
-    60 : 'invisible',
-    62 : 'color',
-    67 : 'paperspace',
-    100 : 'subclass',
-    330 : 'owner',
-    360 : 'owner',
-}
-
-#
-#    class C3dFace(CEntity):
-#    10 : 'point0.x', 20 : 'point0.y', 30 : 'point0.z', 
-#    11 : 'point1.x', 21 : 'point1.y', 31 : 'point1.z', 
-#    12 : 'point2.x', 22 : 'point2.y', 32 : 'point2.z', 
-#    13 : 'point3.x', 23 : 'point3.y', 33 : 'point3.z', 
-#    70 : 'flags',
-#
-
-class C3dFace(CEntity):
-    def __init__(self):
-        CEntity.__init__(self, '3DFACE', 'Mesh')
-        self.point0 = Vector()
-        self.point1 = Vector()
-        self.point2 = Vector()
-        self.point3 = Vector()
-
-    def display(self):
-        CEntity.display(self)
-        print(self.point0)
-        print(self.point1)
-        print(self.point2)
-        print(self.point3)
-
-    def build(self, vn=0):
-        verts = [self.point0, self.point1, self.point2]
-        if self.point3 == Vector((0,0,0)) or self.point2 == self.point3:
-            faces = [(vn+0, vn+1, vn+2)]
-            vn += 3
-        else:
-            verts.append( self.point3 )
-            faces = [(vn+0, vn+1, vn+2, vn+3)]
-            vn += 4            
-        return((verts, [], faces, vn))
-
-#
-#    class C3dSolid(CEntity):
-#    1 : 'data', 3 : 'more', 70 : 'version',
-#
-
-class C3dSolid(CEntity):
-    def __init__(self):
-        CEntity.__init__(self, '3DSOLID', 'Mesh')
-        self.data = None
-        self.more = None
-        self.version = 0
-
-#
-#    class CAcadProxyEntity(CEntity):
-#    70 : 'format',
-#    90 : 'id', 91 : 'class', 92 : 'graphics_size', 93 : 'entity_size', 95: 'format',
-#    310 : 'data', 330 : 'id1', 340 : 'id2', 350 : 'id3', 360 : 'id4', 
-#
-
-class CAcadProxyEntity(CEntity):
-    def __init__(self):
-        CEntity.__init__(self, 'ACAD_PROXY_ENTITY', None)
-
-
-#
-#    class CArc(CEntity):
-#    10 : 'center.x', 20 : 'center.y', 30 : 'center.z', 
-#    40 : 'radius',
-#    50 : 'start_angle', 51 : 'end_angle'
-#
-
-class CArc(CEntity):
-    def __init__(self):
-        CEntity.__init__(self, 'ARC', 'Mesh')
-        self.center = Vector()
-        self.radius = 0.0
-        self.start_angle = 0.0
-        self.end_angle = 0.0
-        self.thickness = 0.0
-        self.normal = Vector((0,0,1))
-        
-    def display(self):
-        CEntity.display(self)
-        print(self.center)
-        print("%.4f %.4f %.4f " % (self.radius, self.start_angle, self.end_angle))
-
-    def build(self, vn=0):
-        start, end = self.start_angle, self.end_angle
-        if end > 360: end = end % 360.0
-        if end < start: end +=360.0
-        angle = end - start
-
-        deg2rad = math.pi/180.0
-        start *= deg2rad
-        end *= deg2rad
-        dphi = end - start
-        phi0 = start
-        w = dphi/theCircleRes
-        r = self.radius
-        center = self.center
-        v0 = vn
-        points = []
-        edges, faces = [], []
-        for n in range(theCircleRes):
-            s = math.sin(n*w + phi0)
-            c = math.cos(n*w + phi0)
-            v = center + Vector((r*c, r*s, 0.0))
-            points.append(v)
-        pn = len(points)
-        thic = self.thickness
-        t_vector = Vector((0, 0, thic))
-        if thic != 0 and (toggle & T_ThicON):
-            thic_points = [v + t_vector for v in points]
-            if thic < 0.0:
-                thic_points.extend(points)
-                points = thic_points
-            else:
-                points.extend(thic_points)
-            faces = [(v0+nr+0,v0+nr+1,v0+pn+nr+1,v0+pn+nr+0) for nr in range(pn)]
-            faces.pop()
-            self.drawtype = 'Mesh'
-            vn += 2*pn
-        else:
-            edges = [(v0+nr+0,v0+nr+1) for nr in range(pn)]
-            edges.pop()
-            vn += pn
-
-        if self.normal!=Vector((0,0,1)):
-            ma = getOCS(self.normal)
-            if ma:
-                #ma.invert()
-                points = [v * ma for v in points]
-        #print ('arc vn=', vn)
-        #print ('faces=', len(faces))
-        return ((points, edges, faces, vn))
-
-#
-#    class CArcAlignedText(CEntity):
-#    1 : 'text', 2 : 'font', 3 : 'bigfont', 7 : 'style',
-#    10 : 'center.x', 20 : 'center.y', 30 : 'center.z', 
-#    40 : 'radius', 41 : 'width', 42 : 'height', 43 : 'spacing', 
-#    44 : 'offset', 45 : 'right_offset', 46 : 'left_offset', 
-#    50 : 'start_angle', 51 : 'end_angle',
-#    70 : 'order', 71 : 'direction', 72 : 'alignment', 73 : 'side', 
-#    74 : 'bold', 75 : 'italic', 76 : 'underline',
-#    77 : 'character_set', 78 : 'pitch', 79 'fonttype',
-#    90 : 'color',
-#    280 : 'wizard', 330 : 'id'
-#
-
-class CArcAlignedText(CEntity):
-    def __init__(self):
-        CEntity.__init__(self, 'ARCALIGNEDTEXT', 'Mesh')
-        self.text = ""
-        self.style = ""
-        self.center = Vector()
-        self.radius = 0.0
-        self.width = 1.0

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list