CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

检索扩展数据

2023-1-1 02:03| 发布者: admin| 查看: 320| 评论: 0|来自: AutoCAD

应用程序可以通过调用函数来获取注册的扩展数据,这与函数类似。while 仅返回定义数据,同时返回它请求的应用程序的定义数据和扩展数据。它需要一个额外的参数,用于指定应用程序名称(这与 AutoLISP 不同,在 AutoLISP 中,函数已扩展为接受指定应用程序名称的可选参数)。传递给的名称必须与上一个调用注册的应用程序相对应;它们还可以包含通配符。如果参数是指针,则调用 to 与调用相同。acdbEntGetX()acdbEntGet()acdbEntGet()acdbEntGetX()apps(entget)acdbEntGetX()acdbRegApp()appsNULLacdbEntGetX()acdbEntGet()

下面的示例代码片段显示了检索两个指定应用程序的扩展数据的典型序列。请注意,参数在链接的结果缓冲区中传递应用程序名称。apps

static struct resbuf    appname2 = {NULL, RTSTR}, 
                        appname1 = {&appname2, RTSTR}, 
                        *working_ent; 
strsave(appname1.rstring, "MY_APP_1"); 
strsave(appname2.rstring, "SOMETHING_ELSE"); 
. 
. 
. 
// Only extended data from "MY_APP_1" and 
// "SOMETHING_ELSE" are retrieved:  
working_ent = acdbEntGetX(&work_ent_addr, &appname1); 
if (working_ent == NULL) { 
    // Gracefully handle this failure.  
    . 
    . 
    . 
} 
// Update working entity groups.
status = acdbEntMod(working_ent); 
// Only extended data from registered applications still in the
// working_ent list are modified.  

如示例代码所示,函数检索的扩展数据可以通过后续调用来修改,就像用于修改正常定义数据一样。(也可以通过在传递给的实体列表中定义扩展数据来创建扩展数据。acdbEntGetX()acdbEntMod()acdbEntMod()acdbEntMake()

仅返回专门请求的应用程序的扩展数据可防止一个应用程序损坏另一个应用程序的数据。它还控制应用程序使用的内存量,并简化应用程序执行的扩展数据处理。

注意:由于传递的字符串可以包含通配符,因此应用程序名称 “” 将导致返回附加到实体的所有扩展数据。apps*acdbEntGetX()

路过

雷人

握手

鲜花

鸡蛋

最新评论

QQ|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 )

GMT+8, 2024-5-19 13:12

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部