明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 43174|回复: 159

[经验] VLX或者fas文件的命令忘了,怎么办?

    [复制链接]
发表于 2015-8-13 18:41:56 | 显示全部楼层 |阅读模式
本帖最后由 llsheng_73 于 2015-9-19 15:11 编辑

以下这种经历相信很多人都会有过
    得到一个不错的程序,是编译后的,用着不错,但时间久了不用之后,再需要用的时候发现一个很尴尬的事:忘了命令是什么了
    以前我给别人程序也是编译后的,文件名一般就是命令名(希望看到文件就知道它命令是什么),但有人根据其作用把名字改了(怕时间久了不知道做什么用)。这样一来好了,作用倒是清楚了,但命令是什么呢?时间太久问我也不一定知道了。。。后来我一般就在编译前在最后加一句princ或者alert,把主要作用及命令简短的说一下,这样确实避免了很多开头说到的尴尬。
    说了这么多,这种问题怎么办呢,别急,办法还是有的,今天才试出来
    新开一个空图,在需要查看命令或者函数的的vlx或者fas文件被加载前运行
  1. (setq 加载前(atoms-family 0)临时 0)
然后再加载你的vlx或者fas文件,运行代码
  1. (vl-reomve-if'(lambda(x)(member x 加载前))(atoms-family 0))
     最后会得到一个表,这个表里边除了最后两项都是刚才加载那个文件所定义的函数(最后两项一般是刚才所定义的两个变量 加载前 临时),看到里边有C:XXXX之类的,是不是会高兴得想跳起来?
     当然,也有可能除了刚才自己定义的两个变量,什么也没有!很郁闷?这不是方法的问题,而是习惯的问题,后边会提到。
     那两个setq语句后边还加了一个根本没用的,可以试下去掉它会怎么样,可以肯定的是对最后结果没影响,但过程可能会比较.....   38楼G版已经放出工具了,大家稍微修改下就更方便了,在此感谢G版!!!

    此外,经常看到一些人它的CAD启动组里边一大堆,各种常用不常用的程序差不多都在,他们的理由的用掉时候再去加载它们麻烦。问题是很多东东其实根本就很少用到,另外那一大堆程序来源各不相同。很难保证不会相互影响,比如无法保证都无全局变量,也不能保证没有同名函数。当有同名全局变量的情况下,可以先运行A正常,然后运行B不正常,反过来也一样。。
而当有函数同名就惨了,很可能单独加载都能用,或者单独加载A能用,加载了B后,B能用但A用不了啦。。。无语
   其实这里想说的是,喜欢把用不用的都放一堆的,最好也看下有没有可能会因为函数同名或全局变量同名而引起冲突,
空图加载一个程序,按前边说的方法得到一个表,运行程序一次后再得到另一个表,两个表处理一下,就可以知道这个程序有没有用到全局变量,都是些什么。。。。然后就可以判断这些vllx或才fas文件全部加载会不会出现冲突,当然,这个活不一定轻松,但建议一定要做,其实也可以自己做个小工具来检测,好了,这后边的早就跑题了.

点评

高手就是高手!啊  发表于 2015-8-14 10:12

评分

参与人数 3明经币 +2 金钱 +5 收起 理由
yjtdkj + 1 很给力!
wkq004 + 1 很给力!
yushuihi + 5 很给力!

查看全部评分

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

本帖被以下淘专辑推荐:

发表于 2015-8-17 13:13:17 | 显示全部楼层
  1. ;查看C函数名称
  2. (defun c:tt (/ l fn)
  3.   (setq l (mapcar 'eval (atoms-family 0)))
  4.   (if (setq fn (getfiled "" "" "lsp" 4))
  5.     (progn
  6.       (load fn)
  7.       (mapcar
  8.         'print
  9.         (vl-remove-if-not
  10.           '(lambda (x) (= "C:" (substr x 1 2)))
  11.           (mapcar
  12.             'VL-PRINC-TO-STRING
  13.             (vl-remove-if
  14.               '(lambda (x) (member (eval x) l))
  15.               (atoms-family 0)
  16.             )
  17.           )
  18.         )
  19.       )
  20.     )
  21.   )
  22.   (princ)
  23. )

点评

果然有高招嘛,呵呵。。。这下大家都可以用这个一下就搞定了  发表于 2015-8-17 13:57

评分

参与人数 3明经币 +3 收起 理由
yjtdkj + 1
tigcat + 1 G版这个解决了困扰多年的难题
ucuc2003 + 1 棒棒棒!

查看全部评分

回复 支持 3 反对 0

使用道具 举报

发表于 2015-8-16 10:45:19 | 显示全部楼层
你这思路好啊
回复 支持 0 反对 1

使用道具 举报

发表于 2015-8-13 18:43:48 | 显示全部楼层
本帖最后由 树櫴希德 于 2015-8-13 19:06 编辑

占个沙发 太有道理了
新开一个图,不要加载你不知道命令的那个vlx或者fas文件,在控制台运行(setq 加载前(atoms-family 0)临时 0)
      然后再加载你想知道里边有些什么函数或者命令的vlx或者fas文件,再到控制台运行(setq 加载后(atoms-family 0)临时 0)
      最后运行一句(vl-remove-if'(lambda(x)(member x 加载前))加载后)会得到一个表,这个表里边除了最后两项都是刚才加载那个文件所定义的函数还会有刚才所定义的两个变量 加载前 临时
发表于 2015-8-13 20:07:24 | 显示全部楼层
多谢分享了!

点评

长老见笑了,按说这办法应该早就有人想到,说不定都做成了工具  发表于 2015-8-13 20:32
发表于 2015-8-13 20:48:57 | 显示全部楼层
不错。。。
发表于 2015-8-13 21:01:38 | 显示全部楼层
论坛已有,搜索一下就得了
发表于 2015-8-13 23:32:08 | 显示全部楼层
谢谢73哥,哈哈,按你的方法终于找到了程序命令...

点评

把文件名改为命令名,以后就不用再找这个程序的命令了哈  发表于 2015-8-13 23:33
发表于 2015-8-14 09:45:45 | 显示全部楼层
reyun 发表于 2015-8-13 23:32
谢谢73哥,哈哈,按你的方法终于找到了程序命令...

嗯嗯,是的哈。
发表于 2015-8-14 12:59:06 | 显示全部楼层
是的,有时候真的会忘记命令。。
发表于 2015-8-14 15:19:46 | 显示全部楼层
这个很不错呢,

楼主能不能把它编成一个程序,用起来更直接点!

点评

这个想法不错,自己动手丰衣足食  发表于 2015-8-14 15:23
发表于 2015-8-16 07:32:31 | 显示全部楼层
看看,不知道是不是有用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-26 21:26 , Processed in 0.194152 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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