ObjectID
在Vlisp中,用vla-get-pr…可以提取某VLA对像的ObjectID,那么请问大佬:这个ObjectID有何用途,怎么使用。ObjectID应该是图元在内存的软指针,可以通过它在内存中检索或者存取图元。lisp编程不操作内存,基本上不需要通过这个指针来存取图元,有更多其他简单的方式获取。 本帖最后由 你有种再说一遍 于 2024-10-29 02:10 编辑
DWG就是一个数据库.
ObjectId就是数据库的行号,也就是自增主键.
句柄就是唯一键,它喜欢显示16进制,也可以显示为10进制.
Lisp图元名其实就是:本机某个前缀+句柄.
为什么需要id,因为id是不耦合的.
例如一个结构内,我引用你,你引用我,出现了菱形引用(循环引用),
然后序列化时候岂不是死循环了?
因此我们通过一个标识符进行区分,也就是id.
在CAD上面是通过id打开Entity,而Entity序列化遇到菱形引用就用id解耦.
我们可以通过循环:0~句柄长度,
数字转句柄,句柄转id,id转Entity,从而获取整个DWG内容.
这些东西学习C#或者ARX就会知道了.
在C#是没有图元名的,而是依照ObjectId作为基础的搭建的.
(vla-ObjectIDToObject (vla-get-activedocument (vlax-get-acad-object)) ObjectID)
可以返回这个Vla对象 Gu_xl 发表于 2024-10-29 08:50
可以返回这个Vla对象
发现后面这个参数ObjectID不能用纯数字代替,只能用变量。 zcsoft 发表于 2024-10-29 09:30
发现后面这个参数ObjectID不能用纯数字代替,只能用变量。
变量类型是objectid类,只是表现出来的是数字形式,而自己写的就是数字,并不是id类,所以不行。
页:
[1]