明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1700|回复: 5

[提问] vlax-add-cmd第一个参数的问题

[复制链接]
发表于 2015-10-13 09:33:50 | 显示全部楼层 |阅读模式
  1. (setq aa "11") (vlax-add-cmd aa 'c:XJMJ))

使用vlax-add-cmd将函数定义成快捷命令时出现以下错误:
错误: Visual LISP command document mismatch: 11
但是将aa的值修改为别的比如"55"就成功了,是否vlax-add-cmd函数对第一个参数的值有些特殊限定?比如不能跟PGP文件里的重复什么的?


 楼主| 发表于 2015-10-13 09:41:28 | 显示全部楼层
已发现使用vlax-remove-cmd函数在前面加一句
  1. (vlax-remove-cmd aa)

即可解决该问题,但是还是不知道之前为啥不成功,我的cad里并没有将11定义成任何快捷命令。
发表于 2015-10-13 12:26:25 | 显示全部楼层
应该是已经定义了11,再次定义就会出错。
(vlax-remove-cmd aa) 必须清除才能再次定义,
vlax-add-cmd 是所有文件有效,也就是说,你不关闭cad,那么11这个命令贯通所有文档。包括新文档。
而其他文档定义就会出错。建议用defun改命令,比较安全。
 楼主| 发表于 2015-10-13 16:19:31 | 显示全部楼层
edata 发表于 2015-10-13 12:26
应该是已经定义了11,再次定义就会出错。
(vlax-remove-cmd aa) 必须清除才能再次定义,
vlax-add-cmd 是 ...

我是希望把函数赋给变量的值,这样就可以定义一个DCL窗口来让用户自定义快捷命令了,这个用defun好实现吗?求教,我也不知道该怎么搞比较好。
发表于 2015-10-13 22:38:34 | 显示全部楼层
给个例子
  1. (defun c:tt()
  2.   (setq shortt "test")
  3.   (setq longtest "c:longtest")
  4.   (eval(read(strcat "(defun c:" shortt "()  ("longtest"))"))))
  5. (defun c:longtest()
  6.   (princ "\n成功生成")
  7.   )
 楼主| 发表于 2015-10-14 09:04:24 | 显示全部楼层
edata 发表于 2015-10-13 22:38
给个例子

明白了,多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-24 21:43 , Processed in 0.194379 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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