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

xiaoxiao2021-03-01  2

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的命令行窗口是无法直接执行这个命令的 。目前只会简单的绘制点和线段

谢谢观看

转载请注明原文地址: https://www.6miu.com/read-3850049.html

最新回复(0)