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

[已解決]如何能把object 和文字連繫在一起? (lisp)

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

[已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 salad123 于 2012-06-03, 07:33

想問下有冇方法可以將1個object的面積取出, 而面積的文字又與其object 有一定的連繫
如點選其object 或相關文字, 就可以自動點選其object 及文字, 進行修改 / 刪除
有沒有甚麼方法可以做到?
我不想用attribute, group, block~ 我亦知道可以用insert field~
但這些我也不能用~


salad123 在 2012-06-05, 18:42 作了第 2 次修改
avatar
salad123
一般會員
一般會員

文章總數 : 60
年齡 : 34
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 2783
威望值 : 108
注冊日期 : 2011-01-06
藍鵲407號
男 水瓶座 狗

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 shenhung 于 2012-06-03, 13:28

如果你想用LISP解決的話.
使用反應器(REACTOR).或擴展數據(XDATA),讓物件和文字互榜.!!
網路上有很多參考案例!!
avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4934
威望值 : 904
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 salad123 于 2012-06-03, 14:08

剛剛我在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))
avatar
salad123
一般會員
一般會員

文章總數 : 60
年齡 : 34
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 2783
威望值 : 108
注冊日期 : 2011-01-06
藍鵲407號
男 水瓶座 狗

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 shenhung 于 2012-06-03, 15:24

LEE-MAC 網路上知名度很高的數學玩家!!
http://lee-mac.com/arealabel.html <--面積和文字
http://lee-mac.com/programs.html <-主頁
我想裡面有你想要的資料.對於LISP..
avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4934
威望值 : 904
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 salad123 于 2012-06-03, 15:30

謝謝你~
這個網址很有用!!!!
avatar
salad123
一般會員
一般會員

文章總數 : 60
年齡 : 34
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 2783
威望值 : 108
注冊日期 : 2011-01-06
藍鵲407號
男 水瓶座 狗

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 Tiger&蘋果爸 于 2012-06-04, 02:10

shenhung 寫到:LEE-MAC 網路上知名度很高的數學玩家!!
http://lee-mac.com/arealabel.html <--面積和文字
http://lee-mac.com/programs.html <-主頁
我想裡面有你想要的資料.對於LISP..
謝謝shenhung大的熱情分享~
關於樓主的需求,不知道為何不能使用「功能變數」FIELD指令?
竊喜

____________________________________________________________________________________
avatar
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 17064
年齡 : 41
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照
個性 : 幽默/樂觀/善良
使用年資 : 15↑
使用版本 : AutoCAD 2016
經驗值 : 63868
威望值 : 12639
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i11.servimg.com/u/f11/19/71/67/71/2d3d10.png2D+3D線上 顧問外掛程式 經典問與答讀者 藍鵲1號
2009聚會勳章 2010聚會勳章 2011聚會勳章 2012聚會勳章 2013勳章-2D基礎 2014聚會勳章 2015聚會勳章 2016聚會勳章 串連貼紙成功 男 水瓶座 兔

http://mypaper.pchome.com.tw/kv1012tiger

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 salad123 于 2012-06-04, 16:36

其實見到公司有相似的lisp, 想試試自己編寫出來
以此為練習方法
avatar
salad123
一般會員
一般會員

文章總數 : 60
年齡 : 34
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 2783
威望值 : 108
注冊日期 : 2011-01-06
藍鵲407號
男 水瓶座 狗

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 shenhung 于 2012-06-05, 07:33

代碼:

(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內請搜尋 ---->> 延伸資料群組碼及描述
可參照之.~








avatar
shenhung
高級會員
高級會員

文章總數 : 238
年齡 : 50
來自 : 新北市
職業 : 塑膠模具設計.AUTOLISP
愛好 : 音樂
個性 : 隨和
使用年資 : 18年
使用版本 : 2010
積分 : 15
經驗值 : 4934
威望值 : 904
注冊日期 : 2009-06-03
男 摩羯座 馬

回頂端 向下

回復: [已解決]如何能把object 和文字連繫在一起? (lisp)

發表 由 salad123 于 2012-06-05, 18:41

謝謝你, shenhung~
我慢慢消化下先
我試過了, 同我想要的差不多~
感覺上, 我應該可以學懂它, 然後加以利用
avatar
salad123
一般會員
一般會員

文章總數 : 60
年齡 : 34
來自 : 香港
職業 : 建築
愛好 : 寫lisp
個性 : 追求簡潔, 快捷
使用年資 : 5
使用版本 : 2011
經驗值 : 2783
威望值 : 108
注冊日期 : 2011-01-06
藍鵲407號
男 水瓶座 狗

回頂端 向下

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


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