明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3933|回复: 19

空格键执行循环换层?

  [复制链接]
发表于 2012-4-29 10:15:52 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 lincctw_ccl 于 2012-5-5 13:09 编辑

各位好!!

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

最佳答案

查看完整内容

基本实现了你要的功能。有其他要求自己优化吧! 水平有限。左键换图层,右键确认退出。感觉左键方便点。
发表于 2012-4-29 10:15:53 | 显示全部楼层
本帖最后由 wowan1314 于 2012-5-5 15:38 编辑

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

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2012-4-29 11:28:23 | 显示全部楼层
用 Grread ...
例子站内有
回复

使用道具 举报

 楼主| 发表于 2012-4-29 12:03:02 | 显示全部楼层
Andyhon 发表于 2012-4-29 11:28
用 Grread ...
例子站内有

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

回复

使用道具 举报

 楼主| 发表于 2012-4-29 12:16:19 | 显示全部楼层
Andyhon 发表于 2012-4-29 11:28
用 Grread ...
例子站内有

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

使用道具 举报

发表于 2012-4-29 12:51:20 | 显示全部楼层
局部的功能论坛里边都有,组合一下就可以了。Grread参考风的大杀器
回复

使用道具 举报

 楼主| 发表于 2012-4-29 14:02:53 | 显示全部楼层
langjs 发表于 2012-4-29 12:51
局部的功能论坛里边都有,组合一下就可以了。Grread参考风的大杀器

了解
謝謝 langjs兄!!
回复

使用道具 举报

 楼主| 发表于 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又还没熟到不翻书就能写出来的程度
有哪位好心人 帮写下吧!!
谢谢!
回复

使用道具 举报

 楼主| 发表于 2012-5-5 22:03:53 | 显示全部楼层
本帖最后由 lincctw_ccl 于 2012-5-5 23:03 编辑
wowan1314 发表于 2012-4-29 10:15
基本实现了你要的功能。有其他要求自己优化吧! 水平有限。左键换图层,右键确认退出。感觉左键方便点。

您好!!
您太謙虛了!!
正是我要的結果!!
不過可以再請你幫改個 後綴不是數字的嗎?
後綴 是 _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))
资质鲁顿 改不出我想要的!!
大哥再请帮帮吧!!!
回复

使用道具 举报

发表于 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)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-15 07:35 , Processed in 0.231656 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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