利用python控制Autocad:pyautocad

     发现pyautocad模块:可以用python控制autocad的包。今天把文档中的重点内容摘录出来,以后绘图、计算大工程量、或者识别施工图的时候时候也许可以用到。

一、连接cad

     pyautocad包可以用任何版本的cad进行操作,实际上接口都是一样的。文档中首先给出连接cad的代码:

from pyautocad import Autocad, APoint
acad = Autocad(create_if_not_exists=True)
acad.prompt("Hello, Autocad from Python\n")
print acad.doc.Name

  第一行:自动连接上cad,只要cad是开着的,就创建了一个<pyautocad.api.Autocad> 对象。这个对象连接最近打开的cad文件。
     如果此时还没有打开cad,将会创建一个新的dwg文件,并自动开启cad软件(贴心)
     第二行:acad.prompt() 用来在cad控制台中打印文字
     第三行:acad.doc.Name储存着cad最近打开的图形名

二、ActiveX interface(这个到底是什么东西)

     可以利用ActiveX interface,python中储存的autocad对象中保存了一些可以简化操作的自动化操作(可以迭代对象、搜索对象等等)

三、用acad.model 对象绘制简单图形

     acad.model对象是用来在图形中添加图元的,先来做一个简单的功能,在两点之间画线,以一个点为圆心画圆

# 已经导入 APoint 类
p1 = APoint(0, 0)
p2 = APoint(50, 25)
for i in range(5):
    text = acad.model.AddText(u'Hi %s!' % i, p1, 2.5)
    acad.model.AddLine(p1, p2)
    acad.model.AddCircle(p1, 10)
    p1.y += 10

    1、循环中的第一行用于添加一个Text,参数:(u’%s’ % text, x, y)
         如果后面不需要操作AddText对象的话,只是实现在cad中创建一个Text并不一定要创建变量,直接调用acad.model.AddText()方法就可以做到了。
    2、acad.model.AddCircle(p1, 10) 画圆,同理
    3、可以尝试更多的 addXxxx 方法,由于文档中并没有写输入变量究竟是什么,慢慢尝试吧
    尝试过可以使用的:addPolyLine(

练练手:
    用递归程序写一个在cad中画一个螺旋图,写的有点啰嗦,

from pyautocad import Autocad, APoint

acad = Autocad(create_if_not_exists = True)
p = APoint(5, 0)

def recur(p, step, layer):
    if layer == 50:
        return
    p2 = next_p(p, layer, step)
    acad.model.AddLine(p, p2)
    layer += 1
    step += 5
    print step
    recur(p2, step, layer)

def next_p(p, i, step):
    x = p.x
    y = p.y
    if i % 4 == 0:
        x += step
    elif i % 4 == 1:
        y += step
    elif i % 4 == 2:
        x -= step
    elif i % 4 == 3:
        y -= step
    return APoint(x, y)
if __name__ == '__main__':
    recur(p, 0, 0)

     画出来是这个样子的,还是挺好玩的

  • 18
    点赞
  • 191
    收藏
    觉得还不错? 一键收藏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值