python与cad交互_python使⽤pyautocad操作AutoCAD
⼀、python 连接AutoCAD的两种基本⽅法
1、使⽤pyautocad
from pyautocad import Autocadpyacad = Autocad(create_if_not_exists=True)pyacad.prompt("Hello! Autocad from pyautocad.")print(pyacad.doc.Name)
pyautocad包可以⽤任何版本的cad进⾏操作,实际上接⼝都是⼀样的。
第⼀⾏:⾃动连接上cad,只要cad界⾯是打开的,就创建了⼀个 对象。这个对象连接最近打开的cad⽂件。如果此时还没有打开cad,将会创建⼀个新的dwg⽂件,并⾃动开启cad软件。
第⼆⾏:acad.prompt() ⽤来在cad命令⾏下打印⽂字。
第三⾏:打印刚调取的CAD名字。
2、使⽤pywin32
import pythoncomimport win32com.clientimport mathwincad = win32com.client.Dispatch("AutoCAD.Ap
plication")doc = wincad.ActiveDocumentdoc.Utility.Prompt("Hello! Autocad from pywin32com.\n")msp = doc.ModelSpaceprint(doc.Name)
我个⼈习惯于使⽤第⼀种⽅法。
⼆、pyautocad画点线等
1、创建点及直线
startPoint = APoint(5, 25)endPoint = APoint(25, 35) # z坐标可空缺,空缺时系统默认其为0,即点Pnt1在CAD中坐标为(5,25,0);# 系统⾃动将各坐标转化为双精度浮点数。LineObj = del.AddLine(startPoint, endPoint)
2、画圆、圆弧等
#圆CircleCenter = APoint(10, 10)CircleObj = del.AddCircle(CircleCenter, 5) #圆⼼,半径# AddCircle(圆⼼, 半径)#圆弧ArcCenter = APoint(20, 10)ArcObj = del.AddRectangle(ArcCenter, 5, math.radians(-60), math.radians(60))#
AddArc(圆⼼,半径,始边⾓度(弧度制),终边⾓度(弧度制))#椭圆EllCenter = APoint(40, 10, 0)majAxi
s = APoint(5, 0, 0)EllObj = del.AddEllipse(EllCenter, majAxis, 0.5)# 该椭圆以EllCenter为椭圆中⼼,长轴⼀端点为(45, 10, 0),且短轴长度为长轴的0.5倍;
三、插⼊图块
3.1创建块
grip = APoint(20, 20)blockObj = acad.ActiveDocument.Blocks.Add(grip, "Block") # 新建块的名称为"Block"; # grip为块定位夹点所在位置。
3.2添加图元到块
center = APoint(0, 0)radius = 10CircleObj = blockObj.AddCircle(center, radius)center = APoint(40, 10)majAxis = APoint(10, 0, 0)EllObj = blockObj.AddEllipse(center, majAxis, 0.5)
3.3插⼊当前图中的块
#插⼊点的坐标位置insertionPnt1 = APoint(y, x) #插⼊块1"block"和块2"block2"RetVal = del.InsertBlock(insertionPnt1, "block", 1, 1, 1, 0 )RetVal = del.InsertBlock(insertionPnt1, "block2", 1, 1, 1, 0 )
3.4外部⽂件作为块插⼊
insertionPnt = APoint(10, 0)RetVal = del.InsertBlock(insertionPnt, "D:\AutoCAD\Harbin.dwg", 1, 1, 1, 0 ) # 外部⽂件名尽量与当前⽂件中的各块名称不同; # 插⼊后外部⽂件名将作为其在当前⽂件中的块名; # 外部⽂件的坐标原点为其作为块的定位夹点。
四、单⾏⽂字
4.1插⼊单⾏⽂字
textString = "Harb Insti of Tec"insertPnt = APoint(0, 0)height = 2.5textObj = del.AddText(textString, insertPnt, height) # textString:⽂本内容;height:字⾼; # 系统默认对齐夹点位于⽂字基线左侧; # 采⽤系统默认对齐⽅式时,insertPnt为对齐夹点的位置坐标; # 当⽤户⾃定义对齐⽅式时,insertPnt以对齐⽅式中的为准。
4.2对齐⽅式
AlignNum = 7textObj.Alignment = AlignNum # AlignNum为对齐夹点位置标识号,其取值范围为[0,14]; # 0 基线左对齐、1 基线居中对齐、2 基线右对齐; # 7 表⽰对齐夹点位于 top cennter;insertPnt = APoint(0, 10)textObj.TextAlignmentPoint = insertPnt #设置对齐夹点在图纸空间中的绝对
位置,可为任意⼀已知点; # 若⽤户⾃定义对齐⽅式,则需设置此项。
4.3⽂本缩放textstyle
BasePoint = insertPntScaleFactor = 5textObj.ScaleFactor = 5 # ⽔平⽅向⽂本缩放,即只缩放字宽(x⽅向),不缩放字⾼(y⽅向); # ScaleFactor为⽐例系数,⾮负,>1为放⼤,<1为缩⼩。宽度因⼦textObj.ScaleEntity(BasePoint, ScaleFactor) # 两个⽅向同步缩放;# 基点与insertPnt重合,⽂字放⼤后对齐夹点位置保持不变。
五、多⾏⽂字
5.1⽂字样式
txtStyleObj = acad.ActiveDocument.TextStyles.Add("HIT_TxtStyle")
5.2将特定⽂字样式设为当前
acad.ActiveDocument.ActiveTextStyle = acad.ActiveDocument.TextStyles.Item("Standard")
5.3为当前⽂本样式设置字体
acad.ActiveDocument.ActiveTextStyle.SetFont("楷体", False, False, 1, 0 or 0) #
acad.ActiveDocument.ActiveTextStyle.SetFont(Typeface, Bold, Italic, charSet, PitchandFamily) # Typeface 字体名称; # Bold 加粗,布尔值,False为不加粗字体; # Italic 倾斜,布尔值,False为倾斜字体; # CharSet 字体字符集,1为默认字符集; # PitchAndFamily 字节及笔画形式。
5.4为特定⽂本样式设置字体
acad.ActiveDocument.TextStyles.Item("HIT_TxtStyle").SetFont("宋体", False, False, 1, 0 or 0)
5.5设置字体倾斜⾓度
txtStyleObj.ObliqueAngle = math.radians(30) # 倾斜⾓度变化范围为[-85,85],取正值时右偏。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。