本文不定期更新!
目 录
- 0、相关文章
- 1、连接及库导入
- 2、创建点及直线
- 3、添加多段线及样条曲线
- (1) 添加普通多段线
- (2) 添加含圆弧多段线(倒角矩形)
- (3) 设置多段线线宽
- (4) 添加样条曲线
- 4、添加圆及圆弧
- (1) 创建圆
- (2) 创建圆弧
- 5、添加椭圆及椭圆弧
- (1) 创建椭圆
- (2) 创建椭圆弧
- 6、实体填充
- 7、图案填充
- (1) 圆形图案填充
- (2) 闭合多段线图案填充
- 8、其他
- 9、尾声
0、相关文章
- Python pyautocad库 使用简介
- Python AutoCAD 系统设置
- Python AutoCAD 图层
- Python AutoCAD 绘图
- Python AutoCAD 修改
- Python AutoCAD 块组
- Python AutoCAD 注释
- Python AutoCAD 文件
- Python AutoCAD 选择集
1、连接及库导入
#!/usr/bin/env python
# -*- coding: utf-8 -*-
'''
=============================
Author = Hulunbuir & DalaiNur
Email: liyang@alu.hit.edu.cn
Last Update: 2019.08.02 15:43
=============================
'''
from
pyautocad
import
Autocad
from
pyautocad
import
APoint
import
numpy
as
np
import
math
import
pyautocad
.
types
acad
=
Autocad
(
create_if_not_exists
=
True
)
acad
.
prompt
(
"Hello! AutoCAD from pyautocad."
)
print
(
acad
.
doc
.
Name
)
2、创建点及直线
startPoint
=
APoint
(
5
,
25
)
endPoint
=
APoint
(
25
,
35
)
# z坐标可空缺,空缺时系统默认其为0,即点Pnt1在CAD中坐标为(5,25,0);
# 系统自动将各坐标转化为双精度浮点数。
LineObj
=
acad
.
model
.
AddLine
(
startPoint
,
endPoint
)
3、添加多段线及样条曲线
(1) 添加普通多段线
[
Pnt1
,
Pnt2
,
Pnt3
]
=
[
APoint
(
35
,
35
)
,
APoint
(
40
,
35
)
,
APoint
(
43
,
32
)
]
PlinePnts
=
np
.
array
(
[
Pnt1
,
Pnt2
,
Pnt3
]
)
PlinePnts
=
PlinePnts
.
reshape
(
1
,
PlinePnts
.
shape
[
0
]
*
PlinePnts
.
shape
[
1
]
)
[
0
]
# 将各点坐标顺序变换为行数据;
# 添加样条曲线时参数仅支持1行多列的1维数组,即将各点x,y,z坐标顺序排列构成的数组。
PlinePnts
=
aDouble
(
PlinePnts
)
PlineObj
=
acad
.
model
.
AddPolyLine
(
PlinePnts
)
(2) 添加含圆弧多段线(倒角矩形)
# 略
(3) 设置多段线线宽
SegmentIndex
=
5
# 多段线的段号
StartWidth
=
10
# 段起点处线宽
EndWidth
=
20
# 段终点处线宽
PlineObj
.
SetWidth
(
5
,
10
,
20
)
# 为多段线PlineObj的第六段设置变宽度线宽
(4) 添加样条曲线
Pnt1
=
APoint
(
35
,
32
)
Pnt2
=
APoint
(
42
,
25
)
Pnt3
=
APoint
(
48
,
28
)
Pnt4
=
APoint
(
55
,
25
)
SplinePnts
=
np
.
array
(
[
Pnt1
,
Pnt2
,
Pnt3
,
Pnt4
]
)
SplinePnts
=
SplinePnts
.
reshape
(
1
,
SplinePnts
.
shape
[
0
]
*
SplinePnts
.
shape
[
1
]
)
[
0
]
startTan
=
APoint
(
1
,
-
10
)
endTan
=
APoint
(
1
,
-
5
)
SplineObj
=
acad
.
model
.
AddSpline
(
SplinePnts
,
startTan
,
endTan
)
# startTan为样条曲线起点处切线的方向向量;
# endTan为样条曲线终点处切线的方向向量。
4、添加圆及圆弧
(1) 创建圆
CircleCenter
=
APoint
(
10
,
10
)
CircleObj
=
acad
.
model
.
AddCircle
(
CircleCenter
,
5
)
# AddCircle(圆心, 半径)
(2) 创建圆弧
ArcCenter
=
APoint
(
20
,
10
)
ArcObj
=
acad
.
model
.
AddArc
(
ArcCenter
,
5
,
math
.
radians
(
-
60
)
,
math
.
radians
(
60
)
)
# AddArc(圆心,半径,始边角度(弧度制),终边角度(弧度制))
5、添加椭圆及椭圆弧
(1) 创建椭圆
EllCenter
=
APoint
(
40
,
10
,
0
)
majAxis
=
APoint
(
5
,
0
,
0
)
EllObj
=
acad
.
model
.
AddEllipse
(
EllCenter
,
majAxis
,
0.5
)
# 该椭圆以EllCenter为椭圆中心,长轴一端点为(45, 10, 0),且短轴长度为长轴的0.5倍;
# majAxis为主轴(长轴)端点相对于椭圆中心的坐标增量;
# 0.5短长轴之比。
(2) 创建椭圆弧
EllArcCenter
=
APoint
(
50
,
10
)
majAxis
=
APoint
(
5
,
0
,
0
)
EllArcObj
=
acad
.
model
.
AddEllipse
(
EllArcCenter
,
majAxis
,
0.5
)
EllArcObj
.
startAngle
=
-
90
*
(
3.14
/
180
)
EllArcObj
.
endAngle
=
90
*
(
3.14
/
180
)
6、实体填充
Pnt1
=
APoint
(
65
,
5
,
0
)
Pnt2
=
APoint
(
65
,
35
,
0
)
Pnt3
=
APoint
(
75
,
5
,
0
)
Pnt4
=
APoint
(
75
,
35
,
0
)
solidObj
=
acad
.
model
.
AddSolid
(
Pnt1
,
Pnt2
,
Pnt3
,
Pnt4
)
7、图案填充
'''
# 特别感谢ke1078同学对图案填充功能的实现提供的帮助。
'''
(1) 圆形图案填充
# 略
(2) 闭合多段线图案填充
# 略
8、其他
import
pyautocad
.
types
pyautocad
.
types
.
distance
(
Pnt1
,
Pnt2
)
# 计算点Pnt1和点Pnt2间的距离
print
(
Pnt1
)
print
(
tuple
(
Pnt1
)
)
# 将点Pnt1坐标转化为元组
print
(
list
(
Pnt1
)
)
# 将点Pnt1坐标转化为列表
print
(
Pnt1
+
Pnt2
)
# 两点对应坐标相加,也支持其他数学运算。
LineObj
.
layer
=
"Python"
# 指定图层
9、尾声
以上,便是关于 AutoCAD绘图 的一些基本代码,因篇幅有限,某些非关键功能未做详细介绍,如有疑问,欢迎邮件来询。
本文部分功能的实现离不开广大博友的大力帮助,有些功能看似简单,但第一次实现出来却是相当不容易的。
鉴于,相关示例代码相对较少,特写本文,一方面是为自己的阶段性学习做一个总结,另一方面更是为有需要的人提供多一点参考。
如果您已实现一些本文未提及的功能,还请在评论区呈现,以便为后续学习者提供更多的帮助。
胸藏文墨怀若谷,腹有诗书气自华,希望各位都能在知识的pāo子里快乐徜徉。
因本人野生学习Python,水平确实有限,文中难免有所疏漏,还请各位大神不吝批评指正。
最后,祝各位攻城狮们,珍爱生命,保护发际线!
本文部分内容,源于网络!
欢迎大家点赞、评论及转载,转载请注明出处!