lee50310 发表于 2021-6-4 19:02:54

< *** 插入block時可預覽block按R,L鍵向右,左轉90度 ***>

本帖最后由 lee50310 于 2022-4-17 07:06 编辑

最新更新版 tt3b.lsp

1.支援 外部塊插入
2.插入block時;            
         按鍵說明: "\n按I鍵:使用 OSNAP 插入"   
;                         "\n按L鍵:左轉或逆時針"
;                         "\n按R鍵:右轉或順時針"
;                         "\n按F鍵:做鏡像"
;                         "\n按C鍵:取消更換塊"               
;; 按 ENTER- 完成;;

執行指令:tt





lee50310 发表于 2022-4-9 22:40:15

本帖最后由 lee50310 于 2022-4-10 11:48 编辑

    _Levin : 请教下,如果想插入指定图块名,例如图块名为:ABC ,在R键旋转的同时加上F键按图块基点进行左右镜像,之后以图块基点能捕捉到线条插入。该如何编写呢?


請在程式 中 插入 下面程式 (藍色字)   
         ((member (chr key) '("F" "f")) ; 按F鍵 做鏡像
            (vl-cmdf "_.MIRROR" ent "" "_non" (trans ip 0 1) "_non" "@0,1" "_Yes")
             T ; stay in loop
         )
         ;;-------------------------------------------


(部分程式) 修改完成後 :
             ((member (chr key) '("L" "l")) ;按L鍵 左轉或逆時針
             (vl-cmdf "_.rotate" ent "" "_non" ip 90.0)
             T ; stay in loop
         )
         ((member (chr key) '("R" "r")) ; 按R鍵 右轉或順時針
             (vl-cmdf "_.rotate" ent "" "_non" ip -90.0)
             T ; stay in loop
         )                  
                  
         ((member (chr key) '("F" "f")) ; 按F鍵 做鏡像
             (vl-cmdf "_.MIRROR" ent "" "_non" (trans ip 0 1) "_non" "@0,1" "_Yes")
             T ; stay in loop
         )
         ;;-------------------------------------------
         (t (princ "\n無效按鍵. 請輸入 R或F 按鍵 ") T)
         ) ; end cond
      )
      ;;=====================================================

存檔即可







lee50310 发表于 2022-5-9 17:28:25

本帖最后由 lee50310 于 2023-10-16 06:51 编辑

_Levin 发表于 2022-5-7 23:03
插入图块时,能顺带分解图块吗?
先回答你之前的第1個問題

插入預覽塊 ,鎖點問題?
我試了一下 發現執行
   (vl-cmdf "_.-insert" bname "_S" 1.0 "_R" 0.0 "_non" ip)
這 "_non" 可讓塊懸停在滑鼠上但無法讓鎖點穿透
所以執行時 無鎖點功能
不過可以 把 按鍵功能 I 改成有鎖點功能
(藍色字表示在原有程式中增加)

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

       ((member (chr key) '("I" "i")) ;按I鍵: 使用 OSNAP 插入
             (vl-cmdf "_.move" ent "" "_non" lastpt)
             (while (= (logand (getvar "cmdactive") 1) 1)
               (command pause)
             )
                         (entdel entlast)
                         (vl-cmdf "_.-insert" bname "_S" 1.0 "_R" 0.0 "_non" ip)
                        
                         nil ; stay in loop
         )

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

執行說明: 輸入指令:tt
               輸入塊名:xx
               若無旋轉則按 i 鍵
               在你要插入的物體旁點一下 此時會拉出一條虛線與滑鼠上的塊相連
               這時滑鼠上的塊就有鎖點功能 然後將此塊插入你要的物體上

第二個問題 以 按鍵 I 為例 若插入後要順帶分解圖塊
(紅色字表示在原有程式中增加)
;-------------------------------------------------------------

       ((member (chr key) '("I" "i")) ;按I鍵: 使用 OSNAP 插入
             (vl-cmdf "_.move" ent "" "_non" lastpt)
             (while (= (logand (getvar "cmdactive") 1) 1)
               (command pause)
             )
                      (entdel (entlast))
                        (vl-cmdf "_.-insert" bname "_S" 1.0 "_R" 0.0 "_non" ip)                      
                      (vl-cmdf "Explode" (entlast))   ;分解圖塊
                         nil ; stay in loop
         )

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




lee50310 发表于 2022-4-10 17:24:15

本帖最后由 lee50310 于 2022-4-11 12:13 编辑

_Levin 发表于 2022-4-10 16:02
你好,如果CAD文档里已经存在“ABC”这个图块,想直接输入ABC命令调用“ABC”图块,改怎么编写呢?还有可 ...
取消更換塊 按 C 鍵

請修改插入藍色字在程式中 (部份程式):
         ((member (chr key) '("R" "r")) ;按R鍵 右轉或順時針
             (vl-cmdf "_.rotate" ent "" "_non" ip -90.0)
             T ; stay in loop
         )                  
                  
         ((member (chr key) '("F" "f")) ;按F鍵 做鏡像
             (vl-cmdf "_.MIRROR" ent "" "_non" (trans ip 0 1) "_non" "@0,1" "_Yes")
             T ; stay in loop
         )
                  
         ((member (chr key) '("C" "c")) ; 按C鍵取消更換塊
            (while
               (not
                     (or
                     (eq "" (setq bname (getstring t "\n重新輸入圖塊名插入: ")))
                     (tblsearch "BLOCK" bname)
                     )
               );end_not
               (princ "\n圖塊未找到。")
            );end_while
                     (entdel ent)                                                    ;刪除舊塊
            (vl-cmdf "_.-insert" bname "_S" 1.0 "_R" 0.0 "_non" ip);插入新塊
             (setq ent (entlast))
             T ; stay in loop
         )
         ;;-------------------------------------------
         (t (princ "\n無效按鍵. 請輸 I , R ,F 或 C 按鍵 ") T)
         ) ; end cond

yoyoho 发表于 2021-6-4 22:33:22

谢谢! lee50310 分享实用程序!!!!!

czb203 发表于 2021-6-18 14:48:52

谢谢! lee50310 分享实用程序!!!!!

yhly555 发表于 2022-2-15 14:30:46

机、可以插入外部块吗?

qazxswk 发表于 2022-3-16 20:48:47

如果是复制、移动对象呢?

cqu20104225 发表于 2022-3-17 12:26:52

感谢分享,下载学习

bai2000 发表于 2022-3-31 09:55:08

可以插入外部块吗?

lee50310 发表于 2022-4-1 10:30:02

本帖最后由 lee50310 于 2022-4-9 22:34 编辑

bai2000 发表于 2022-3-31 09:55
可以插入外部块吗?
可先插入一次外部塊在圖檔產生此塊後
再執行此程式插入塊名 即可

_Levin 发表于 2022-4-9 22:10:26

请教下,如果想插入指定图块名,例如图块名为:ABC ,在R键旋转的同时加上F键按图块基点进行左右镜像,之后以图块基点能捕捉到线条插入。该如何编写呢?
页: [1] 2 3
查看完整版本: < *** 插入block時可預覽block按R,L鍵向右,左轉90度 ***>