陨落 发表于 2022-5-10 10:43:04

已经发表了我的lisp+python结合的思路。貌似大家并不是很感冒。。。

landsat99 发表于 2022-5-11 10:46:05

本帖最后由 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



landsat99 发表于 2022-5-11 11:21:44

本帖最后由 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:12

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

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

我看了win32com的源代码,也没引用啥dll,就一通写注册表就完事了。除了python,这么干的还有tcl\tk的twapi模块。

陨落 发表于 2022-5-11 11:32:53

landsat99 发表于 2022-5-11 11:21
我没有尝试过您在文章中提到的Vlisp-py互操作问题,尴尬的是lisp我几个人都不会。看了下没再折腾lsp,别处 ...

C#我打算试一下。不过估计采用com这条思路,还是会有注册的问题。而一旦引用cad的dll,就会有版本问题。

landsat99 发表于 2022-5-11 17:35:02

陨落 发表于 2022-5-11 11:32
C#我打算试一下。不过估计采用com这条思路,还是会有注册的问题。而一旦引用cad的dll,就会有版本问题。

嗯额。

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




      

flowerson 发表于 2022-6-27 18:55:14

我也学习了“陨落”楼主的方法,就是注册有问题,特别是演绎的exe更难注册。但是这个方法对lsp+python来说好像是效率比较好的办法了。用.net.arx方法就是版本问题比较麻烦。

elepeipei 发表于 2022-8-24 16:45:53

landsat99 发表于 2022-4-20 15:59
很明确,接口定义有问题。

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

您好请问哪里可以查到手册, 我想用com方式给CAD文件添加一个命名字典, 但是总是出错提示type无效,一直没有查到解决方法

landsat99 发表于 2022-8-29 13:46:08

elepeipei 发表于 2022-8-24 16:45
您好请问哪里可以查到手册, 我想用com方式给CAD文件添加一个命名字典, 但是总是出错提示type无效,一直 ...

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


elepeipei 发表于 2022-8-29 16:04:49

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

谢谢您的回复
页: 1 2 3 4 [5] 6
查看完整版本: 有人Python开发Autocad吗?都是COM,好像很少讨论