乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: lido

[编程交流] AutoCAD内置命令列表

[复制链接]
rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 15:55:00 | 显示全部楼层
 
mabe应用程序需要重写或更好的错误捕捉
 
  1. (setq test (vl-catch-all-apply 'command-s (list "eattedit"))) vs (setq test (vl-catch-all-apply 'command-s (list "lido-edit")))

 
但若客户使用其他CAD平台,你们甚至离解决方案更远。但是(罗伊的)getcname不管用吗?
回复

使用道具 举报

10

主题

58

帖子

55

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-5 15:59:04 | 显示全部楼层
我在这个论坛上发布之前尝试了这些功能!
在AutoCAD 2015下:
(getcname“_eattedit”)返回nil
(getcname“eattedit”)返回nil
 
(=(键入“eattedit)”sym)返回T
(=(输入'abcde')sym)返回T
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-7-5 16:01:21 | 显示全部楼层
然后学着问一个更好的问题。
 
“请描述您在提出问题之前自己尝试确定问题的诊断步骤。”
回复

使用道具 举报

10

主题

58

帖子

55

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-5 16:04:11 | 显示全部楼层
使用vl-catch-all-apply和vl-catch-all-error-p函数捕捉错误是可以的,但不能完全解决问题。因为command-s功能。使用命令或vl cmdf函数失败。
遗憾的是,在较旧的AutoCAD版本(例如AutoCAD 2000)或某些CAD平台(例如ZWCAD)下未实现command-s功能。
因此,在我看来,解决这个问题的唯一方法是获取所有内置AutoCAD命令的该死列表。这是否可能?
回复

使用道具 举报

10

主题

58

帖子

55

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-5 16:06:43 | 显示全部楼层
很抱歉ronjonp先生浪费了你的时间。
侵略在任何情况下都不能解决任何问题!
回复

使用道具 举报

rlx

21

主题

1505

帖子

1551

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
81
发表于 2022-7-5 16:10:01 | 显示全部楼层
也许某个L(ist)M(操作器)有一些聪明的想法或知道一个未记录的命令。但我很好奇,如果你知道eattedit不可用,你会用这些知识做什么。只需显示一条消息,其中包含“抱歉”命令不可用,或者您是否有备份例程?我认为这个网站上有足够多的人能够并愿意帮助你改写你的日常生活或只是你需要的部分。只需“友善并倒带”。。。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:14:54 | 显示全部楼层
据我所知,没有办法通过Lisp代码获得命令名列表。
 
对于需要用户输入的_eattedit和其他命令,像这样的东西应该可以工作(我相信在大多数CAD平台上):
  1. (defun CommandAvailable_P (cmd / ret)
  2. (setvar 'cmdecho 0)
  3. (command cmd)
  4. (setq ret
  5.    (if (zerop (getvar 'cmdactive))
  6.      (progn
  7.        (princ "\r") ; Remove: 'Unable to recognize command "ABC". Please try again.' prompt.
  8.        nil
  9.      )
  10.      (progn
  11.        (command nil)
  12.        T
  13.      )
  14.    )
  15. )
  16. (setvar 'cmdecho 1)
  17. ret
  18. )
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 16:16:15 | 显示全部楼层
仅供参考:getcname在BricsCAD中运行良好:
  1. (getcname "_eattedit") => "EATTEDIT"
  2. (getcname "_doesnotexist") => nil
回复

使用道具 举报

10

主题

58

帖子

55

银币

初来乍到

Rank: 1

铜币
44
发表于 2022-7-5 16:20:22 | 显示全部楼层
非常感谢Roy_043。
使用系统变量CMDACTIVE是关键!
我从未想过这种方法。明亮的
 
再次感谢您。
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 16:21:56 | 显示全部楼层
只需测试。。
  1. [color="green"];At this level we can list out [/color]
  2. ([color="blue"]vl-registry-descendents[/color]  (strcat "HKEY_LOCAL_MACHINE\"
  3.          (vlax-product-key)
  4.          "\\Applications\")
  5. )
  6. [color="green"];but why this level doesn't work ???[/color]
  7. ([color="blue"]vl-registry-descendents[/color]
  8. (strcat "HKEY_LOCAL_MACHINE\"
  9.   (vlax-product-key)
  10.   "\\Applications\"
  11.   "AcEAttEdit"
  12.   [color="red"]"\\Commands"[/color]
  13.   )
  14. )

另一种方法
  1. (defun foo (app ac cmd)
  2. (and (setq app (findfile app))
  3.       (vl-registry-read
  4.          (strcat "HKEY_LOCAL_MACHINE\"
  5.          (vlax-product-key)
  6.          "\\Applications\"
  7.          ac
  8.                  "\\Commands")
  9.          (strcase cmd )
  10.          )
  11.       )
  12. )
  1. _$ (foo "AcEAttEdit.arx" "AcEAttEdit" "EATTEDIT")
  2. T
  3. _$ (foo "AcTable.arx" "AcadTable" "EATTEDIT")
  4. nil
  5. _$ (foo "AcTable.arx" "AcadTable" "TINSERT")
  6. T
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 03:17 , Processed in 0.471155 second(s), 81 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表