明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1129|回复: 6

[讨论] 有没有办法将函数名用某个变量来代替

[复制链接]
发表于 2020-4-18 00:15:01 | 显示全部楼层 |阅读模式
比如,把command ,定义成某个变量CMDVAR,
这样可以将(command ****)替换成(CMDVAR ***)
发表于 2020-4-18 00:19:26 来自手机 | 显示全部楼层
command是不定变量的,用autolisp写的函数不行
 楼主| 发表于 2020-4-18 00:22:26 | 显示全部楼层
那有没有办法达到这个目的?
发表于 2020-4-20 08:44:17 | 显示全部楼层
本帖最后由 mahuan1279 于 2020-4-20 08:51 编辑

(setq CMDVAR "command")(apply (read CMDVAR) (cons "circle" (list (list 0 0) 100)))万物皆可为变量。
发表于 2020-4-20 15:43:21 | 显示全部楼层
本帖最后由 lisperado 于 2020-4-20 16:04 编辑

Command: !command
#<SUBR @000000002c07d6d8 COMMAND>
函数皆为全局变量


函数名用某个变量来代替不是多此一举吗?
LISP有类似但不知行不行?


  1. (defun CMDVAR ( / cmd )
  2. (if (/= (setq cmd (getstring ""))"")
  3. (command cmd pause)(command)) )

  4. (vlax-add-cmd "CMDVAR"
  5. 'CMDVAR 0)


恢复从命令中撤除(vlax-remove-cmd "CMDVAR")
Command: CMDVAR
Unknown command "CMDVAR".  Press F1 for help.





发表于 2020-4-23 10:16:03 | 显示全部楼层
apply 函数了解一下
另外,lisp 的函数就是list ,一样的,所以你这个函数名作为变量,本来就是有这个功能的
比如 (cond ((= i 1) (setq foo '+)) (= i 2) (setrq foo '-") .....) (foo x y)...
发表于 2020-4-23 11:54:43 | 显示全部楼层
熟悉的思路

;;;备份函数
(setq olderr *error* abc *error*)

;;;重写函数
(defun *error*
;;;自定义
)

;;其它代码。。。。。

;;;恢复原状
(setq *error* olderr)

(setq *error* abc)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-18 05:50 , Processed in 0.193200 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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