lee50310 发表于 2021-12-17 11:50:47

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

本帖最后由 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鍵,能支持大小寫
;----------------------------------------------------------

                           


lee50310 发表于 2023-10-27 14:08:32

本帖最后由 lee50310 于 2023-10-27 14:24 编辑

muai2010 发表于 2023-10-27 13:48
现在不闪退了,但是孤立和隐藏的效果是一样的了,按t也是隐藏了

请教下键盘上字母对应的f:keydown值是 ...
tt5c_chs.lsp
部分程式 ==> 判斷按鍵
;----------------------------------------------------

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

(defun f:keydown ( / key)
;(princ prm)
(while (/= (car (setq key (grread 10))) 2))
(cadr key)
)


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

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

);end_if

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

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

(defun f:keydown ( / key)

(while(and(setq key (grread 8))
            (/= (car key) 3)
      (/= (car key) 11)
      (/= (car key) 25)
   ))
(car key)
)

(princ "\n<<--- 多选 --- >> 结束选取请按Enter")
(if (setq ss (ssget))
    (progn
         (princ "\n按滑鼠左键 隐藏,按滑鼠右键孤立:")
             (setq de (f:keydown ))      
         (cond ((= de 3)
                  (princ "\n你按滑鼠左键 隐藏")(c:teb ss);teb 隐藏对象
         )               
         ((or (= de 11)(= de 25))
                     (princ "\n你按滑鼠右键孤立")(c:teg ss)    ;teg 孤立对象         
         )
         );end_cond   
    );end_progn

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

);end_if

);end_defun


KO你 发表于 2021-12-18 22:25:24

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))

lee50310 发表于 2021-12-17 15:56:58

本帖最后由 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
;;--------------------------------------------------------------------------






664571221 发表于 2021-12-17 14:44:23

再做一个选择则只显示,空选全部显示

KO你 发表于 2021-12-17 15:14:02

大师,这个程序很好,只是操作步骤多了确定
TT选中对象后,一个空格就可以隐藏对象,不用空格再空格
TT没选对象,一个空格就可以全部显示
TT选中对象,不用空格确定,只按一个T就可以直接孤立
这样省了不少操作

KO你 发表于 2021-12-17 15:25:47

KO你 发表于 2021-12-17 15:14
大师,这个程序很好,只是操作步骤多了确定
TT选中对象后,一个空格就可以隐藏对象,不用空格再空格
TT没 ...

大师按以下思路操作更方便
输入命令TT选中对象,一个空格或者右键就可以隐藏
输入命令TT选中对象,随意按一个任何键则孤立隔离
输入命令TT空选的情况一个空格则全部显示
不用太多步骤
期待大师们完善,制图民众的福音

lee50310 发表于 2021-12-17 16:08:54

本帖最后由 lee50310 于 2023-10-27 15:28 编辑

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


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








999999 发表于 2021-12-18 08:17:15

这个很好用,谢谢大神

cqf1980 发表于 2021-12-18 12:03:46

cad2012及以上都有这个功能吧

664571221 发表于 2021-12-18 16:23:13

大神你好你这个是选择对象的,能不能在来一个选择图层的,还有我说的来一个再做一个选择则只显示,空选全部显示

lee50310 发表于 2021-12-18 18:10:50

本帖最后由 lee50310 于 2021-12-19 09:52 编辑

664571221 发表于 2021-12-18 16:23
大神你好你这个是选择对象的,能不能在来一个选择图层的,还有我说的来一个再做一个选择则只显示,空选全 ...
1.你可比照這架構 把他改成 選擇圖層即可
2.程式中已經有局部隱藏 及 空選 顯示局部
   因 局部隱藏 也可全選那空選顯示局部 不就是 顯示全部了!
页: [1] 2 3 4 5 6 7 8
查看完整版本: <<*** TT就可以選物件隱藏,空選則顯示全部,... ***>>>