jacenhe 发表于 2022-2-13 14:53:07

本帖最后由 jacenhe 于 2022-4-23 13:16 编辑

“COM 接口慢,甚至是调用 COM 接口的语言慢”—— 这个说法是不准确的。
COM 并不慢,只不过 AutoCAD 是进程外调用,相对进程内调用当然会有一点成本。
瞬间大量调用外部接口,这肯定会把微小的速度差异放大,但实际程序开发中一般没必要这样做,或者有其他方法避免。

跨进程调用在现代软件开发中其实很常用,不是非常夸张地密集调用对运行速度的影响一般可以忽略不计。
调用服务端 API 敢就更是跨过千山万水去调用了,相比进程间通信来说就更慢了,但这并不妨碍现代软件大量使用远程接口。

首先如果我们用 aardio 开发一个软件,至少图形界面这部分根本不需要与 AutoCAD 交互,也肯定存在大量不需要与 AutoCAD直接交互的功能函数。

通过 COM 接口也可以调用 AutoCAD 执行 LISP ,而且与 LISP 交互并不一定非要通过 COM 接口,也可以使用其他编程语言动态生成 LISP 代码然后再执行。通过 COM 接口也可以调用 AutoCAD 加载 .Net 编写的 DLL,我在 aardio 里就提供了一个例子,在 aardio 里直接编译 C# 代码生成 DLL 程序集,然后再通过 COM 接口cad.NetLoad() 加载 .Net 写的 DLL,再通过 cad.SendCommand() 就可以调用该 DLL。

http://www.mjtd.com/forum.php?mod=attachment&aid=MTE5NjIwfDQ2MGY4NTc2fDE2NTA2OTA4MDF8NzMyODIzM3wxODA3Mzk%3D&noupdate=yes

所以通过 COM 接口调用 AutoCAD 并不会丢失 LISP / .Net 的优势,而是在这个优势的基础上叠加了其他编程语言以及 COM 接口的优势。 我们使用任何一种技术,都是为了善用他的优势、扬长避短。




guangdonglbq 发表于 2022-2-13 17:22:45

aardio 编译 C#代码生成 DLL 然后加载到 AutoCAD的功能还是很实用的,有空试试。

flowerson 发表于 2022-6-27 18:04:59

lisp和python交互数据有什么办法快点呢?

旧事阑珊 发表于 2022-8-14 08:10:24

刚试了一下你的程序,整个执行过程都在命令行窗口一览无余,不是太理想。

guangdonglbq 发表于 2022-8-14 08:47:43

flowerson 发表于 2022-6-27 18:04
lisp和python交互数据有什么办法快点呢?

可以试试pycad

guangdonglbq 发表于 2022-8-14 08:52:25

旧事阑珊 发表于 2022-8-14 08:10
刚试了一下你的程序,整个执行过程都在命令行窗口一览无余,不是太理想。

只是一个思路演示。
现有aardio版本的com.cad库已经有cad.LoadLisp()函数,可直接生成lisp文件,并加载运行。

旧事阑珊 发表于 2022-8-14 10:31:39

guangdonglbq 发表于 2022-8-14 08:52
只是一个思路演示。
现有aardio版本的com.cad库已经有cad.LoadLisp()函数,可直接生成lisp文件,并加 ...

是的,我刚也看到了。cad.LoadLisp()函数,生成临时Lisp文件,并加载,很好。
看你写的实例,学到不少东西,谢谢你!

228378553 发表于 2024-6-22 15:20:40

jacenhe 发表于 2021-6-15 02:25
谢谢,设置了 SECURELOAD 确实可以成功加载。

我在 aardio 里添加了一个 com.cad 库,对 SendCommand...

请问加载CAD,不需要CAD的路径吗?在哪里设置CAD路径呢?

guangdonglbq 发表于 2024-6-23 09:22:01

228378553 发表于 2024-6-22 15:20
请问加载CAD,不需要CAD的路径吗?在哪里设置CAD路径呢?

不需要指定

228378553 发表于 2024-6-25 11:37:24

guangdonglbq 发表于 2024-6-23 09:22
不需要指定

那为啥老提示这个呢?com不成功:(http://bbs.mjtd.com/forum.php?mod=viewthread&tid=190462&fromuid=7331389 (出处: 明经CAD社区)]我的帖子
页: 1 [2]
查看完整版本: 一个AARDIO以COM方式做CAD二次开发的程序的加速运行方法