一、python 連接AutoCAD的兩種基本方法
1、使用pyautocad
python獲取局域網內的設備、from pyautocad import Autocad
pyacad = Autocad(create_if_not_exists=True)
pyacad.prompt("Hello! Autocad from pyautocad.")
cad二次開發用什么語言,print(pyacad.doc.Name)
pyautocad包可以用任何版本的cad進行操作,實際上接口都是一樣的。
第一行:自動連接上cad,只要cad界面是打開的,就創建了一個 對象。這個對象連接最近打開的cad文件。如果此時還沒有打開cad,將會創建一個新的dwg文件,并自動開啟cad軟件。
python二次開發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],取正值時右偏。
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态