CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

ObjectARX 开发指南

定义外部函数

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

当 ObjectARX 应用程序收到来自 AutoCAD 的请求时,它必须通过为每个函数调用一次来定义其所有外部函数。Thecall 将外部函数的名称(作为字符串值传递)与应用程序中唯一的整数代码相关联。整数代码不得为负数,并且不能大于 32,767(换句话说,代码是短整数)。kLoadDwgMsgacedDefun()acedDefun()

以下调用指定 AutoLISP 将识别在 AutoLISP 中调用的外部函数,并且当 AutoLISP 调用时,它将函数代码零 (0) 传递给 ObjectARX 应用程序:acedDefun()doitdoit

acedDefun("doit", 0);

指定新外部函数名称的字符串可以是任何有效的 AutoLISP 符号名称。AutoLISP 将其转换为全部大写,并将其另存为该类型的符号。Exsubr

外部函数是为 MDI 中的每个打开文档单独定义的。当文档变为活动状态时,将定义该函数。有关详细信息,请参阅多文档界面

危险:如果两个或多个 ObjectARX 应用程序定义了具有相同名称的函数(在同一文档中),则 AutoLISP 仅识别最近定义的外部函数。之前加载的函数将丢失。如果用户使用冲突的名称进行调用,也会发生这种情况。defun

与 AutoLISP 中一样,可以通过在其名称前面加上“C:”或“c:”来将新函数定义为 AutoCAD 命令,如以下示例所示:

acedDefun("C:DOIT", 0);

在这种情况下,现在可以从 AutoCAD 命令提示符调用 DOIT,而无需将其名称括在括号中。

定义为 AutoCAD 命令的函数仍然可以从 AutoLISP 表达式中调用,前提是“C:”前缀作为其名称的一部分包含在内。例如,给定上一个调用,AutoCAD 用户还可以调用 DOIT 命令作为带有参数的函数:acedDefun()

命令:(c:doit x y)

危险:如果应用程序定义的命令的名称与内置命令或acad.pgp文件中定义的命令名称冲突,AutoCAD 不会将外部函数识别为命令。该函数仍可作为 AutoLISP 外部函数调用。例如,在调用之后,用户输入的 of(在 acad.pgp 中定义的 COPY 别名)将调用 AutoCAD COPY 命令,但用户可以调用外部函数。C:XXXacedDefun("c:cp", 0)cpc:cp
注意:定义者的函数名称可以通过调用来取消定义。未定义函数后,尝试调用它会导致错误。acedDefun()acedUndef()

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部