CAD开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

AutoCAD 2024 开发者帮助

定义外部函数

2024-5-31 18:00| 发布者: admin| 查看: 102| 评论: 0|原作者: admin|来自: AutoCAD

定义外部函数

当 ObjectARX 应用程序收到来自 AutoCAD 的请求时,它必须通过为每个函数调用一次来定义其所有外部函数。该调用将外部函数的名称(作为字符串值传递)与应用程序中唯一的整数代码相关联。整数代码不能为负数,也不能大于 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 外部函数调用。例如,在调用 之后,用户输入 (在 acad.pgp 中定义的 COPY 别名)将调用 AutoCAD COPY 命令,但用户可以使用 调用外部函数。C:XXXacedDefun("c:cp", 0)cpc:cp
注意:定义的函数名称可以通过调用 来取消定义。未定义函数后,尝试调用该函数会导致错误。acedDefun()acedUndef()

父主题:

  1. 外部功能

路过

雷人

握手

鲜花

鸡蛋

最新评论

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

GMT+8, 2024-12-15 11:48

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部