明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: landsat99

有人Python开发Autocad吗?都是COM,好像很少讨论

[复制链接]
发表于 2022-5-10 10:43 | 显示全部楼层
已经发表了我的lisp+python结合的思路。貌似大家并不是很感冒。。。
 楼主| 发表于 2022-5-11 10:46 | 显示全部楼层
本帖最后由 landsat99 于 2022-5-11 11:05 编辑
陨落 发表于 2022-5-10 10:43
已经发表了我的lisp+python结合的思路。貌似大家并不是很感冒。。。

很棒的验证! 提供了一个全新acad操作模式的探索。赞一个!!

Python封装为com组件很有新意,兼容性、稳定性有小问题很正常毕竟调用ActiveX的dll接口不是MS官方提供的。py通过com.server这个包注册撤销com服务,com.server这个第三方模块本身的注册机制是否完善无人知晓...,..

如果您一定要解决这个问题,单独写一个创建.注销com口的dll,然后import到py应是较便捷的方案。为py的com注册注销特定写码,估计一两百行代码应该可以解决,ActiveX的标准是公开且成熟的,这个完全可控 成本最低。

ActiveX是MS的商业专利,开发标准公开也相当成熟但这个com接口库底层细节并未全部公开,毕竟以前MS就靠这个垄断,因此这个api接口基本只能VSC/C++的MFC或.net来写,别家的开发环境都不好使,即便是GCC/G++这种最标准化的C因为MFC引用问题也不太好使。VSC本身就不太标准的C,但也只能它行,GCC干不了,Java干不了,Rust干不了,python干不了(据说唯一的例外是十几年前的老delphi -7,相当诡异)..

另外,win32com这个包猜测大概率是第三方用VS编译的dll,能保证com的操作稳定已很不错;server是否稳定不好说,毕竟只是它的Bonus



 楼主| 发表于 2022-5-11 11:21 | 显示全部楼层
本帖最后由 landsat99 于 2022-5-11 11:31 编辑

我没有尝试过您在文章中提到的Vlisp-py互操作问题,尴尬的是lisp我几个人都不会。看了下没再折腾lsp,别处也用不上它。

目前把py当做acad前端碎片脚本 相当lisp角色。工作流程里abaqus/ansys数据产生后,用.net生成绝大部分图形的主体,dll攒多了再封个大的;acad的前端碎片操作,acad界面交互用py小脚本平行运行;频繁使用的py,视情况转移到c#的dll里。这是目前大致工作流程和工具选择。

我不太肯定我是否理解了您的使用环境,毕竟程序为工作流程服务 流程为王。如果我选择,我倾向于.net封装基本功能,lisp或py再来碎片调用。这个工具链可能技术上更直接更稳定。毕竟py不适合做底层

发表于 2022-5-11 11:31 | 显示全部楼层
landsat99 发表于 2022-5-11 10:46
很棒的验证! 提供了一个全新acad操作模式的探索。赞一个!!

Python封装为com组件很有新 ...

我看了win32com的源代码,也没引用啥dll,就一通写注册表就完事了。除了python,这么干的还有tcl\tk的twapi模块。
发表于 2022-5-11 11:32 | 显示全部楼层
landsat99 发表于 2022-5-11 11:21
我没有尝试过您在文章中提到的Vlisp-py互操作问题,尴尬的是lisp我几个人都不会。看了下没再折腾lsp,别处 ...

C#我打算试一下。不过估计采用com这条思路,还是会有注册的问题。而一旦引用cad的dll,就会有版本问题。
 楼主| 发表于 2022-5-11 17:35 来自手机 | 显示全部楼层
陨落 发表于 2022-5-11 11:32
C#我打算试一下。不过估计采用com这条思路,还是会有注册的问题。而一旦引用cad的dll,就会有版本问题。

嗯额。

c#我感觉尽量用.netARX,避免com方式。 netARX新轮子多,资源也新,与周边生态的匹配更好,减少不必要的麻烦更省事,,老com留给前端脚本
NetARX、 Com看似两套不同的API,实际两种API逻辑树完全一致,熟悉成本一致,是写法区别




        
发表于 2022-6-27 18:55 | 显示全部楼层
我也学习了“陨落”楼主的方法,就是注册有问题,特别是演绎的exe更难注册。但是这个方法对lsp+python来说好像是效率比较好的办法了。用.net.arx方法就是版本问题比较麻烦。
发表于 2022-8-24 16:45 | 显示全部楼层
landsat99 发表于 2022-4-20 15:59
很明确,接口定义有问题。

文件头 是否定义了app,document,modlespace的各个层级,,定义的格式是否 ...

您好请问哪里可以查到手册, 我想用com方式给CAD文件添加一个命名字典, 但是总是出错提示type无效,一直没有查到解决方法
 楼主| 发表于 2022-8-29 13:46 | 显示全部楼层
elepeipei 发表于 2022-8-24 16:45
您好请问哪里可以查到手册, 我想用com方式给CAD文件添加一个命名字典, 但是总是出错提示type无效,一直 ...

请参见:  https://help.autodesk.com/view/OARX/2023/ENU/
AutoCAD 2023版本的官方ActiveX手册。 目前最权威ACAD的Com手册,没有之一。
Acad每版更新手册,分类 说明及代码实例全面且优秀,是Java  Python Ruby调用com api的优质info


发表于 2022-8-29 16:04 | 显示全部楼层
landsat99 发表于 2022-8-29 13:46
请参见:  https://help.autodesk.com/view/OARX/2023/ENU/
AutoCAD 2023版本的官方ActiveX手册。 目前 ...

谢谢您的回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-29 20:33 , Processed in 0.183633 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表