[分享]lisp初階學習成果發表-圖塊小小應用(複製&互換)
4 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[分享]lisp初階學習成果發表-圖塊小小應用(複製&互換)
決定開始學lisp,這2個月來,於利用工作閒霞之際,加上不斷上網觀摩跟版上偷師,借力使力,終於有一點點的小成果,分享給有需要的會友。
小小程式,希望兄姐弟妹能賜教。
圖塊互換:
(defun c:bkchange()
(setq bk1(entsel"請選取圖塊1"))
(setq bk1_data(entget(car bk1)))
(setq bk1_old(assoc 2 bk1_data))
(setq bk2(entsel"請選取圖塊2"))
(setq bk2_data(entget(car bk2)))
(setq bk2_old(assoc 2 bk2_data))
(setq bk1_data (subst bk2_old bk1_old bk1_data))
(setq bk2_data (subst bk1_old bk2_old bk2_data))
(entmod bk1_data)(entmod bk2_data)
)
圖塊複製:
(defun c:bkcopy()
(setq bk1(entsel"請選取圖塊"))
(setq bk1_data(entget(car bk1)))
(setq bk1_old(assoc 2 bk1_data))
(setq bk2(ssget))
(setq bk2_qu(sslength bk2))
(setq i 0)
(while (< i bk2_qu)
(setq bk2_data(entget(ssname bk2 i)))
(setq bk2_new(assoc 2 bk2_data))
(setq bk2_data (subst bk1_old bk2_new bk2_data))
(entmod bk2_data)
(setq i(1+ i))
);while 結束
)
小小程式,希望兄姐弟妹能賜教。
圖塊互換:
(defun c:bkchange()
(setq bk1(entsel"請選取圖塊1"))
(setq bk1_data(entget(car bk1)))
(setq bk1_old(assoc 2 bk1_data))
(setq bk2(entsel"請選取圖塊2"))
(setq bk2_data(entget(car bk2)))
(setq bk2_old(assoc 2 bk2_data))
(setq bk1_data (subst bk2_old bk1_old bk1_data))
(setq bk2_data (subst bk1_old bk2_old bk2_data))
(entmod bk1_data)(entmod bk2_data)
)
圖塊複製:
(defun c:bkcopy()
(setq bk1(entsel"請選取圖塊"))
(setq bk1_data(entget(car bk1)))
(setq bk1_old(assoc 2 bk1_data))
(setq bk2(ssget))
(setq bk2_qu(sslength bk2))
(setq i 0)
(while (< i bk2_qu)
(setq bk2_data(entget(ssname bk2 i)))
(setq bk2_new(assoc 2 bk2_data))
(setq bk2_data (subst bk1_old bk2_new bk2_data))
(entmod bk2_data)
(setq i(1+ i))
);while 結束
)
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5362
威望值 : 204
注冊日期 : 2013-08-31
回復: [分享]lisp初階學習成果發表-圖塊小小應用(複製&互換)
請問一下,這個功能適合用在那呢??如能舉例或許能較了解他的作用,謝謝。
hueigo- 初級會員
- 文章總數 : 94
年齡 : 59
來自 : 台中
職業 : 建築設計師
愛好 : 圍棋
個性 : 平實
使用年資 : 15
使用版本 : 2013
積分 : 4
經驗值 : 4937
威望值 : 121
注冊日期 : 2012-10-01
回復: [分享]lisp初階學習成果發表-圖塊小小應用(複製&互換)
第一個可以參考顧問的外掛程式,也有類似操作影片[物件互換]喔~hueigo 寫到:請問一下,這個功能適合用在那呢??如能舉例或許能較了解他的作用,謝謝。
[物件互換]ObjectChange指令:選取目標一物件及目標二物件,以物件基準點進行互換動作。
第二個可以參考顧問的外掛程式,也有類似操作影片[圖塊置換]喔~
[圖塊置換]MATBlock指令:將所選來源圖塊物件,置換套用至其他目標圖塊物件。
AutoCAD顧問外掛程式 - 圖塊應用工具操作 (上)
https://www.autocad-tw.com/t14841-topic
ACADAdviser外掛程式 - 圖塊應用工具說明
https://www.autocad-tw.com/t14820-topic
____________________________________________________________________________________
👉[訂購]AutoCAD圖塊大師課程(點我)👈
回復: [分享]lisp初階學習成果發表-圖塊小小應用(複製&互換)
謝謝蘋果爸幫我說明。
這個小程式要跟大師跟比較,還天差地遠呢,呵呵
這個小程式要跟大師跟比較,還天差地遠呢,呵呵
蔣秉澔- 初級會員
- 文章總數 : 211
年齡 : 47
來自 : 嘉義市
職業 : 大電力系統設計、製程、檢測
愛好 : 電腦相關,出遊踏青
個性 : 待人隨和,對事執著
使用年資 : 8年
使用版本 : 2011 Electrical,2014
積分 : 4
經驗值 : 5362
威望值 : 204
注冊日期 : 2013-08-31
回復: [分享]lisp初階學習成果發表-圖塊小小應用(複製&互換)
版大...
小弟我也有寫一樣的東西喲...
以下為圖塊替換程式碼...
; 本程式為圖塊替換輔助小工具(B圖塊變更為A圖塊)
; 支援軟體版本("AutoCAD")
; 設計者:Devin,Chou
; 版權所有,歡迎使用
; Rev.2(2014/12/01)
; 進版說明: 1.程式碼精簡 2.圖塊替換後比例維持不變
(defun C:bks (/ ba ba_n ba_x ba_y ba_z
bb bb_d bb_n bb_x bb_y bb_z )
(setvar "cmdecho" 0 )
(setq ba (entsel "\n選取來源圖塊:" ))
(setq ba_n
(assoc 2
(entget (car ba ))
))
(setq ba_x
(assoc 41
(entget (car ba ))
))
(setq ba_y
(assoc 42
(entget (car ba ))
))
(setq ba_z
(assoc 43
(entget (car ba ))
))
(while
(setq bb (entsel "\n選取目的圖塊:" ))
(setq bb_d (entget (car bb )))
(setq bb_n
(assoc 2 bb_d ))
(setq bb_x
(assoc 41 bb_d ))
(setq bb_y
(assoc 42 bb_d ))
(setq bb_z
(assoc 43 bb_d ))
(setq bb_d
(subst ba_n bb_n bb_d ))
(setq bb_d
(subst ba_x bb_x bb_d ))
(setq bb_d
(subst ba_y bb_y bb_d ))
(setq bb_d
(subst ba_z bb_z bb_d ))
(entmod bb_d )
) ; while
(prin1)
) ; end
(princ "\nC:bks(2版)")
(prin1)
以下為圖塊位置互換程式碼...
; 本程式為圖塊位置互換輔助小工具(A.B圖塊位置互換)
; 支援軟體版本("AutoCAD")
; 設計者:Devin,Chou
; 版權所有,歡迎使用
; Rev.2(2014/12/11)
; 進版說明: -.程式碼精簡
(defun C:bkab (/ ba ba_d ba_ne
bb bb_d bb_ne )
(setvar "cmdecho" 0 )
(while
(setq ba (entsel "\n選取圖塊(A):" ))
(setq ba_d (entget (car ba )))
(setq ba_ne
(assoc 10 ba_d ))
(setq bb (entsel "\n選取圖塊(B):" ))
(setq bb_d (entget (car bb )))
(setq bb_ne
(assoc 10 bb_d ))
(setq ba_d
(subst bb_ne ba_ne ba_d ))
(setq bb_d
(subst ba_ne bb_ne bb_d ))
(entmod ba_d )
(entmod bb_d )
) ; while
(prin1)
) ; end
(princ "\nC:bkab(2版)")
(prin1)
小弟我也有寫一樣的東西喲...
以下為圖塊替換程式碼...
; 本程式為圖塊替換輔助小工具(B圖塊變更為A圖塊)
; 支援軟體版本("AutoCAD")
; 設計者:Devin,Chou
; 版權所有,歡迎使用
; Rev.2(2014/12/01)
; 進版說明: 1.程式碼精簡 2.圖塊替換後比例維持不變
(defun C:bks (/ ba ba_n ba_x ba_y ba_z
bb bb_d bb_n bb_x bb_y bb_z )
(setvar "cmdecho" 0 )
(setq ba (entsel "\n選取來源圖塊:" ))
(setq ba_n
(assoc 2
(entget (car ba ))
))
(setq ba_x
(assoc 41
(entget (car ba ))
))
(setq ba_y
(assoc 42
(entget (car ba ))
))
(setq ba_z
(assoc 43
(entget (car ba ))
))
(while
(setq bb (entsel "\n選取目的圖塊:" ))
(setq bb_d (entget (car bb )))
(setq bb_n
(assoc 2 bb_d ))
(setq bb_x
(assoc 41 bb_d ))
(setq bb_y
(assoc 42 bb_d ))
(setq bb_z
(assoc 43 bb_d ))
(setq bb_d
(subst ba_n bb_n bb_d ))
(setq bb_d
(subst ba_x bb_x bb_d ))
(setq bb_d
(subst ba_y bb_y bb_d ))
(setq bb_d
(subst ba_z bb_z bb_d ))
(entmod bb_d )
) ; while
(prin1)
) ; end
(princ "\nC:bks(2版)")
(prin1)
以下為圖塊位置互換程式碼...
; 本程式為圖塊位置互換輔助小工具(A.B圖塊位置互換)
; 支援軟體版本("AutoCAD")
; 設計者:Devin,Chou
; 版權所有,歡迎使用
; Rev.2(2014/12/11)
; 進版說明: -.程式碼精簡
(defun C:bkab (/ ba ba_d ba_ne
bb bb_d bb_ne )
(setvar "cmdecho" 0 )
(while
(setq ba (entsel "\n選取圖塊(A):" ))
(setq ba_d (entget (car ba )))
(setq ba_ne
(assoc 10 ba_d ))
(setq bb (entsel "\n選取圖塊(B):" ))
(setq bb_d (entget (car bb )))
(setq bb_ne
(assoc 10 bb_d ))
(setq ba_d
(subst bb_ne ba_ne ba_d ))
(setq bb_d
(subst ba_ne bb_ne bb_d ))
(entmod ba_d )
(entmod bb_d )
) ; while
(prin1)
) ; end
(princ "\nC:bkab(2版)")
(prin1)
devinchou- 初級會員
- 文章總數 : 56
年齡 : 46
來自 : 基隆
職業 : 鋼筋檢料
愛好 : 寫作.閱讀.烹飪
個性 : 懶小孩一枚
使用年資 : 每天
使用版本 : 2006.2008
積分 : 3
經驗值 : 4039
威望值 : 192
注冊日期 : 2015-02-15
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章