本帖最后由 baoyizhu 于 2023-12-21 11:46 编辑
各位路过的编程高手,大家好!
这段代码是用来做图层切换和更改对象图层的,目前执行没有问题,但我希望它能够更完美,
我想它也能够先选择对象之后输入命令也能执行,现在的情况是当图层不存在的情况下,
先输入命令后选择对象无法完成更改对象图层,但是目标图层存在的话是没有问题的。
望热心朋友能够解答,谢谢!
另:这段代码是否还有优化的空间?比如更高效,更精简,兼容性好的代码?
因为我要设置15个常用图层,这就需要写15段这样的代码,我想应该可以将重复代码提炼出来,对需要变动的地方定义一个变量列表,然后只需设置15个快捷键命令就好,不知我这样的想法是否正确,请大家多多指教。
- (defun c:ge_qhtc01 ()
- (setvar "cmdecho" 0)
- (if (not (tblsearch "layer" "01"))
- (progn (command "layer" "n" "01" "")
- (command "layer" "c" 7 "01" "")
- )
- ) ;保证一定有01图层
- (and
- (if (setq ss (ssget)) ;判断是否选择了对象
- (command "change" ss "" "p" "la" "01" "p" "C" "bylayer" "")
- ;是,对选择的对象执行图层转换
- (progn (command "layer" "s" "01" "")
- (princ "\n已将01层置为当前层")
- ) ; 否,将01层置为当前层
- )
- )
- (princ)
- )
|