< *** 插入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-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 于 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-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
谢谢! lee50310 分享实用程序!!!!! 谢谢! lee50310 分享实用程序!!!!! 机、可以插入外部块吗? 如果是复制、移动对象呢? 感谢分享,下载学习 可以插入外部块吗? 本帖最后由 lee50310 于 2022-4-9 22:34 编辑
bai2000 发表于 2022-3-31 09:55
可以插入外部块吗?
可先插入一次外部塊在圖檔產生此塊後
再執行此程式插入塊名 即可
请教下,如果想插入指定图块名,例如图块名为:ABC ,在R键旋转的同时加上F键按图块基点进行左右镜像,之后以图块基点能捕捉到线条插入。该如何编写呢?