AutoLISP 列表
该函数与 一起调用,后者将列表结构返回给 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 的列表只能包含以下结果类型代码:、 、 、 、 和 。(虽然有返回码,但如果只返回列表,可以调用 )。它可以包含列表是否返回到另一个 ObjectARX 应用程序的结果类型。acedRetList()RTREALRTPOINTRTSHORTRTANGRTSTRRTENAMERTPICKSRTORINTRT3DPOINTRTLBRTLERTDOTERTNILRTTRTNILnilacedRetNil()RTLONG
列表构造类型代码的使用很简单。在调用中,嵌套列表前面是结果类型代码(对于列表开始),后面是结果类型代码(对于列表结束)。也可以构造虚线对。虚线对也以 开头和结尾;该点由结果类型代码表示,并出现在对的两个成员之间。acutBuildList()RTLBRTLERTLBRTLERTDOTE 注意:这是对早期版本的更改。从 AutoLISP 接收虚线对的应用程序不再需要修改虚线对的格式,然后再返回虚线对。(仍然支持前面的顺序,末尾。acedRetList()RTDOTE
危险:该函数不检查格式正确的 AutoLISP 列表。例如,如果 和 代码不平衡,则不会检测到此错误。如果列表格式不正确,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 苏公网安备32011402011833)
GMT+8, 2025-3-14 08:57
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.