[已解決]如何能把object 和文字連繫在一起? (lisp)
3 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
[已解決]如何能把object 和文字連繫在一起? (lisp)
想問下有冇方法可以將1個object的面積取出, 而面積的文字又與其object 有一定的連繫
如點選其object 或相關文字, 就可以自動點選其object 及文字, 進行修改 / 刪除
有沒有甚麼方法可以做到?
我不想用attribute, group, block~ 我亦知道可以用insert field~
但這些我也不能用~
如點選其object 或相關文字, 就可以自動點選其object 及文字, 進行修改 / 刪除
有沒有甚麼方法可以做到?
我不想用attribute, group, block~ 我亦知道可以用insert field~
但這些我也不能用~
salad123 在 2012-06-06, 01:42 作了第 2 次修改
salad123- 一般會員
- 文章總數 : 61
年齡 : 41
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 5439
威望值 : 108
注冊日期 : 2011-01-06
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
如果你想用LISP解決的話.
使用反應器(REACTOR).或擴展數據(XDATA),讓物件和文字互榜.!!
網路上有很多參考案例!!
使用反應器(REACTOR).或擴展數據(XDATA),讓物件和文字互榜.!!
網路上有很多參考案例!!
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
剛剛我在AfraLISP 這網址, 找到你所提及的reactor
http://www.afralisp.net/visual-lisp/tutorials/reactors-part-3.php
我自己試左一次, 應該就係我所想的~
xdata 我還不知是甚麼~
我再查查看, 謝謝你~
(defun c:5(/ acadoc mspace pt1 pt2 ll l-reactor)
(setvar "cmdecho" 0)
(setq acadoc (vla-get-activedocument (vlax-get-acad-object)))
(setq mspace (vla-get-modelspace acadoc))
(setq pt1 (getpoint "\nSpecify 1st pt: "))
(setq pt2 (getpoint "\nSpecify 2nd pt: " pt1))
(setq ll (vla-addline mspace (vlax-3d-point pt1)(vlax-3d-point pt2)))
(setq l-reactor (vlr-object-reactor (list ll)
"Line Reactor" '((:vlr-modified . print-length))))
(vlr-pers l-reactor) ; 加左依一句, 不斷load 住依個lisp, reactor 就不斷進行
(princ))
(defun print-length (notifier-object reactor-object parameter-list)
(cond ((vlax-property-available-p notifier-object "Length")
(alert (strcat "The Length is now " (rtos (vla-get-length notifier-object))))))
(princ))
http://www.afralisp.net/visual-lisp/tutorials/reactors-part-3.php
我自己試左一次, 應該就係我所想的~
xdata 我還不知是甚麼~
我再查查看, 謝謝你~
(defun c:5(/ acadoc mspace pt1 pt2 ll l-reactor)
(setvar "cmdecho" 0)
(setq acadoc (vla-get-activedocument (vlax-get-acad-object)))
(setq mspace (vla-get-modelspace acadoc))
(setq pt1 (getpoint "\nSpecify 1st pt: "))
(setq pt2 (getpoint "\nSpecify 2nd pt: " pt1))
(setq ll (vla-addline mspace (vlax-3d-point pt1)(vlax-3d-point pt2)))
(setq l-reactor (vlr-object-reactor (list ll)
"Line Reactor" '((:vlr-modified . print-length))))
(vlr-pers l-reactor) ; 加左依一句, 不斷load 住依個lisp, reactor 就不斷進行
(princ))
(defun print-length (notifier-object reactor-object parameter-list)
(cond ((vlax-property-available-p notifier-object "Length")
(alert (strcat "The Length is now " (rtos (vla-get-length notifier-object))))))
(princ))
salad123- 一般會員
- 文章總數 : 61
年齡 : 41
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 5439
威望值 : 108
注冊日期 : 2011-01-06
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
LEE-MAC 網路上知名度很高的數學玩家!!
http://lee-mac.com/arealabel.html <--面積和文字
http://lee-mac.com/programs.html <-主頁
我想裡面有你想要的資料.對於LISP..
http://lee-mac.com/arealabel.html <--面積和文字
http://lee-mac.com/programs.html <-主頁
我想裡面有你想要的資料.對於LISP..
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
謝謝你~
這個網址很有用!!!!
這個網址很有用!!!!
salad123- 一般會員
- 文章總數 : 61
年齡 : 41
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 5439
威望值 : 108
注冊日期 : 2011-01-06
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
謝謝shenhung大的熱情分享~shenhung 寫到:LEE-MAC 網路上知名度很高的數學玩家!!
http://lee-mac.com/arealabel.html <--面積和文字
http://lee-mac.com/programs.html <-主頁
我想裡面有你想要的資料.對於LISP..
關於樓主的需求,不知道為何不能使用「功能變數」FIELD指令?
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
其實見到公司有相似的lisp, 想試試自己編寫出來
以此為練習方法
以此為練習方法
salad123- 一般會員
- 文章總數 : 61
年齡 : 41
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 5439
威望值 : 108
注冊日期 : 2011-01-06
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
- 代碼:
(defun c:tt ()
(vl-load-com)
(setq acaddocument(vla-get-activedocument(vlax-get-acad-object)))
(setq pt (getpoint "\n 點選面積文字放置:"))
(setq EN (CAR(ENTSEL "\n 選取PLINE物件:")))
(command "-BOUNDARY" pt "")
(setq vla-en (cons (vlax-ename->vla-object en) '()))
(if (/= en nil)
(progn
(command "area" "o" en)
(command "layer" "m" "tmp" "c" "1" "" "")
(command "chprop" en "" "la" "tmp" "")
(setq txt (strcat (rtos (/ (getvar "area") 10000) 2 2) "㎡")
)
(command "layer" "m" "AREA-TEXT" "c" "4" "" "")
(command "text" "j" "MC" pt "30" "0" txt)
(setq vla-area-txt (cdr (assoc 5 (entget (entlast)))))))
(setq vla-rot (vlr-pers
(vlr-object-reactor vla-en vla-area-txt
'((:vlr-modified . area-txt))) )
)
(vlr-type vla-rot)
(princ "\n已建立的反應器有: ")
(princ (vlr-reactors))
)
(defun area-txt (notifier-object reactor-object parameter-list)
(setq pl-txt (handent (vlr-data reactor-object)))
(setq txt (vlax-ename->vla-object pl-txt))
(setq obj-area (vla-get-area notifier-object))
(setq txt-nub (strcat (rtos (/ obj-area 10000) 2 2) "㎡") )
(vla-put-TextString txt txt-nub )
)
這是網路上有人寫的面積反應器.範例:
有興趣的可以參考看.
反應器跟FIELD 的差別是..
FIELD 封閉面積變更後.須要更新的動作..
反應器的更新是即時的.封閉面積拖動完畢之後.面積文字一起變更.
這2個不能說.那個比較好.那個比較差.真的是看狀況和須求!!
XDATA.(擴展數據):
((-1 . <圖元名稱: 7e04c050>) (0 . "INSERT") (330 . <圖元名稱: 7e0d4cc0>) (5 .
"5B522") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "29") (100 .
"AcDbBlockReference") (66 . 1) (2 . "bome") (10 564.31 475.366 0.0) (41 .
0.0393701) (42 . 0.0393701) (43 . 0.0393701) (50 . 0.0) (70 . 0) (71 . 0) (44 .
0.0) (45 . 0.0) (210 0.0 0.0 1.0) (-3 ("SHEN-HUANG-BOM" (1002 . "{") (1000 .
"母模板,CAVITY PLATE") (1005 . "B486") (1002 . "}"))))
這是我BOM表內的XDATA數據的部分..可以將DXF 碼嵌入圖元內.以記錄你要記錄的資料..
(1005 . "B486") 這筆資料記錄 氣球的圖元handent name..所以只要我編修.BOM 明細表圖塊內的屬性內容..
經由XDATA 可以取得氣球的圖元Handent name. 以達到氣球跟明細表內屬性資料.同步變更的目的..
反之..編輯氣球..明細表 也一起變更.
xdata 可記錄的資料.help 有詳細資料..
help內請搜尋 ---->> 延伸資料群組碼及描述
可參照之.~
shenhung- 高級會員
- 文章總數 : 281
年齡 : 57
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 8074
威望值 : 1188
注冊日期 : 2009-06-03
回復: [已解決]如何能把object 和文字連繫在一起? (lisp)
謝謝你, shenhung~
我慢慢消化下先
我試過了, 同我想要的差不多~
感覺上, 我應該可以學懂它, 然後加以利用
我慢慢消化下先
我試過了, 同我想要的差不多~
感覺上, 我應該可以學懂它, 然後加以利用
salad123- 一般會員
- 文章總數 : 61
年齡 : 41
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 5439
威望值 : 108
注冊日期 : 2011-01-06
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論 :: 已解決主題精華區
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章