找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1653|回复: 12

[讨论]:关于lisp实现图层管理的程序

[复制链接]
发表于 2005-4-1 20:29:01 | 显示全部楼层 |阅读模式

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

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

×
想实现以下新建图层的效果,就是图层从数字1开始依次递增,下面的这个太繁琐,有没有简单点的语句实现,如果有100个图层那得写100行了,请教高人~~


(DEFUN C:1   () (COMMAND "LAYER" "n" "1" ""))
(DEFUN C:2   () (COMMAND "LAYER" "n" "2" ""))
(DEFUN C:3   () (COMMAND "LAYER" "n" "3" ""))
(DEFUN C:4   () (COMMAND "LAYER" "n" "4" ""))
(DEFUN C:5   () (COMMAND "LAYER" "n" "5" ""))
(DEFUN C:6   () (COMMAND "LAYER" "n" "6" ""))
(DEFUN C:7   () (COMMAND "LAYER" "n" "7" ""))
(DEFUN C:8   () (COMMAND "LAYER" "n" "8" ""))
(DEFUN C:9   () (COMMAND "LAYER" "n" "9" ""))




我现在想知道的是,C:后面能不能用一个递增的变量代替,然后赋予一个键盘可以输入的值,这徉的语句应该怎写???
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-4-2 20:13:34 | 显示全部楼层
(defun layg(lai)
  (setq lai (itoa lai))
  (COMMAND "LAYER" "n" lai ""))
(prin1)
)
执行(LAYG 1)创建1层
(LAYG 2)创建2层............
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-3 01:09:27 | 显示全部楼层
楼上的command多了一个)

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

使用道具 举报

 楼主| 发表于 2005-4-3 01:37:38 | 显示全部楼层
二位高人,我试了一下,按键好长~~

能不能在command下只按1,2,3......空格就新建图层,而不用在前面加layg了呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-3 09:20:47 | 显示全部楼层
(defun c:tt()
  (repeat (setq n 100)
    (eval (read (strcat "(defun c:" (itoa n) " nil (COMMAND \"LAYER\" \"n\" " (itoa n)  "  \"\"))" )))
    (setq n (1- n))
    )
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-3 10:53:40 | 显示全部楼层
谢谢wkai 斑竹~~~~~

如果我要想从第6层开始递增,应该怎写?因为1~5层我有其它用途

我试着把你程序中的n写成n=6,就不行了,还请赐教,谢谢!~~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-3 11:54:28 | 显示全部楼层
(defun c:tt()
(setq n 100)
(while (>= n 6)
(eval (read (strcat "(defun c:" (itoa n) " nil (COMMAND \"LAYER\" \"n\" " (itoa n) " \"\"))" )))
(setq n (1- n))
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-3 13:29:41 | 显示全部楼层
多谢wkai 版主,
------------------------------------------------------------------------
ok,如果我想实现关闭某一图层,那么和新建的图层的键还不能设
重,我想在数字前加个@,比如说,@1,@2,@3......就是关闭相应的1,2,3图层,那么按照我的想法,n改成off,但是@应该加在什么地方呢?试着加在c:后面,还是不行,呵呵~~~这个,这个,俺不懂程序,只会瞎琢磨,老大,出来摆平哈,最后如果实现了,把这两
个程序写到一起,应该怎么做?


(defun c:tt()
(setq n 100)
(while (>= n 6)
(eval (read (strcat "(defun c:" (itoa n) " nil (COMMAND \"LAYER\" \"off\" " (itoa n) " \"\"))" )))
(setq n (1- n))
)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-6 09:37:04 | 显示全部楼层
(defun c:tt()
(setq n 100)
(while (>= n 6)
(eval (read (strcat "(defun c:@" (itoa n) " nil (COMMAND \"LAYER\" \"off\" " (itoa n) " \"\"))" )))
(setq n (1- n))
)
)
不知道你有没有看到加在哪里了,...仔细一点看...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-6 20:35:57 | 显示全部楼层
呵呵,多谢老舟的提醒,其实我原来也是加在那里的,就是加载了

这个lsp程序后老是忘记输入tt,结果还以为不好用呢,不错~~~~

如果能让这个lsp程序自动执行,就是每次加载后不用再输入tt,就更高效了?

要是能把这个图层新建,图层关闭,还有切换当前层的lsp写到一个文件里就更

完美了,现在只能把他们分别加载,怎么写到一起呢?

问题:1:能否不输入tt,就直接运行程序。也就是说每次启动cad,直接输入

1,2,3,....就可新建图层,输入@1,@2,@3,....就关闭相应图层,而不用先输入tt

            2:能否将几个程序合并到一个程序里。就是将图层新建,图层关闭,切换当前层......

都写入一个lsp文件里?现在我只能分别加载他们

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

使用道具 举报

发表于 2005-4-6 21:12:13 | 显示全部楼层
呵呵,老兄你要求也多了吧!
做这些繁锁的事情有什么意义呢?
你自己建立一个模板档案不就什么都搞定了?
不过你说的问题还是要给你解答一下
象你所说的那样按1.,2,3新建图层好象是不可以
的,不过可以通过组合键实现如CTRL+1 CTRL+2
或SHIFT+1 SHIFT+2,实现这些功能要求你对MENU文件或MNS文件
功能比较熟悉....有兴趣你可以自己研究一下..有疑问欢迎提问..
实现...关于图层管理的程序论坛里好象很多自己找一下吧!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-4-6 21:54:20 | 显示全部楼层
通过组合键实现如CTRL+1 CTRL+2
或SHIFT+1 SHIFT+2

这个怎么实现?ctrl+11,shit+11就不行了吧?那还没有我一楼那个效率高呢?

俺就是要高效率,能用一个代替的,就决不用两个,养成良好的作图习惯,卡卡~~

论坛里的图层管理都太麻烦,而且大多都是2002以上的版本

我要14下的

BTW:别说没用的,知之知之,不知为不知,为偶就是要打破沙锅问到底

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

使用道具 举报

发表于 2005-4-7 10:59:52 | 显示全部楼层
老舟真的很厉害,真的好羡慕这样的好通知啊~
不知道那天自己才能这样~
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-28 02:27 , Processed in 0.190916 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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