明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: lee50310

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

[复制链接]
 楼主| 发表于 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-5-13 08:55:29 | 显示全部楼层
来晚了 ,可惜!
发表于 2023-3-8 22:41:09 | 显示全部楼层
本帖最后由 bai2000 于 2023-5-19 16:07 编辑

不错,能更改选择图中的图块更好,毕竟“块名”都不好记得,"选择由外部插入图块"的功能怎么用不了啊,搜索到外部块后“确认”自动退出
发表于 2023-10-11 16:49:31 | 显示全部楼层
感谢分享,有一个问题请教一下,插入后旋转,再用I开启捕捉,这样插入块后,想加撤消(command-s ".undo" "be" )  (command-s ".undo" "e" ),但只能撤消到I开启捕捉前那一步,再后退,就一点点移动很多步,这个怎么处理呢,谢谢!
 楼主| 发表于 2023-10-11 19:25:38 | 显示全部楼层
本帖最后由 lee50310 于 2023-10-26 16:09 编辑
sj800918 发表于 2023-10-11 16:49
感谢分享,有一个问题请教一下,插入后旋转,再用I开启捕捉,这样插入块后,想加撤消(command-s ".undo" "b ...

兩種方式 可試試看

;第一種
(command-s "_.undo" "be" )

.
.
(command-s "_.undo" "e" )               
(repeat 3  (command-s "_.undo" "" ))  ;寫3 就退回 3次
.
.

;---------------------------------------------------
;;第二種

.
.
(command-s "_.undo" "m" )         ;在要退回的地方先標記
.
.
(command-s "_.undo" "e" )
(command-s "_.undo" "_back")   ;下此指令執行程序會退回標記處
发表于 2023-10-12 10:04:14 | 显示全部楼层
本帖最后由 sj800918 于 2023-10-12 10:10 编辑

按原始程序测试退回点没有问题,但I键插入后,多了个图形,加入下面这两句后,就出现了退回不正常情况,怎样解决合适呢?
      ((member (chr key) '("I" "i")) ;按I鍵: 使用 OSNAP 插入
             (vl-cmdf "_.move" ent "" "_non" lastpt)
             (while (= (logand (getvar "cmdactive") 1) 1)
               (command pause)
             )
                         (setq obj(car(entlast)))
                         (vl-cmdf "_.-insert" bname "_S" 1.0 "_R" 0.0 "_non" ip)
                         (entdel obj)
                         nil ; stay in loop
           )

本帖子中包含更多资源

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

x
 楼主| 发表于 2023-10-12 10:48:37 | 显示全部楼层
本帖最后由 lee50310 于 2024-2-5 11:01 编辑

要刪除最後一個物體
兩行紅色字 改成
  
(entdel (entlast))

即可
发表于 2023-10-12 16:09:34 | 显示全部楼层
感谢回复!问题已解决
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-12-23 12:37 , Processed in 0.164634 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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