明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2720|回复: 14

[求助]有没有这样的程序?快速换层?

  [复制链接]
发表于 2005-3-25 08:04:00 | 显示全部楼层 |阅读模式
请教个问题:我想用最快的方法使我选择的目标切换到指定层——比如我选中一条直线后 按某个键比如数字1键 即可使该直线切换到1层(事先设定好的层)

我觉得用鼠标在层里找很费劲 浪费很多时间

改线型也是有必要的 应该是异曲同工

用vlisp可以吗

希望高手略使小技帮我 谢谢先
发表于 2005-3-25 09:08:00 | 显示全部楼层
command : ai_molc
发表于 2005-3-25 09:09:00 | 显示全部楼层
(defun c:1( / ss);修改冒号后面的1
(setq ss (ssget))
(command "change" ss "" "p" "la" "a" "");修改"a"
(princ)
) 上面1对应a层,你可以修改来达到你的要求
发表于 2005-3-25 09:21:00 | 显示全部楼层
下面的程序可以将选中的物体修改到wall层(如果wall层不存在会自动建立一个)请参考 (defun c:1 (/ old_lay ent)
(setq old_lay (getvar "clayer"))
(setq ent (ssget))
(if (= (tblobjname "LAYER" "wall") nil)
(entmake
(list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(6 . "CONTINUOUS")
'(62 . 7)
'(70 . 0)
(cons 2 "wall")
)
)
)
(command "change" ent "" "p" "la" "wall" "")
(setvar "clayer" old_lay)
(princ)
)
发表于 2005-3-25 10:18:00 | 显示全部楼层
楼上的比较完善,不过这样新建的层会到当前层,所以设置当前层的过程可以省略,另外,层名最好用变量,这样便于修改
发表于 2005-3-25 10:54:00 | 显示全部楼层
我写了一个不一样,只作参考 (defun c:test ()
(setq roop T)
(setq ss (ssget))
(while roop
(setq k T)
(print "选择要变换的层名(按快捷键):")
(setq gr (grread nil 4 2)
ga (car gr))
(cond ((member gr '((2 116) (2 87))) ;_按"T"或"t"键
(setq lay "TEXT")
)
((member gr '((2 67) (2 99))) ;_按"C"或"c"键
(setq lay "CONTINUOUS")
)
((member gr '((2 68) (2 100))) ;_按"D"或"d"键
(setq lay "DIM")
)
((member gr '((2 32) (2 13))) ;_按空格键或是回车键
(setq roop nil)
)
((= ga 25) (setq roop nil));_按鼠标回车键
(T
(progn
(print "不存在这样的层")
(setq k nil)
)
)
)
(if (and roop k)
(command "change" ss "" "p" "la" lay "")
)
)
(princ)
)
发表于 2005-3-25 11:36:00 | 显示全部楼层
晕,你这个应该做循环使用,就是要更改许多对象的时候,选择一个,改变一个,选择另一个,再改变。。。你这样输入命令TEST后要回车,然后还要按一个快捷键,岂不更麻烦?
发表于 2005-3-25 12:10:00 | 显示全部楼层
meflying发表于2005-3-25 11:36:00晕,你这个应该做循环使用,就是要更改许多对象的时候,选择一个,改变一个,选择另一个,再改变。。。你这样输入命令TEST后要回车,然后还要按一个快捷键,岂不...

飞哥说得也对,我是出于另外一种情况考虑,当你按错快捷键时,还可以重新选择,否则又要重新执行程序。当然最快捷的方法还是你给出的那种,这个我也知道。
发表于 2005-3-25 18:39:00 | 显示全部楼层
H
 楼主| 发表于 2005-3-26 14:41:00 | 显示全部楼层
飞哥 你好 请问 4楼的程序里的 (list '(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
'(6 . "CONTINUOUS")
'(62 . 7)
'(70 . 0)
(cons 2 "wall") '(62 . 7)是控制颜色的是吧 7是红色吗 请问 白色 黄色 绿色 紫色 和青色的代码分别是多少呀 谢谢了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 06:28 , Processed in 0.177504 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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