明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1509|回复: 7

[命令] 怎样判断一个命令是Lisp命令还是ARX命令

[复制链接]
发表于 2021-4-10 07:12 | 显示全部楼层 |阅读模式
使用  (defun c:xxx())    或  commandmethod("xxx")  都可以定义一个新的命令并在命令行中运行,但使用Lisp调用时,却不同。


使用defun 定义的命令,在lisp中的调用方法为 (c:xxx)

使用 commandmethod 定义的命令,在lisp中的调用方法为  (command "xxx")


问题:怎样通过代码去判断,一个命令是由Lisp定义的,还是由commandmethod 定义的?
发表于 2021-4-10 11:30 | 显示全部楼层
(= 'subr (type c:xxx))
 楼主| 发表于 2021-4-10 17:51 | 显示全部楼层
测试通过,谢谢!
发表于 2021-4-11 00:18 | 显示全部楼层
SUBR, EXRXSUBR, and USUBR
The name of the function (the name that was specified in defun or at load time). SUBR refers to internal and compiled functions, EXRXSUBR refers to external ARX functions, and USUBR identifies user-defined functions.
 楼主| 发表于 2021-4-11 10:42 | 显示全部楼层
使用Lisp定义的命令可以使用 (= 'subr (type c:xxx)) ,使用ARX定义的命令,只能返回nil,不知道怎么判断。
发表于 2021-4-14 10:16 | 显示全部楼层
(if (= 'subr (type c:xxx))
   "LISP 命令"
   "非LISP命令")
 楼主| 发表于 2021-4-16 09:11 | 显示全部楼层
vitalgg 发表于 2021-4-14 10:16
(if (= 'subr (type c:xxx))
   "LISP 命令"
   "非LISP命令")

此判断有点欠妥,对于没有定义的命令,也会返回 非LISP命令
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-24 20:05 , Processed in 0.484295 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表