明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4019|回复: 29

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

[复制链接]
发表于 2021-6-4 19:02:54 | 显示全部楼层 |阅读模式
本帖最后由 lee50310 于 2022-4-17 07:06 编辑

最新更新版 tt3b.lsp

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

執行指令:tt





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 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
        )
        ;;=====================================================

存檔即可







回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 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
           )

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




 楼主| 发表于 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

发表于 2021-6-4 22:33:22 | 显示全部楼层
谢谢! lee50310 分享实用程序!!!!!
发表于 2021-6-18 14:48:52 | 显示全部楼层
谢谢! lee50310 分享实用程序!!!!!
发表于 2022-2-15 14:30:46 | 显示全部楼层
机、可以插入外部块吗?
发表于 2022-3-16 20:48:47 | 显示全部楼层
如果是复制、移动对象呢?
发表于 2022-3-17 12:26:52 | 显示全部楼层
感谢分享,下载学习
发表于 2022-3-31 09:55:08 | 显示全部楼层
可以插入外部块吗?
 楼主| 发表于 2022-4-1 10:30:02 | 显示全部楼层
本帖最后由 lee50310 于 2022-4-9 22:34 编辑
bai2000 发表于 2022-3-31 09:55
可以插入外部块吗?

可先插入一次外部塊在圖檔產生此塊後
再執行此程式插入塊名 即可
发表于 2022-4-9 22:10:26 | 显示全部楼层
请教下,如果想插入指定图块名,例如图块名为:ABC ,在R键旋转的同时加上F键按图块基点进行左右镜像,之后以图块基点能捕捉到线条插入。该如何编写呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-5 23:18 , Processed in 0.195072 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表