该函数与 一起调用,它将列表结构返回给 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
|
|Archiver|CAD开发者社区
( 苏ICP备2022047690号-1 )
GMT+8, 2024-6-11 04:03
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.