python 帮助 autocad_python 使用pyautocad操作AutoCAD

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-22 19:15   408   0

一、python 连接AutoCAD的两种基本方法

1、使用pyautocad

from pyautocad import Autocad

pyacad = 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 pythoncom

import win32com.client

import math

wincad = win32com.client.Dispatch("AutoCAD.Application")

doc = wincad.ActiveDocument

doc.Utility.Prompt("Hello! Autocad from pywin32com.\n")

msp = doc.ModelSpace

print(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 = 10

CircleObj = 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.5

textObj = acad.model.AddText(textString, insertPnt, height)

# textString:文本内容;height:字高;

# 系统默认对齐夹点位于文字基线左侧;

# 采用系统默认对齐方式时,insertPnt为对齐夹点的位置坐标;

# 当用户自定义对齐方式时,insertPnt以对齐方式中的为准。

4.2对齐方式

AlignNum = 7

textObj.Alignment = AlignNum

# AlignNum为对齐夹点位置标识号,其取值范围为[0,14];

# 0 基线左对齐、1 基线居中对齐、2 基线右对齐;

# 7 表示对齐夹点位于 top cennter;

insertPnt = APoint(0, 10)

textObj.TextAlignmentPoint = insertPnt

# 设置对齐夹点在图纸空间中的绝对位置,可为任意一已知点;

# 若用户自定义对齐方式,则需设置此项。

4.3文本缩放

BasePoint = insertPnt

ScaleFactor = 5

textObj.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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP