用 python 操作 Acad 绘图 的学习笔记

博客介绍了使用Python连接AutoCAD的相关内容。指出可先查看Hulunbuir的网页,有lisp、vba通过com操作acad,Python也有三种方式连接acad,需先安装comtypes、pyautocad、win32com库,接口属性等是com口统一的,代码可从vba改过来,还提到部分方法对象的安全变体数组未成功。

如何开始:先看 Hulunbuir 的 网页
lisp vba 都有通过 com 操作 acad python也有
我发现 有 3 种方式可以连上 acad #cad07 先装 几个 库
comtypes, pyautocad,win32com
接口属性方法 数据格式都是com口 统一的 ,py代码从vba里改过来就可以
comtypes, pyautocad 两种方法 对象的安全变体数组没成功 点的变体用 APoint()

#! /bin/python3
#作者:千云山庄 
import pythoncom
import array,math
import numpy as np
import comtypes.client,win32com.client
from pyautocad import APoint,Autocad
##拿到根对象
#ctpc = comtypes.client.GetActiveObject("AutoCAD.application")
w32c = win32com.client.Dispatch("AutoCAD.Application")     
#aa = Autocad(create_if_not_exists=True) 

##ctpc,aa  点的数据 一样     ctpc 可以 print 对象的方法和属性
##  w32c 的点格式另外  w32c 已实现  图案填充
##  w32c 用到的  返回  安全数组  变体  点的 对象的 
def vtpt(x,y,z=0):
   return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_R8, (x,y,z))
def vtobj(obj):
    return win32com.client.VARIANT(pythoncom.VT_ARRAY | pythoncom.VT_DISPATCH, obj)
## 千云山庄原创  分享不怕代码丑 
doc=w32c.ActiveDocument
ut   = doc.Utility
mp = doc.ModelSpace
ut.Prompt("w32c---cad\n")
print(doc.Name)
##转换数据  让cad 认得
pt1 = vtpt(0,0)
pt2 = vtpt(100,0)
##添加图元到  modespace
pt0=mp.AddPoint(pt1)
ln = mp.AddLine(pt1, pt2)
cc=mp.AddCircle(pt1,50)

patternName = "ANSI31"
PatternType = 0
bAssociativity = True
center = vtpt(0, 0, 0)
center2 = vtpt(33, 0, 0)
radius = 10
outerLoop=[]
outerLoop.append ( mp.AddCircle(center, radius))
print(outerLoop)
outerLoop =  vtobj(outerLoop)
print("vtobjed--->:",outerLoop)

hatchObj = mp.AddHatch(PatternType, patternName, bAssociativity)
hatchObj.AppendOuterLoop (outerLoop)
hatchObj.Evaluate()

outerLoop1=[]
outerLoop1.append ( mp.AddCircle(center2, radius))
outerLoop1 =  vtobj(outerLoop1)
hatchObj1 = mp.AddHatch(PatternType, patternName, bAssociativity)
hatchObj.PatternScale = 10
hatchObj1.AppendOuterLoop (outerLoop1)
hatchObj1.Evaluate()
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值