找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1301|回复: 12

[弹指神通]:仅此一家别无分店!修炼[乾坤大挪移]让你的命令活跃起来!!

[复制链接]

已领礼包: 6个

财富等级: 恭喜发财

发表于 2006-6-3 11:47:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
用法:先加载压缩包中的两个文件:
1。乾坤大挪移.fas
2。nametola.LSP
动态生成指定的对应的命令!
如:当前图档中有图层:a1, a2 ,a3, b4, cen, dim
则生成对应命令:前辍la+图层名(源程序可以修改的)
laa1, laa2 ,laa3, lab4, lacen, ladim
输入对应命令则跳到对应图层!
如输入:laa1->图层:a1
如输入:ladim->图层:dim
如果新增了图层或改了图层名可输入"当前文件名"
再次生成对应命令.
如当前dwg名为:123.dwg则为:更新命令为:123
如当前dwg名为:abc.dwg则为:更新命令为:abc

这只是乾坤大挪移子函数应用的一个例子!
可能命令为"当前文件名"有点怪!只是为了说明功能而设
请见谅!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-6-3 11:57:24 | 显示全部楼层
忘记了说加载顺序了!
一定要先加载:
乾坤大挪移.fas
再加载:
nametola.LSP
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-3 14:03:42 | 显示全部楼层
好像直接点取图层列表比输入要快吧?不过支持一下楼主的研究精神
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-6-3 14:38:01 | 显示全部楼层
直接点取图层列表的确是很快的哦!
我只是用这个说个例子!来说明一下
在CAD动态生成命令的现实方法!

并在乾坤大挪移中:
提供三个动态生成lsp命令的子函数:
(fsxm-fun->create fun bn txt)
(fsxm-fun->run funtxtlist)
(fsxm-create->cmd oldcmd newcmd)

[php]
1.
(fsxm-fun->create fun bn txt)
例子:
(fsxm-fun->create
  "test"
  "msg"
  "(alert (strcat \"提示:\" msg))"
)
等效于:
(defun test (msg)
  (alert (strcat "提示:" msg))
)
---------
(fsxm-fun->create
  "c:test2"
  ""
  "(alert \"你好吗?\" )"
)
等效于:
(defun c:test2 () (alert "你好吗?"))
---------------------------------------
2.
(fsxm-fun->run funtxtlist)
例子:
(fsxm-fun->run (list "(test \"你好\")"))
等效于:
(test "你好")
--------
(fsxm-fun->run
  (list "(setq a \"现在还行\")" "(alert a)" "(princ)")
)
等效于:
(progn (setq a "现在还行") (alert a) (princ))
----------------------------------------
3.
(fsxm-create->cmd oldcmd newcmd)
说明:
(fsxm-create->cmd "test2" "123")
让123可以调用test2命令
(fsxm-create->cmd "array" "456")
让456可以调用line命令
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-4 11:55:56 | 显示全部楼层
这样写也许更方便:
[php]
;| 定义临时命令.------by 雨箭风刀.2005.6
参数: funlist = '(函数名 参数 函数内容)列表.
测试:
(defun2 '(c:cc ()(alert "cc ok")))
|;
(defun defun2 (funlist)
  (eval (cons 'defun funlist))
)
[/php]

不过不是很理解“动态”的含义。
怎么写,都不如
(defun .....)快捷方便阿?!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-6-4 12:47:33 | 显示全部楼层
(defun string->fun (string)
  (eval (read string))
)
其实我是这样写的!
以后的只是调用这个子程式!
(defun .....)方便可是它不是活动的啊!只是预先定义好了才能用!
用上面的法可以根椐条件生成不同的自定义函数啦!只要你会灵活的处理它
比如!我在;将表的排序进行到底!!(三)全力打造最强劲的表排序函数!
为了达到对多层表的读取就是动态定义了:lam
lam 这个函数不是确定的。会根据条件不同而生成不同的表达式:
http://p4.xdcad.net/forum/showthread.php?s=&threadid=564530
[php]
(if intlst
    (setq str-a        (foreach tmp intlst
                  (setq str-a (strcat " (nth " (itoa tmp) str-a ")"))
                )
    )
  )
  (if (/= myfun "")
    (setq str-a (strcat "(" myfun str-a ")"))
  )
  (setq str-b (vl-string-subst " b" " a" str-a))
  (setq
    lam        (strcat        "(FUNCTION (lambda (a b) ("
                (substr fst 1 1)
                " "
                str-a
                str-b
                ")))"
        )
  )
[/php]
呵呵如果你想用defun来定义这个?试试看可能吗???
“(nth ”的层次可不是确定的哦!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-24 18:44:25 | 显示全部楼层
多谢楼主提供,此命令对于上百个图层的文件非常实用!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2006-6-25 11:55:08 | 显示全部楼层

Re: [弹指神通]:仅此一家别无分店!修炼[乾坤大挪移]让你的命令活跃起来!!

最初由 fsxm 发布
[B]用法:先加载压缩包中的两个文件:
1。乾坤大挪移.fas
2。nametola.LSP
动态生成指定的对应的命令!
如:当前图档中有图层:a1, a2 ,a3, b4, cen, dim
则生成对应命令:前辍la+图层名(源程序可以修改的)... [/B]


如果有一个层名“yer”,那么Layer到底应该是什么意思呢?
如果层名用中文,怎样输入才方便呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-6-25 12:29:39 | 显示全部楼层

Re: Re: [弹指神通]:仅此一家别无分店!修炼[乾坤大挪移]让你的命令活跃起来!!

最初由 ll_j 发布
[B]如果有一个层名“yer”,那么Layer到底应该是什么意思呢?
如果层名用中文,怎样输入才方便呢? [/B]

老大好!
“动态生成指定的对应的命令”
la+yer因为与CAD命令名相同所以不行啦!汉字的图名输入太烦也不方便!~!
这只是个举例不可深究!
只是说明在lisp动态生成变化的函数的方法!~!
具体用法可以在用到时再说吧·~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-25 12:35:54 | 显示全部楼层
对层名不是通用的,比如层名可以含空格,但是做成命令就不行了。
但是楼主的方法确实可以借鉴,合理使用也能发挥意想不到的效果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-6-28 00:46:56 | 显示全部楼层
最初由 fsxm 发布
[B](defun string->fun (string)
  (eval (read string))
)
其实我是这样写的!
以后的只是调用这个子程式!
(defun .....)方便可是它不是活动的啊!只是预先定义好了才能用!
用上面的法可以根椐条件生成不同的?.. [/B]


对本主题,我未看出有什么优势
难道能避开defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-6-28 01:10:25 | 显示全部楼层
(eval
  (append '(defun)(list(read "c:LAA1")) '((/)(princ "层a1")(princ))))
)
;;;----------defun--------------名称----------------实现

层名代入即可(foreach ....)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6个

财富等级: 恭喜发财

 楼主| 发表于 2006-7-1 18:34:54 | 显示全部楼层
lisp中处理字符总比处理符号来的强吧?
(defun string->fun (string)
(eval (read string))
)
的灵活度远大过defun这就是优势啦!
当然在这个主题不是能体现!所以前面说明了:"这只是个举例不可深究!"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-18 17:45 , Processed in 0.214606 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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