CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

相关分类

AutoLISP 列表

2023-1-1 00:00| 发布者: admin| 查看: 319| 评论: 0|来自: AutoCAD

该函数与 一起调用,它将列表结构返回给 AutoLISP。acutBuildList()acedRetList()

以下示例代码片段传递了四个点的列表:

struct resbuf *res_list; 
ads_point ptarray[4]; 
// Initialize the point values here.  
. 
. 
. 
res_list = acutBuildList(
    RT3DPOINT, ptarray[0], 
    RT3DPOINT, ptarray[1], 
    RT3DPOINT, ptarray[2], 
    RT3DPOINT, ptarray[3], 0); 
if (res_list == NULL) { 
    acdbFail("Couldn't create list\n"); 
    return BAD; 
} 
acedRetList(res_list); 
acutRelRb(res_list); 

虚线对和嵌套列表可以通过调用来返回到 AutoLISP,以构建使用特殊列表构造类型代码创建的列表。只有复杂列表才需要这些代码。对于普通(即一维)列表,可以传递一个简单的结果缓冲区列表,如前面的示例所示。acutBuildList()acedRetList()

注意:返回给 AutoLISP bycan 的列表仅包含以下结果类型代码:,,,,,,,,,,,,, 和。 (尽管有返回代码,但如果只返回 alist,则可以调用)。它可以包含如果列表被返回到另一个 ObjectARX 应用程序的结果类型。acedRetList()RTREALRTPOINTRTSHORTRTANGRTSTRRTENAMERTPICKSRTORINTRT3DPOINTRTLBRTLERTDOTERTNILRTTRTNILnilacedRetNil()RTLONG

列表构造类型代码的使用很简单。在调用中,嵌套列表前面是结果类型代码(对于列表开始),后跟结果类型代码(对于列表结束)。也可以构造一个虚线对。虚线对也以开头和结尾;点由结果类型代码指示,显示在对的两个成员之间。acutBuildList()RTLBRTLERTLBRTLERTDOTE

注意:这是对早期版本的更改。从 AutoLISP 接收点对的应用程序不再需要在返回点线对之前修改点对的格式。(前面的顺序,即结尾,仍然受支持。acedRetList()RTDOTE
危险:该函数不检查格式正确的 AutoLISP 列表。例如,如果 and 代码不平衡,则不会检测到此错误。如果列表格式不正确,AutoLISP 可能会失败。省略代码肯定会是致命错误。acutBuildList()RTLBRTLERTLE

下面的示例代码片段构造一个嵌套列表以返回到 AutoLISP:

res_list = acutBuildList(
    RTLB, // Begin sublist.  
    RTSHORT, 1, 
    RTSHORT, 2, 
    RTSHORT, 3, 
    RTLE, // End sublist.  
    RTSHORT, 4, 
    RTSHORT, 5, 
    0); 
if (res_list == NULL) { 
    acdbFail("Couldn't create list\n"); 
    return BAD; 
} 
acedRetList(res_list); 
acutRelRb(res_list); 

此示例返回到 AutoLISP 的列表具有以下格式:

((1 2 3) 4 5)

下面的代码段构造一个点线对以返回到 AutoLISP:

res_list = acutBuildList(
    RTLB, // Begin dotted pair.  
    RTSTR, "Sample", 
    RTDOTE,
    RTSTR, "Strings", 
    RTLE, // End dotted pair.  
    0); 
if (res_list == NULL) { 
    acdbFail("Couldn't create list\n"); 
    return BAD; 
} 
acedRetList(res_list); 
acutRelRb(res_list); 

此示例返回到 AutoLISP 的列表具有以下格式:

((“样本” .“字符串”))

注意:在 AutoLISP 中,虚线对将 DXF 组代码和值关联起来。在 ObjectARX 应用程序中,这是不必要的,因为单个结果缓冲区同时包含组代码(在其字段中)和值(在其字段中)。虽然 ObjectARX 提供列表构造类型代码是为了方便起见,但大多数 ObjectARX 应用程序不需要它们。restyperesval

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部