安装dxf模块后,就可以用python 画图,生成dxf文件。
下面是我写的一个示例,用来画很多个不相交的、大小和位置都随机的圆构成的多孔图形。
import sdxf as s
import random
from random import random, randint
d = s.Drawing()
d.append(s.Text('圆的世界!', point=(0, 105, 1)))
# d.append(s.Line(points=[(0, 0, 0), (1, 1, 1)])) # 画线段
c0, r0 = (0, 0, 0), 100 # 外围大圆的中心和半径
# d.append(s.Arc(center=c0, radius=r0, startAngle=0.0, endAngle=90)) # 画圆弧
d.append(s.Circle(center=c0, radius=r0)) # 画圆
siblings = [] # 格式[((x1,y1,z1),r1),((x2,y2,z2),r2)...]
r_lsl, r_usl = 3, 15
xy_lsl, xy_usl = -100, 100
i = 0
j = 0
while i <= 1000 and j <= 100000:
r = randint(r_lsl, r_usl)
center = xy_lsl+(xy_usl-xy_lsl)*random(), xy_lsl+(xy_usl-xy_lsl)*random(), 0
# 需在大圆内部
dx = center[0] - c0[0]
dy = center[1] - c0[1]
if dx*dx + dy*dy >= (r0-r)*(r0-r):
continue
# 需在所有小圆的外面
for circle in siblings:
dx = center[0] - circle[0][0]
dy = center[1] - circle[0][1]
if dx*dx + dy*dy <= (circle[1]+r)*(circle[1]+r):
break
else:
d.append(s.Circle(center=center, radius=r))
siblings.append((center, r))
print(f"r= {r}, center= {center}")
i += 1
j += 1
d.saveas(r'k:\circle world.dxf')
# help(s)
该python代码生成的dxf文件在CAD中打开的效果如下:
模块的帮助文档:
NAME
sdxf
DESCRIPTION
SDXF - Stani's DXF
Python library to generate dxf drawings
Copyright www.stani.be
Version v1.2 (11/16/08)
License GPL
Homepage http://www.stani.be/python/sdxf
Library by Stani, whose website is now defunct.
Modifications by Kelly Farrell (http://www.kellbot.com)
to support LWPOLYLINE.
CLASSES
_Call(builtins.object)
Layer
LineType
Style
View
_Collection(_Call)
Block
Drawing
_Entity(_Call)
Arc
Circle
Face
Insert
Line
LineList
LwPolyLine
Point
Rectangle
Solid
Text
Mtext
class Arc(_Entity)
| Arc(center=(0, 0, 0), radius=1, startAngle=0.0, endAngle=90, **common)
|
| Arc, angles in degrees.
|
| Method resolution order:
| Arc
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, center=(0, 0, 0), radius=1, startAngle=0.0, endAngle=90, **common)
| Angles in degrees.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Block(_Collection)
| Block(name, layer='0', flag=0, base=(0, 0, 0), entities=[])
|
| Use list methods to add entities, eg append.
|
| Method resolution order:
| Block
| _Collection
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, name, layer='0', flag=0, base=(0, 0, 0), entities=[])
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Circle(_Entity)
| Circle(center=(0, 0, 0), radius=1, **common)
|
| Circle
|
| Method resolution order:
| Circle
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, center=(0, 0, 0), radius=1, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Drawing(_Collection)
| Drawing(insbase=(0.0, 0.0, 0.0), extmin=(0.0, 0.0), extmax=(0.0, 0.0), layers=[<sdxf.Layer object at 0x0000018154B3EC10>], linetypes=[<sdxf.LineType object at 0x0000018154B3EA30>], styles=[<sdxf.Style object at 0x0000018154B66E50>], blocks=[], views=[], entities=None, fileName='test.dxf')
|
| Dxf drawing. Use append or any other list methods to add objects.
|
| Method resolution order:
| Drawing
| _Collection
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, insbase=(0.0, 0.0, 0.0), extmin=(0.0, 0.0), extmax=(0.0, 0.0), layers=[<sdxf.Layer object at 0x0000018154B3EC10>], linetypes=[<sdxf.LineType object at 0x0000018154B3EA30>], styles=[<sdxf.Style object at 0x0000018154B66E50>], blocks=[], views=[], entities=None, fileName='test.dxf')
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Returns drawing as dxf string.
|
| save(self)
|
| saveas(self, fileName)
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Face(_Entity)
| Face(points, **common)
|
| 3dface
|
| Method resolution order:
| Face
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Insert(_Entity)
| Insert(name, point=(0, 0, 0), xscale=None, yscale=None, zscale=None, cols=None, colspacing=None, rows=None, rowspacing=None, rotation=None, **common)
|
| Block instance.
|
| Method resolution order:
| Insert
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, name, point=(0, 0, 0), xscale=None, yscale=None, zscale=None, cols=None, colspacing=None, rows=None, rowspacing=None, rotation=None, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Layer(_Call)
| Layer(name='pydxf', color=7, lineType='continuous', flag=64)
|
| Layer
|
| Method resolution order:
| Layer
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, name='pydxf', color=7, lineType='continuous', flag=64)
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Line(_Entity)
| Line(points, **common)
|
| Line
|
| Method resolution order:
| Line
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class LineList(_Entity)
| LineList(points=[], closed=0, **common)
|
| Like polyline, but built of individual lines.
|
| Method resolution order:
| LineList
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points=[], closed=0, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class LineType(_Call)
| LineType(name='continuous', description='Solid line', elements=[], flag=64)
|
| Custom linetype
|
| Method resolution order:
| LineType
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, name='continuous', description='Solid line', elements=[], flag=64)
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class LwPolyLine(_Entity)
| LwPolyLine(points, flag=0, width=None, **common)
|
| This is a LWPOLYLINE. I have no idea how it differs from a normal PolyLine
|
| Method resolution order:
| LwPolyLine
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points, flag=0, width=None, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Mtext(Text)
| Mtext(text='', point=(0, 0, 0), width=250, spacingFactor=1.5, down=0, spacingWidth=None, **options)
|
| Surrogate for mtext, generates some Text instances.
|
| Method resolution order:
| Mtext
| Text
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, text='', point=(0, 0, 0), width=250, spacingFactor=1.5, down=0, spacingWidth=None, **options)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Point(_Entity)
| Point(points=None, **common)
|
| Colored solid fill.
|
| Method resolution order:
| Point
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points=None, **common)
| None values will be omitted.
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
PolyLine = class LineList(_Entity)
| PolyLine(points=[], closed=0, **common)
|
| Like polyline, but built of individual lines.
|
| Method resolution order:
| LineList
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points=[], closed=0, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Rectangle(_Entity)
| Rectangle(point=(0, 0, 0), width=1, height=1, solid=None, line=1, **common)
|
| Rectangle, creates lines.
|
| Method resolution order:
| Rectangle
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, point=(0, 0, 0), width=1, height=1, solid=None, line=1, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Solid(_Entity)
| Solid(points=None, **common)
|
| Colored solid fill.
|
| Method resolution order:
| Solid
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, points=None, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Style(_Call)
| Style(name='standard', flag=0, height=0, widthFactor=40, obliqueAngle=50, mirror=0, lastHeight=1, font='arial.ttf', bigFont='')
|
| Text style
|
| Method resolution order:
| Style
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, name='standard', flag=0, height=0, widthFactor=40, obliqueAngle=50, mirror=0, lastHeight=1, font='arial.ttf', bigFont='')
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class Text(_Entity)
| Text(text='', point=(0, 0, 0), alignment=None, flag=None, height=1, justifyhor=None, justifyver=None, rotation=None, obliqueAngle=None, style=None, xscale=None, **common)
|
| Single text line.
|
| Method resolution order:
| Text
| _Entity
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, text='', point=(0, 0, 0), alignment=None, flag=None, height=1, justifyhor=None, justifyver=None, rotation=None, obliqueAngle=None, style=None, xscale=None, **common)
| None values will be omitted.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
class View(_Call)
| View(name, flag=0, width=1, height=1, center=(0.5, 0.5), direction=(0, 0, 1), target=(0, 0, 0), lens=50, frontClipping=0, backClipping=0, twist=0, mode=0)
|
| Method resolution order:
| View
| _Call
| builtins.object
|
| Methods defined here:
|
| __init__(self, name, flag=0, width=1, height=1, center=(0.5, 0.5), direction=(0, 0, 1), target=(0, 0, 0), lens=50, frontClipping=0, backClipping=0, twist=0, mode=0)
| Initialize self. See help(type(self)) for accurate signature.
|
| __str__(self)
| Return str(self).
|
| ----------------------------------------------------------------------
| Methods inherited from _Call:
|
| __call__(self, **attrs)
| Returns a copy with modified attributes.
|
| copy(self)
| Returns a copy.
|
| ----------------------------------------------------------------------
| Data descriptors inherited from _Call:
|
| __dict__
| dictionary for instance variables (if defined)
|
| __weakref__
| list of weak references to the object (if defined)
FUNCTIONS
ViewByWindow(name, leftBottom=(0, 0), rightTop=(1, 1), **options)
main()
#---test
DATA
ALIGNED = 3
ANONYMOUS = 1
AT_LEAST = 1
BASELINE = 0
BOTTOM = 1
BOTTOM_CENTER = 8
BOTTOM_LEFT = 7
BOTTOM_RIGHT = 9
BYBLOCK = 0
BYLAYER = 256
BY_STYLE = 5
CENTER = 1
CLOSED = 1
CLOSED_N = 32
CONTINOUS_LINETYPE_PATTERN = 128
CURVE_FIT = 2
EXACT = 2
EXTERNAL = 16
FIT = 5
LEFT = 0
LEFT_RIGHT = 1
MIDDLE = 2
MIDDLE_CENTER = 5
MIDDLE_LEFT = 4
MIDDLE_RIGHT = 6
NON_CONSTANT_ATTRIBUTES = 2
POLYFACE_MESH = 64
POLYGON_MESH = 16
POLYLINE_3D = 8
REFERENCED = 64
RESOLVED = 32
RIGHT = 2
SPLINE_FIT = 4
TOP = 3
TOP_BOTTOM = 3
TOP_CENTER = 2
TOP_LEFT = 1
TOP_RIGHT = 3
XREF = 4
XREF_OVERLAY = 8
__license__ = 'GPL'
__url__ = 'http://www.stani.be/python/sdxf'
VERSION
v1.2 (11/16/08)
AUTHOR
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!