python开发AutoCAD- -80行代码轴类小零件自动绘制

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

打印出来的图片是:
python开发AutoCAD- -80行代码轴类小零件自动绘制_第1张图片

疑问

发现好像直接用prompt传递命令的时候,CAD的命令行窗口是无法直接执行这个命令的
。目前只会简单的绘制点和线段

谢谢观看

你可能感兴趣的:(Python基础编程)