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界面是打开的,就创建了一个<pyautocad.api.Autocad> 对象。这个对象连接最近打开的cad文件。如果此时还没有打开cad,将会创建一个新的dwg文件,并自动开启cad软件。
第二行:acad.prompt() 用来在cad命令行下打印文字。
第三行:打印刚调取的CAD名字。

2、使用pywin32

import pythoncomimport win32com.clientimport mathwincad = win32com.client.Dispatch("AutoCAD.Application")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 = acad.model.AddLine(startPoint, endPoint)

2、画圆、圆弧等

#圆CircleCenter = APoint(10, 10)CircleObj = acad.model.AddCircle(CircleCenter, 5)  #圆心,半径# AddCircle(圆心, 半径)#圆弧ArcCenter = APoint(20, 10)ArcObj = acad.model.AddRectangle(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倍;

三、插入图块

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 = acad.model.InsertBlock(insertionPnt1, "block", 1, 1, 1, 0 )RetVal = acad.model.InsertBlock(insertionPnt1, "block2", 1, 1, 1, 0 )

3.4外部文件作为块插入

insertionPnt = APoint(10, 0)RetVal = acad.model.InsertBlock(insertionPnt, "D:\AutoCAD\Harbin.dwg", 1, 1, 1, 0 )          # 外部文件名尽量与当前文件中的各块名称不同;          # 插入后外部文件名将作为其在当前文件中的块名;          # 外部文件的坐标原点为其作为块的定位夹点。

四、单行文字

4.1插入单行文字

textString = "Harb Insti of Tec"insertPnt = APoint(0, 0)height = 2.5textObj = acad.model.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文本缩放

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],取正值时右偏。
(0)

相关推荐