_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 路徑 ...
插入图块时,能顺带分解图块吗?
页: 1 [2] 3
查看完整版本: < *** 插入block時可預覽block按R,L鍵向右,左轉90度 ***>