python开发AutoCAD- -80行代码轴类小零件自动绘制
介绍
这个小模块,是用python编写的,利用的是pyautocad模块,最近才安装的,对具体的功能 不是特别了解。看了一下这个模块的api的码,发现方法比较少,看了一下只会,最简单的插入点,绘制线段。下面是具体的代码。O(∩_∩)O哈哈~
代码
# -*- coding: utf-8 -*-
'''
本模块功能:输出简易的轴类零件
要求:
1.输入轴段数
2.输入各段的长度、半径
输出:
CAD轴的图
'''
# 导入pyautocad库
from pyautocad import Autocad, APoint
# 连接,在CAD的命令窗口里显示 连接成功
aCad = Autocad(create_if_not_exists=True)
aCad.prompt("Connect python successfully\n")
# 定义空列表和孔字典,我定义的比较乱  ̄へ ̄
ls = []
ls1 = []
ls2 = []
dc = {}
dc1 = {}
X = []
Y = []
Z = []
Q = []
# 初始点定位(0,0),由于在CAD里拖动比较方便,就不再让用户输入了
x1 = 0
y1 = 0
p1 = APoint(x1, y1)
# 按照轴段个数,给代表X轴和Y轴的列表传递值
num = int(input("轴段个数:"))
for i in range(num):
x = int(input("第{}段长度:".format(i+1)))
y = int(input("第{}段直径:".format(i+1)))
ls.append(x)
x1 += x
ls1.append(x1)
ls2.append(y)
Q.append(-y)
Q.append(-y)
for j in range(num):
X.append(ls1[j]-ls[j])
Y.append(ls2[j])
Y.append(ls2[j])
for j in range(num):
Z.append(X[j])
Z.append(ls1[j])
# 绘制上半部分的线段
for k in range(len(Y)):
if k != 0:
aCad.model.AddLine(APoint(Z[k], Y[k]), APoint(Z[k-1], Y[k-1]))
else:
aCad.model.AddLine(APoint(Z[k], Y[k]), p1)
aCad.model.AddLine(APoint(Z[k], -Y[k]), p1)
p_first2 = APoint(Z[k], -Y[k])
# 绘制下半部分的线段
for k in range(len(Y)):
if k != 0:
aCad.model.AddLine(APoint(Z[k], Q[k]), APoint(Z[k-1], Q[k-1]))
else:
aCad.model.AddLine(APoint(Z[k], Q[k]), p1)
aCad.model.AddLine(APoint(Z[k], -Q[k]), p1)
p_first2 = APoint(Z[k], -Q[k])
# 绘制中间的线段
for c in range(len(Y)):
if c < len(Y)-1:
if Y[c] != Y[c + 1]:
aCad.model.AddLine(APoint(Z[c], Y[c]), APoint(Z[c], -min(Y[c], Y[c+1])))
else:
aCad.model.AddLine(APoint(Z[c], Y[c]), APoint(Z[c], -Y[c]))
p_last = APoint(Z[c], -Y[c])
功能
输入:
轴段个数:5
第1段长度:20
第1段直径:60
第2段长度:30
第2段直径:40
第3段长度:50
第3段直径:20
第4段长度:100
第4段直径:30
第5段长度:30
第5段直径:80
打印出来的图片是:
疑问
发现好像直接用prompt传递命令的时候,CAD的命令行窗口是无法直接执行这个命令的
。目前只会简单的绘制点和线段