CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

评估外部函数

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

一旦定义了外部函数,AutoLISP 就可以通过请求来调用它。当 ObjectARX 应用程序收到此请求时,它会通过调用来检索外部函数的整数代码。然后,switch 语句、if 语句或函数调用表可以选择并调用指示的函数处理程序。这是 ObjectARX 应用程序定义的用于实现外部函数的函数。请注意,处理程序的名称和由 AutoLISP 定义(因此由 AutoLISP 识别)的名称不一定是同名。kInvkSubrMsgacedGetFunCode()acedDefun()

如果函数处理程序需要参数,则它可以通过调用来检索其值,这将返回指向包含从 AutoLISP 传递的值的结果缓冲区的链接列表的指针。如果处理程序不需要任何参数,则不需要调用(无论如何,它都可以这样做,以验证没有传递任何参数)。由于函数处理程序从链表中检索其参数,因此还可以实现可变长度参数列表或不同的参数类型。acedGetArgs()acedGetArgs()

注意:

函数处理程序必须验证传递给它的参数的数量和类型,因为无法告诉 AutoLISP 要求是什么。

可以编写需要参数的函数处理程序,以便它们提示用户输入值 if返回参数列表。此技术通常应用于定义为 AutoCAD 命令的外部函数。acedGetArgs()NULL

一组称为值返回函数(如、和)的 ObjectARX 函数使外部函数能够向调用它的 AutoLISP 表达式返回值。acedRetInt()acedRetReal()acedRetPoint()

在外部函数和 AutoLISP 之间传递的参数的计算结果必须为以下类型之一:整数、实数(浮点)、字符串、点(在 AutoLISP 中表示为两个或三个实数值的列表)、实体名称、选择集名称、AutoLISP 符号沙或包含前面元素的列表。AutoLISP 符号(不包括 AutoLISP 符号)不传递给外部函数或从外部函数传递,但 ObjectARX 应用程序可以通过调用 and 来检索和设置 AutoLISP 符号的值。tniltnilacedGetSym()acedPutSym()

例如,如果使用字符串、整数和实参数调用 ObjectARX 应用程序中的外部函数,则可以按如下方式表示此类函数的 AutoLISP 版本:

(doitagain pstr iarg rarg) 

假设已使用 定义函数,AutoCAD 用户可以使用以下表达式调用它:acedDefun()

命令:(再次执行“起始宽度为” 3 7.12)

此调用为函数的字符串、整数和实数参数提供值,函数处理程序通过调用检索这些参数。有关以这种方式检索参数的示例,请参阅列表和其他动态分配的数据中的第一个示例。doitagain()acedGetArgs()


路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部