明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: guangdonglbq

一个AARDIO以COM方式做CAD二次开发的程序的加速运行方法

  [复制链接]
发表于 2022-2-13 14:53 | 显示全部楼层
本帖最后由 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。



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




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-2-13 17:22 | 显示全部楼层
aardio 编译 C#代码生成 DLL 然后加载到 AutoCAD  的功能还是很实用的,有空试试。
发表于 2022-6-27 18:04 | 显示全部楼层
lisp和python交互数据有什么办法快点呢?
发表于 2022-8-14 08:10 | 显示全部楼层
刚试了一下你的程序,整个执行过程都在命令行窗口一览无余,不是太理想。
 楼主| 发表于 2022-8-14 08:47 | 显示全部楼层
flowerson 发表于 2022-6-27 18:04
lisp和python交互数据有什么办法快点呢?

可以试试pycad
 楼主| 发表于 2022-8-14 08:52 | 显示全部楼层
旧事阑珊 发表于 2022-8-14 08:10
刚试了一下你的程序,整个执行过程都在命令行窗口一览无余,不是太理想。

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

是的,我刚也看到了。cad.LoadLisp()函数,生成临时Lisp文件,并加载,很好。
看你写的实例,学到不少东西,谢谢你!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-9 05:28 , Processed in 0.303032 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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