_Levin
发表于 2022-4-10 16:02:21
lee50310 发表于 2022-4-9 22:40
請在程式 中 插入 下面程式 (藍色字)
((member (chr key) '("F" "f")) ; 按 ...
你好,如果CAD文档里已经存在“ABC”这个图块,想直接输入ABC命令调用“ABC”图块,改怎么编写呢?还有可以先进行捕捉吗?然后按那个I才是取消捕捉
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
lee50310
发表于 2022-4-11 12:17:08
本帖最后由 lee50310 于 2022-4-15 22:16 编辑
更新版 tt2.lsp
1.支援 外部 塊插入
2.插入block時
按鍵說明: "\n按I鍵:使用 OSNAP 插入" ;
"\n按L鍵:左轉或逆時針"
"\n按R鍵:右轉或順時針"
"\n按F鍵:做鏡像"
"\n按C鍵:取消更換塊"
按 ENTER- 完成;;
_Levin
发表于 2022-4-15 16:59:49
lee50310 发表于 2022-4-11 12:17
最新更新版 tt2.lsp
1.支援 外部 塊插入
2.插入block時
经测试,我这边显示:参数类型错误: numberp: nil
比如输入TT命令,不用去找图块位置,直接调用D盘下的“ABC.dwg”图块,并启动捕捉进行插入,按I键取消插入捕捉,其他功能不动,
该怎么写呢?望大师指导下,谢谢
alexmai
发表于 2022-4-15 17:50:28
经测试 cad 2012 ; 错误:参数类型错误: numberp: nil
lee50310
发表于 2022-4-15 22:18:15
本帖最后由 lee50310 于 2022-4-17 07:07 编辑
alexmai 发表于 2022-4-15 17:50
经测试 cad 2012 ; 错误:参数类型错误: numberp: nil
已做修正
更新版 tt3.lsp
請重新下載
nochao
发表于 2022-4-16 22:41:25
选择外部块后提示:; 错误: 参数类型错误: numberp: nil
lee50310
发表于 2022-4-17 07:10:58
本帖最后由 lee50310 于 2022-4-17 22:10 编辑
nochao 发表于 2022-4-16 22:41
选择外部块后提示:; 错误: 参数类型错误: numberp: nil
很抱歉! 在cad2018 測試皆正常 未看到錯誤
只能將程式 略做調整 更新版為 tt3b.lsp
請重新下載,測試看看
假設還是不行 請將 外部插入 exp_insert 改成 19樓方法
lee50310
发表于 2022-4-17 08:21:04
本帖最后由 lee50310 于 2022-4-17 09:51 编辑
_Levin 发表于 2022-4-15 16:59
经测试,我这边显示:参数类型错误: numberp: nil
比如输入TT命令,不用去找图块位置,直接调用D盘下的 ...
如果 你的所有圖塊 都放在同一個目錄下 例: D:\BLK
若輸入塊名不在圖檔內 則程式會自動從此 D:\BLK 路徑去找並載入此塊
原本程式可改成 (藍色字表示在原有程式中 需要 新增或修改 的地方)
;------------------------------------------------------
(defun exp_insert2 ()
(setq path "D:\\BLK\\")
(setq UserFile (strcat path bname ".dwg"))
(vl-cmdf "_.INSERT" UserFile'(0 0) "" "" "")
(vl-cmdf "_.ERASE" (entlast) "")
)
;-------------------------------------------------------
;<--- 主程式--->
(defun c:tt ( / key grr ip lastpt ent)
(setvar "cmdecho" 0)
(while
(not
(and
(setq bname (getstring T "\n輸入圖塊名稱:"))
(if (not(tblsearch "BLOCK" bname))(progn (exp_insert2) T) T) ;圖檔內無此塊改由外部插入
);end_end
);end_not
);end_while
;---------------------------------------------------------
_Levin
发表于 2022-5-7 23:03:42
本帖最后由 _Levin 于 2022-5-9 16:08 编辑
lee50310 发表于 2022-4-17 08:21
如果 你的所有圖塊 都放在同一個目錄下 例: D:\BLK
若輸入塊名不在圖檔內 則程式會自動從此 D:\BLK 路徑 ...
插入图块时,能顺带分解图块吗?