lincctw_ccl 发表于 2012-4-29 10:15:52

空格键执行循环换层?

本帖最后由 lincctw_ccl 于 2012-5-5 13:09 编辑

各位好!!
现有一主图层例如为:AAA其下有副图层分别为AAA_01 AAA_02 AAA_03可有能人可帮写一程序点选图 程序判断其图层 AAAAAA_01AAA_02AAA_03中的任一图层空格键 执行图层变更;按一下,变更一次图层,在上述四个图层循环换层直至使用者自行中断程序!!(依主图层来做判断,主图层名称不固定,副图层后缀名也是不固定的,主副图层是以_来做区别) (或哪位知道何处有类似程序可否给个连结)
谢谢!!

wowan1314 发表于 2012-4-29 10:15:53

本帖最后由 wowan1314 于 2012-5-5 15:38 编辑

基本实现了你要的功能。有其他要求自己优化吧! 水平有限。左键换图层,右键确认退出。感觉左键方便点。

Andyhon 发表于 2012-4-29 11:28:23

用 Grread ...
例子站内有

lincctw_ccl 发表于 2012-4-29 12:03:02

Andyhon 发表于 2012-4-29 11:28 static/image/common/back.gif
用 Grread ...
例子站内有

嗯!!謝謝指點
我先找看看

lincctw_ccl 发表于 2012-4-29 12:16:19

Andyhon 发表于 2012-4-29 11:28 static/image/common/back.gif
用 Grread ...
例子站内有

Grread 對我程度來說來說有點太深了!!
查了下如果不管點選什麼層 如找出主圖層的名稱
可能是用 vl-string-right-trim 指令吧??
但沒用過寫不出來 怎樣去得到主層!!
如時間允許的話 可否指點一二 !!
謝謝!!

langjs 发表于 2012-4-29 12:51:20

局部的功能论坛里边都有,组合一下就可以了。Grread参考风的大杀器

lincctw_ccl 发表于 2012-4-29 14:02:53

langjs 发表于 2012-4-29 12:51 static/image/common/back.gif
局部的功能论坛里边都有,组合一下就可以了。Grread参考风的大杀器

了解
謝謝 langjs兄!!

lincctw_ccl 发表于 2012-5-5 13:08:06

本帖最后由 lincctw_ccl 于 2012-5-5 13:08 编辑

(defun C:tt ()
(setvar "blipmode" 0);;标记点开关
(setvar "cmdecho" 0);;指令行不响应
(while
(setq ena (entsel "\n选取:"))
(setq enala(cdr(assoc 8(entget(car ena)))))
(setq WT(strcat enala "_1"))
    (if       (= enala enala )
    (command "change" ena """p" "la" WT "")
    )
)
(princ)
)


如上程序
如图层为 1时可变成 1-1(主图层为1)
图层判断为 1-1有-1时 要变成-2 那图层就变为1-2
图层判断为 1-2有-2时 要变成-1 那图层就变为1-1

现在人在外地,手上也没工具书,对lsp又还没熟到不翻书就能写出来的程度
有哪位好心人 帮写下吧!!
谢谢!

lincctw_ccl 发表于 2012-5-5 22:03:53

本帖最后由 lincctw_ccl 于 2012-5-5 23:03 编辑

wowan1314 发表于 2012-4-29 10:15 static/image/common/back.gif
基本实现了你要的功能。有其他要求自己优化吧! 水平有限。左键换图层,右键确认退出。感觉左键方便点。
您好!!
您太謙虛了!!
正是我要的結果!!
不過可以再請你幫改個 後綴不是數字的嗎?
後綴 是 _B 及 _X 切換的!
謝謝!

(DEFUN C:T12 (/ YPT ENA ENALA)(setq ena (entsel "\n选取换层物体(左键循环^_^右键确认退出):"))(setq enala(cdr(assoc 8 (entget(car ena))))) (while ENALA       (PRINC "\n变换图层为 ")       (PRINC ENALA)       (SETQ YPT (CAR (grread NIL8)))       (cond         ((= YPT 3)(DO_LEFT));左键循环换层         ((OR (= 25 YPT) (= 11 YPT))(SETQ ENALA NIL));右键确定完成命令       ) ))(DEFUN DO_LEFT (/ LANUM LASTR)   (IF (NULL (wcmatch ENALA "*_*"))    (PROGN   (setq ENALA (strcat enala "_b"))   (command "change" ena"" "p" "la" ENALA "")    )    (PROGN   (setq ENALB(vl-string-right-trim"_b" ENALA))   (setq ENALB1 (strcat ENALB "_x"))   (command "change" ena"" "p" "la" ENALB1 ""))(PRINC)) 资质鲁顿 改不出我想要的!!大哥再请帮帮吧!!!

wowan1314 发表于 2012-5-6 10:58:00

本帖最后由 wowan1314 于 2012-5-6 11:02 编辑

是在AA, AA_B, AA_X三个之间切换吗?后缀的B,X是大写还是小写
这两天我也没时间调试。你自己改改吧!

第二个的PROGN后面 改为IF (有_B) (图层为AA_X)(图层为aa)
页: [1] 2
查看完整版本: 空格键执行循环换层?