明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 273|回复: 9

[函数] 判断cad中某命令字符串是否为合法内置命令的方法三

[复制链接]
发表于 前天 19:52 | 显示全部楼层 |阅读模式
本帖最后由 guosheyang 于 2026-1-5 20:16 编辑

      这里将koz大佬提供的源码整理修改下,形成判断某命令字符串是否存在的第三种方法;
      这个方法有如下两大缺点: 一是速度慢,仅为判断一个命令名称存在否,需要提取所有命令出来,而且要弹出运行框;第二 是经常性一些拥有的命令提取不出来, 比如dataextraction   pdfimport等命令,不同时候测试,提取的内容不完全一样,不知道是啥原因造成的?网友们测试研究下。
     感谢koz老大和代码的原作者。
   
  
游客,本帖隐藏的内容需要积分高于 30 才可浏览,您当前积分为 0

   




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
回复

使用道具 举报

发表于 前天 20:39 | 显示全部楼层
getcname函数满足不了要求?
回复 支持 反对

使用道具 举报

 楼主| 发表于 前天 21:33 | 显示全部楼层
老大,提取的命令名称都是英文的,应该与getCname关√系不大,我下来再研究下,感谢版主的回复!
回复 支持 反对

使用道具 举报

发表于 前天 22:09 | 显示全部楼层
本帖最后由 kozmosovia 于 2026-1-5 22:10 编辑

根据CAD帮助,getcname应该能过滤掉全部非法的命令了。当然如果命令是由ARX/VLX定义并且注册为ACAD命令的,那肯定不在可检测之列。
我的测试跟用arx+command的结果类似。

建议找一个注册ACAD命令的ARX或者VLX测试一下,不加载和已加载情况下,getcname返回值有无变化。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 前天 23:26 | 显示全部楼层
caoyin 发表于 2026-1-5 20:39
getcname函数满足不了要求?

我也是用这个判断的内部命令的,但是有个很闹心的是:pgp定义的命令简写,不知道用什么判断。我采用了读取pgp文件把所有的简写命令都获取成了一个表,然后再对比,感觉效率不是很高,不知道有没更好的方式。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 08:52 | 显示全部楼层
     的确 正如koz老大测试的一样   很多合法命令,通过该函数测试为nil ,比如   (getcname "dataextraction") (getcname "flatshot")  (getcname "sectionplanetoblock")  (getcname "pdfimport")  (getcname "cui")  (getcname "cuiexport")  等等都返回nil了。这个判断结果其实与 (command ".arx" "_commands") 提取命令列表判断结果差不多,不合法命令能判断,许多合法命令不能识别,当然,先用command运行一下,就可以识别,但那样还不如用我上个帖子讲到的办法了
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 18:49 | 显示全部楼层
muwind 发表于 2026-1-5 23:26
我也是用这个判断的内部命令的,但是有个很闹心的是:pgp定义的命令简写,不知道用什么判断。我采用了读 ...

acad.pgp文件读取的命令也是不全的  比如我的17版本 有pdfimport 命令  但是文本文件里面却没有,各种方法都有缺陷.  简写命令也是可以识别判断的,要结合反应器判断
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 18:58 | 显示全部楼层
通过命令反应器可以识别简写命令 比如 l  pl spl等等


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 昨天 20:04 | 显示全部楼层
那些检测不到的合法命令大多都是CRX方式定义的,所以标准ARX没有包含在里面。只有CRX被加载了,才能在CAD注册并被ARX和getcname识别。
未来应该会以CRX模式为主,ARX模式慢慢退出江湖。
回复 支持 反对

使用道具 举报

 楼主| 发表于 昨天 20:37 | 显示全部楼层
kozmosovia 发表于 2026-1-6 20:04
那些检测不到的合法命令大多都是CRX方式定义的,所以标准ARX没有包含在里面。只有CRX被加载了,才能在CAD注 ...

老大,CRx如何加载?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-7 22:54 , Processed in 0.185126 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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