最近一段时间在学习使用python控制autocad的一些简单指令
通过一些资料的查阅 整理了一些简单的命令及简单的绘图指令
基础设置
连接cad
from pyautocad import Autocad
acad = Autocad(create_if_not_exists=True)
# 连接正在运行的CAD程序;
# CAD文件采用默认名称Drawing1。
acad.prompt("Hello! Autocad from Python.")
# 在CAD命令行显示"Hello! Autocad from Python.",用于测试对CAD的控制是否成功;
# 此时,注意观察命令行,若无反应可按F2,查看命令输入历史。
# 获得与Python连接的正在运行的CAD文件名
新建文件
DrawingObj = acad.ActiveDocument.Application.Documents.Add("")
# 无法直接命名,新建的文件为系统默认名称,即Drawing1、Drawing2等;
# 若更改名称,在关闭时定义。
颜色设置
## (1)、设置模型空间背景色
acad.ActiveDocument.Application.preferences.Display.GraphicsWinModelBackgrndColor = 0
# 等号后为非负整数,取值范围为[0,16777215],为十进制下的颜色代号,由RGB颜色值转化而来;
## 设置十字光标颜色
acad.ActiveDocument.Application.preferences.Display.ModelCrosshairColor = 16777215
设置十字光标大小
acad.ActiveDocument.Application.preferences.Display.CursorSize = 5
# 等号后取1到100的整数,表示十字光标占屏幕面积的百分比,10代表占比为10%,系统默认值为5。
显示线宽
acad.ActiveDocument.preferences.LineweightDisplay = 1
# 等号后为布尔值,TRUE = 1,显示线宽,FALSE = 0,隐藏线宽。
设置点大小
acad.ActiveDocument.SetVariable("PDSIZE", 10)
设置文件自动保存
acad.ActiveDocument.Application.preferences.OpenSave.AutoSaveInterval = 0.51
# 等号后数值为自动保存间隔分钟数,非负,可为小数;
绘图
创建点及直线
startPoint = APoint(5, 25)
endPoint = APoint(25, 35)
# z坐标可空缺,空缺时系统默认其为0,即点Pnt1在CAD中坐标为(5,25,0);
# 系统自动将各坐标转化为双精度浮点数。
LineObj = acad.model.AddLine(startPoint, endPoint)
圆
CircleCenter = APoint(10, 10)
CircleObj = acad.model.AddCircle(CircleCenter, 5)
# AddCircle(圆心, 半径)
圆弧
ArcCenter = APoint(20, 10)
ArcObj = acad.model.AddArc(ArcCenter, 5, math.radians(-60), math.radians(60))
# AddArc(圆心,半径,始边角度(弧度制),终边角度(弧度制))
椭圆
EllCenter = APoint(40, 10, 0)
majAxis = APoint(5, 0, 0)
EllObj = acad.model.AddEllipse(EllCenter, majAxis, 0.5)
# 该椭圆以EllCenter为椭圆中心,长轴一端点为(45, 10, 0),且短轴长度为长轴的0.5倍;
实体填充(现在还没有找到如何填充圆形的方法)
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)
其他
import pyautocad.types
pyautocad.types.distance(Pnt1, Pnt1) # 计算点Pnt1和点Pnt2间的距离
print(Pnt1)
print(tuple(Pnt1)) # 将点Pnt1坐标转化为元组
print(list(Pnt1)) # 将点Pnt1坐标转化为列表
print(Pnt1+Pnt2) # 两点对应坐标相加,也支持其他数学运算。
LineObj.layer = "Python" # 指定图层
LineObj.Linetype = "ACAD_ISO05W100" # 指定线型
LineObj.LinetypeScale = 1 # 设置线型比例
LineObj.Lineweight = 200 # 设置线宽
clr = acad.ActiveDocument.Application.GetInterfaceObject ("AutoCAD.AcCmColor.19")
clr.SetRGB(255, 0, 255) # R=255,G=0,B=255。
solidObj.TrueColor = clr # 指定实体填充的RGB颜色
这是最近通过autocad画的图