明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4056|回复: 72

[源码] <<*** TT就可以選物件隱藏,空選則顯示全部,... ***>>>

[复制链接]
发表于 2021-12-17 11:50 | 显示全部楼层 |阅读模式
本帖最后由 lee50310 于 2023-10-30 04:31 编辑

原帖:
http://bbs.mjtd.com/thread-113902-5-1.html


應網友要求 將功能合併 改好測試ok   如動態圖所示
1.執行指令: tt     
2.按Enter 結束選取  

3.就可以選對象後按Enter 隱藏 ,空選則顯示全部  , 選中對象按T就孤立
;---------------------------------------------------

                                                     (鼠標操作)在6樓
更新
tt5d_chs 或 tt5d_cht.lsp   修正 判斷T鍵,能支持大小寫

;----------------------------------------------------------


                           



本帖子中包含更多资源

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

x

评分

参与人数 4明经币 +4 收起 理由
_Levin + 1 很给力!
USER2128 + 1 赞一个!
songyujie928 + 1 很给力!
start4444 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2023-10-27 14:08 | 显示全部楼层
本帖最后由 lee50310 于 2023-10-27 14:24 编辑
muai2010 发表于 2023-10-27 13:48
现在不闪退了,但是孤立和隐藏的效果是一样的了,按t也是隐藏了

请教下键盘上字母对应的f:keydown值是 ...

tt5c_chs.lsp
部分程式 ==> 判斷按鍵
;----------------------------------------------------

  1. ;;--------------------------------------------------------------------------

  2. (defun f:keydown ( / key)
  3. ;(princ prm)
  4. (while (/= (car (setq key (grread 10))) 2))
  5. (cadr key)
  6. )


  7. (princ "\n<<--- 多选 --- >> 结束选取请按Enter")
  8. (if (setq ss (ssget))
  9.     (progn
  10.                  (princ "\n按Enter隐藏 或 按T就孤立 :")
  11.              (setq de (f:keydown ))                          
  12.          (if (or (= de 84)(= de 116))  ;判断按T键 ascii碼=84 或 t 键  ascii碼=116
  13.                 (progn (princ "\n你按T孤立对象")(c:teg ss) )               ;teg 孤立对象
  14.             (progn (princ "\n你按Enter隐藏对象")(c:teb ss) )           ;teb 隐藏对象
  15.          );end_if                 
  16.     );end_progn

  17.     (progn (princ "\n空选则显示全部") (c:tef)  )                     ; tef 全部取消隐藏

  18. );end_if

  19. );end_defun
  20. (princ "\n<*** 执行指令:tt  功能:选对象 按Enter 隐藏,空选则显示全部,选中对象按T就孤立 ***>")


ttˊˊ6c_chs.lsp
部分程式 ==> 判斷滑鼠按鍵
  1. ;;--------------------------------------------------------------------------

  2. (defun f:keydown ( / key)

  3. (while  (and  (setq key (grread 8))
  4.               (/= (car key) 3)
  5.         (/= (car key) 11)
  6.         (/= (car key) 25)
  7.      ))
  8. (car key)
  9. )

  10. (princ "\n<<--- 多选 --- >> 结束选取请按Enter")
  11. (if (setq ss (ssget))
  12.     (progn
  13.            (princ "\n按滑鼠左键 隐藏,按滑鼠右键孤立:")
  14.              (setq de (f:keydown ))        
  15.          (cond ((= de 3)  
  16.                     (princ "\n你按滑鼠左键 隐藏")(c:teb ss)  ;teb 隐藏对象
  17.          )               
  18.          ((or (= de 11)(= de 25))
  19.                      (princ "\n你按滑鼠右键孤立")(c:teg ss)    ;teg 孤立对象         
  20.          )
  21.          );end_cond     
  22.     );end_progn

  23.     (progn (princ "\n空选则显示全部") (c:tef)  )                     ; tef 全部取消隐藏

  24. );end_if

  25. );end_defun



本帖子中包含更多资源

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

x
发表于 2021-12-18 22:25 | 显示全部楼层
664571221 发表于 2021-12-18 16:23
大神你好你这个是选择对象的,能不能在来一个选择图层的,还有我说的来一个  再做一个选择则只显示,空选全 ...

论坛里有很多啊
快捷键  r1  冻结当前视口图层
(defun c:r1 () (command"layfrz""s""v""v"))

快捷键  r2  冻结其他视口图层
(defun c:r2 (/ ent Layer_name)
(setvar "cmdecho" 0)
(setq ent (entsel "\n请在当前视口选择要冻结其他视口图层的对象: "))
(if ent
(progn
(setq ent (entget (car ent)))
(setq Layer_name (cdr (assoc 8 ent)))))
(if (= (getvar "clayer") Layer_name)
(setvar "clayer" "0"))
(command "vplayer" "f" Layer_name "a" "")
(command "vplayer" "t" Layer_name "c" "")
(princ))

快捷键  r``  隔离图层
(defun c:r``(/ ent)
(prompt "\n请选择要隔离的图层,恢复隔离的图层请直接按右键或空格:")
(if (setq ss (ssget))
(command "_.layiso" ss "")
(command "_.layuniso" ""))
(princ))

快捷键  r`  孤立图层
(defun c:r`(/ q)
(prompt "\n请选择要孤立的图层,显示所有图层请直接按右键或空格:")
(setq ss (ssget))
(if (/= ss nil)
(progn
(setq num (sslength ss))
(setq n 0)
(command "layer" "off" "*" "y" "on" "" "")
(repeat num
(setq entlist (entget (ssname ss n)))
(setq lname (cdr (assoc 8 entlist)))
(command "layer" "on" lname "")
(setq n (+ n 1)))
(prompt (itoa num)))
(command "layer" "on" "*" ""))
(princ))
 楼主| 发表于 2021-12-17 15:56 | 显示全部楼层
本帖最后由 lee50310 于 2023-10-27 09:46 编辑
KO你 发表于 2021-12-17 15:14
大师,这个程序很好,只是操作步骤多了确定
TT选中对象后,一个空格就可以隐藏对象,不用空格再空格
TT没 ...

將原本主程式中 (setq ss (ssget)) 修改為 (setq ss (ssget ":s"))   即可
能單選1次 若要多選1次 壓住滑鼠左鍵拖曳出選取範圍  這樣就可 省掉一個 確定鍵
不過這樣設定 就不能跳著選


;;--------------------------------------------------------------------------
;;<<<--- 主程式 --->>>
(defun c:tt( / ss )
(princ "\n選對象 按Enter 隱藏,空選則顯示全部,選中對象按T就孤立")
(if (setq ss (ssget ":s"))
    (progn
         (if (= (f:keydown "\n按Enter隱藏 或 按T就孤立 : ") 116)  ;判斷按T鍵
                 (progn (princ "\n按T孤立對象")(tg ss) )                  ;tg 孤立對象
                 (progn (princ "\n按Enter隱藏對象")(tb ss) )            ;tb 隱藏對象
         );end_if                 
    );end_progn

    (progn (princ "\n空選則顯示全部") (tf)  )                          ; tf 全部取消隱藏

);end_if

);end_defun
;;--------------------------------------------------------------------------






发表于 2021-12-17 14:44 | 显示全部楼层
再做一个选择则只显示,空选全部显示
发表于 2021-12-17 15:14 | 显示全部楼层
大师,这个程序很好,只是操作步骤多了确定
TT选中对象后,一个空格就可以隐藏对象,不用空格再空格
TT没选对象,一个空格就可以全部显示
TT选中对象,不用空格确定,只按一个T就可以直接孤立
这样省了不少操作
发表于 2021-12-17 15:25 | 显示全部楼层
KO你 发表于 2021-12-17 15:14
大师,这个程序很好,只是操作步骤多了确定
TT选中对象后,一个空格就可以隐藏对象,不用空格再空格
TT没 ...

大师按以下思路操作更方便
输入命令TT选中对象,一个空格或者右键就可以隐藏
输入命令TT选中对象,随意按一个任何键则孤立隔离
输入命令TT空选的情况一个空格则全部显示
不用太多步骤
期待大师们完善,制图民众的福音
 楼主| 发表于 2021-12-17 16:08 | 显示全部楼层
本帖最后由 lee50310 于 2023-10-27 15:28 编辑

這樣改 只能 單選 或 框選(多選: 按滑鼠左鍵拖曳) 就一次選取機會
的確省了一個按Enter步驟
但不能跳著選  (多選時原本功能)  
各有利弊 自行斟酌修改


;;----------------------------------------------------------------------------------
更新
tt6d_chs  或  tt6d_cht.lsp  (鼠標操作)
改為鼠標操作,選擇圖元 左擊鼠鍵隱藏,選擇圖元 右擊鼠鍵孤立。這樣更為便捷








本帖子中包含更多资源

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

x
发表于 2021-12-18 08:17 | 显示全部楼层
这个很好用,谢谢大神
发表于 2021-12-18 12:03 | 显示全部楼层
cad2012及以上都有这个功能吧
发表于 2021-12-18 16:23 | 显示全部楼层
大神你好你这个是选择对象的,能不能在来一个选择图层的,还有我说的来一个  再做一个选择则只显示,空选全部显示
 楼主| 发表于 2021-12-18 18:10 | 显示全部楼层
本帖最后由 lee50310 于 2021-12-19 09:52 编辑
664571221 发表于 2021-12-18 16:23
大神你好你这个是选择对象的,能不能在来一个选择图层的,还有我说的来一个  再做一个选择则只显示,空选全 ...

1.你可比照這架構 把他改成 選擇圖層即可  
2.程式中已經有局部隱藏 及 空選 顯示局部
   因 局部隱藏 也可全選  那空選顯示局部 不就是 顯示全部了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-15 00:08 , Processed in 0.191363 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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