AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~

[討論]看不懂的LISP

上一篇主題 下一篇主題 向下

[討論]看不懂的LISP

發表 由 Alanlam 于 2012-09-12, 15:02

(defun ax:RenameBlock (doc bn nn / layout i)
(vlax-for layout (vla-get-layouts doc)
(vlax-for i (vla-get-block layout)
(if (and
(= (vla-get-objectname i) "AcDbBlockReference")
(= (strcase (vla-get-name i)) (strcase bn))
)
(vla-put-name i nn)
)
)
)
)


有大大可以解釋一下
avatar
Alanlam
一般會員
一般會員

文章總數 : 24
年齡 : 29
來自 : 中國
職業 : 學生
愛好 : 足球
個性 : 害羞
使用年資 : 4
使用版本 : 2012
經驗值 : 2093
威望值 : 0
注冊日期 : 2012-07-22
男 雙子座 龍

回頂端 向下

回復: [討論]看不懂的LISP

發表 由 pizg 于 2012-09-14, 04:03

ax:RenameBlock 是用來置換圖塊參考物件的.
我們都知道重新定義圖塊可以快速更換圖面中的圖塊圖形,
這個函式類似這樣的功能.

它須要三個參數 doc bn nn
doc 文件物件
bn 來源圖塊參考名稱
nn 目標圖塊參考名稱

使用這個函式時要注意其目標圖塊參考名稱必須是既存於圖面中才行.
下列是該函式的用法

;;2012-09-14 by PizG
(defun C:ReplaceBlock(/ doc ent bn nn)
(vl-load-com)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-Object)))
(if (and (setq ent (entsel "\n選取來源圖塊:"))
(setq dxf (entget (car ent)))
(= (cdr (assoc 0 dxf)) "INSERT")
(setq bn (cdr (assoc 2 dxf)))
(/= (setq nn (getstring "\n目標圖塊名稱:")) "")
(tblsearch "BLOCK" nn)
)
(ax:RenameBlock doc bn nn)
)
(princ)
)
avatar
pizg
高級會員
高級會員

文章總數 : 253
年齡 : 52
來自 : 桃園縣
職業 : 建築設計;程式設計
愛好 : 音樂;攝影;繪畫;棋奕;電腦
個性 : 隨和
使用年資 : 20↑
使用版本 : 2010
積分 : 10
經驗值 : 4141
威望值 : 320
發帖精華 : 1
注冊日期 : 2010-04-16
串連貼紙成功 男 摩羯座 龍

回頂端 向下

上一篇主題 下一篇主題 回頂端


 
這個論壇的權限:
無法 在這個版面回復文章