• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Pycad: Python Extension for AutoCad

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

Pycad

开源软件地址:

https://gitee.com/inspirefunction/Pycad

开源软件介绍:

Pycad

Python Extension for AutoCad

Editor/Debuger

简要说明:

Pycad是利用ironpython来实现对CAD.net API的利用,使得大家得以在CAD上面使用Python语言进行编程.

我们致力于适配上AutoDeskCAD/浩辰CAD/中望CAD等主流CAD.

使用方法:

  1. 程序支持AutoCad2013-2020(2014版本以下需安装.Net4.5),将压缩文件下载后解压到任意目录,在AutoCad在用Netload命令选择解压目录中的NFox.Pycad.Acad.dll,同时支持浩辰Cad,对应加载文件为NFox.Pycad.Gcad.dll。

  2. 程序选用vscode作为编辑器,在Cad中键入pye命令,可以自动打开vscode,当然你需要安装vscode,以及vscode的Python扩展(微软)和Pythonv3.7+。

  3. 如果代码修改完成,在Cad中键入pyrb命令可以即时编译python的脚本。

  4. pytest项目有很多例程可以参考。

  5. vscode右下角有一个即时窗口,可以直接在这里键入或者从代码区拷贝代码直接执行看结果

  6. 修改py项目的组织形式,原项目组织形式为包,不能防止同名包覆盖的问题,新的项目组织形式与国际接轨, 根目录可随意命名, 保证目录下有个extension包即可, 该包不可重命名, 不可缺失;项目的data目录可放置数据文件,程序中可使用findfile(filename)获取文件路径;项目的cuix目录可放置Cad的cuix文件用于加载定制的菜单、工具条和Ribbon菜单;重写了发布功能, 命令pyrelease, 可选择多项目一起发布, 完成后会在temp目录下生成一个自解压安装包xxx.Setup.exe;可以在未安装Pycad的机器上安装Pycad的运行版本和开发的项目;pye命令名修改为pyedit。

  7. 调试器基本完成,提供测试,调试流程: 打开Cad->打开pytest项目->按下F5->在Cad中敲命令即可进入调试模式;退出调试只需要点vscode中的断开连接按钮。

  8. 修正发布功能,增加invokeArx模块以调用Arx函数,例子见pytest项目的runtime模块

感谢山人编写的文档,但是改版暂时只能借鉴了,我们一起把他顶出来写新版的吧:)

如果pye命令出现“系统找不到指定的文件”的错误,请在“Pycad\bin”目录下找到配置文件settings.json,修改“editor.path”参数为vscode的安装目录.

细节问题:

1、关于vscode 自动提示配置说明:在vscode配置信息修改这两个地方

输入图片说明

输入图片说明

使用教程:

基本用法

1、启动命令

  • 打开cad,在命令行输入netload,如果是autocad,请加载 NFox.Pycad.Acad.dll 如果是浩辰cad,请加载 NFox.Pycad.Gcad.dll,
  • 在命令行输入pyedit,系统会提示你打开项目或者创建项目等选项,选择完毕后,程序自动打开vscode,如果没有安装vscode,请自行安装vscode。
  • 编写完命令后,输入pyrb进行项目编译。

2、导入模块文件:

from pycad.runtime import *from pycad.system import *

3、开始第一个程序:hello world

@command()def test(doc)    print("hello world")
  • 第一行 @command():代表下面定义的函数是个命令函数。命令名称是test,doc是传入参数,是当前主文档对象,如果不太理解的话。可以用下面方法调试查看
@command()def test2(doc):       print "the type is :" , type(doc)    print "the dwg name is :" , doc.Name    args=dir(doc)    for val in args:         print "the doc object has method or propertyname is :", val

Autocad对象

pycad主要对objectarx.net的二次封装,在system与runtime中,封装了下面的对象:

"acap": "Autodesk.AutoCAD.ApplicationServices","acdb": "Autodesk.AutoCAD.DatabaseServices","aced": "Autodesk.AutoCAD.EditorInput","acge": "Autodesk.AutoCAD.Geometry","acrx": "Autodesk.AutoCAD.Runtime","acws": "Autodesk.AutoCAD.Windows","acgi": "Autodesk.AutoCAD.GraphicsInterface","acgs": "Autodesk.AutoCAD.GraphicsSystem","acin": "Autodesk.AutoCAD.Internal","acps": "Autodesk.AutoCAD.PlottingServices","acco": "Autodesk.AutoCAD.Colors",

编写方式跟c#二次开发差不多

常规图形的创建方法:

@command()def enttest(doc):    with  dbtrans(doc) as tr:        btr=tr.opencurrspace()  #这里默认只读打开,.netapi推荐对象打开先以读打开以节省资源,再需要写入时提权        #创建点        point=acdb.DBPoint(acge.Point3d(2,2,0))        tr.addentity(btr,point)  #addentity会将btr提权为写打开,并将对象加入数据库        #创建直线 第一个参数:起点  第二个参数:终点        line=acdb.Line(acge.Point3d(2,2,0),acge.Point3d(4,5,1))         tr.addentity(btr,line)        #创建圆形 第一个参数:起点 第二个参数:投影向量,第三个参数:半径        c1=acdb.Circle(acge.Point3d(10,10,0),acge.Vector3d(0,0,1),1)  # z轴投影        c2=acdb.Circle(acge.Point3d(20,20,0),acge.Vector3d(0,1,0),2)  # y轴投影        c3=acdb.Circle(acge.Point3d(30,30,0),acge.Vector3d(1,0,0),3)  # x轴投影        tr.addentity(btr,c1,c2,c3) #or: tr.addentity(btr, *(c1,c2,c3))        #创建多段线        pl=acdb.Polyline()        pl.AddVertexAt(0,acge.Point2d(0,0),0,0,0) #添加顶点        pl.AddVertexAt(1,acge.Point2d(0,1),0,0,0)        pl.AddVertexAt(2,acge.Point2d(1,1),0,0,0)        pl.AddVertexAt(3,acge.Point2d(1,0),0,0,0)        pl.Closed=True                            #是否闭合        tr.addentity(btr,pl)        #创建弧线 第一个参数:弧的圆心 第二个参数:半径 第三个参数: 起点角度 第四个参数:终点角度        arc=acdb.Arc(acge.Point3d(10,0,0),3,math.pi*0.5,math.pi*1.25)        tr.addentity(btr,arc)

作者信息:

本工程第一作者为:xsfhlzh


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap