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

Join the forum, it's quick and easy

AutoCAD顧問
還沒有註冊嗎...即日起免費註冊,所有最完整的AutoCAD討論、教學及資源都在論壇裡喔~
AutoCAD顧問
Would you like to react to this message? Create an account in a few clicks or log in to continue.
【回帖精華】圖塊自訂性質參數 Aoe1-113【回帖精華】圖塊自訂性質參數 Ioaoe110【回帖精華】圖塊自訂性質參數 2020-310【回帖精華】圖塊自訂性質參數 Oiu15010【回帖精華】圖塊自訂性質參數 2020-211【回帖精華】圖塊自訂性質參數 Ia15010【回帖精華】圖塊自訂性質參數 Aizyao10【回帖精華】圖塊自訂性質參數 Uos15010【回帖精華】圖塊自訂性質參數 BPl3tjj【回帖精華】圖塊自訂性質參數 Ziao1510
【回帖精華】圖塊自訂性質參數 Aoe15010【回帖精華】圖塊自訂性質參數 Oo-2-110【回帖精華】圖塊自訂性質參數 Zuoiy_10【回帖精華】圖塊自訂性質參數 Aizyao11【回帖精華】圖塊自訂性質參數 Iyb_1510【回帖精華】圖塊自訂性質參數 Aoe1-112【回帖精華】圖塊自訂性質參數 Uos15011【回帖精華】圖塊自訂性質參數 Aoe2da10【回帖精華】圖塊自訂性質參數 Aoe2da11【回帖精華】圖塊自訂性質參數 Aoe10

【回帖精華】圖塊自訂性質參數

+2
Tiger&蘋果爸
hoiyen
6 posters

向下

【回帖精華】圖塊自訂性質參數 Empty 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-02, 18:34

大家好!!
我本身工作是繪製水電圖說
常常會繪製像 燈具 插座 出線口...等等
每次在算數量時總是很麻煩的一個個算
早期我想到一個方式,就是把我所有會用到的設備都變成圖塊
每一個設備都有單一的圖層
例如: 40W*4的T-bar燈具 我就做成一圖塊一個圖層
最後算數量時我只要這張圖全選->快速選取->就可算出我設備數量
但管線卻一直只用 量測工具 去算我管線長度
最近發現可以用Lisp程式解決這問題
真是讓我太感動了...

現在我還有一個問題,就是我在繪製電力迴路時
負載也是很重要的考量,關係到可以連接多少設備
我一直在試可是還沒找出方法
就是我的設備都是圖塊,有沒方法可以另外定義它一個數值
例如:40W*4的T-bar燈具 它這圖塊可不可以把它另定義成160W的耗電量
這樣每串連完一個迴路,我想把這迴路圖塊全選起,它就可以自動把這迴路
所有的圖塊的數值加總起來
例如:40W*4的T-bar燈具我共用了8盞,總負載共1280W <-這是我想要得到的數字
不知各位先進有沒什麼好意見可以提供嗎? 頭暈目眩

----------------------------------------------------------------------------------------
解決方式:
竊喜 我整理一下這方法步驟:

1.attdef先定義屬性文字 (標籤:power 預設:輸入 值 ; 模式:不可見,預置)
2.與圖形定義成圖塊
3.執行Lisp程式(powersum)
4.選取要計算之圖塊計算出結果

Lisp程式 (虛線以下)
----------------------------------------------------------------------------------------
(vl-load-com)
(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
(princ "\n選取圖塊加總功率 \n")
(setq ssBlock (ssget '((0 . "INSERT"))))
(setq intIncrement 0
dblAttTotal 0
)
(repeat (sslength ssBlock)
(setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
(foreach objAttribute (vlax-invoke objBlock "getattributes")
(if (= (strcase (vla-get-tagstring objAttribute))
(strcase "POWER")
)
(progn
(setq strValue (vla-get-textstring objAttribute))
(setq dblAttTotal (+ (atof strValue) dblAttTotal))
)
)
)
(setq intIncrement (1+ intIncrement))
)
(prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
(princ)
)

-----------------------------------------------------------------------------

另補充管線計算方式,給需要的人
1.將所有連接 燈具,插座 的線,弧等全都設定在同一圖層
2.運用cad 快速選取功能選擇 多重,管線設定之圖層
3.執行管線Lisp程式 sum
4.即可計算出管線之總長度

sum 之 Lisp 程式 (虛線以下)
----------------------------------------------------------------------------------
(defun C:sum(/ sumlen ss n curve ObjectName len)
(princ"\n統計<直線、圓弧、多義線、樣條線、圓、橢圓>等圖元的長度")
(princ"\n For 中華鋼結構論壇 \n 版本2004.03.03")
(vl-load-com)
(setq sumlen 0)
(setq ss (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
(setq n 0)
(repeat (sslength ss)
(setq curve (vlax-ename->vla-object (ssname ss n)))
(setq ObjectName (vlax-get-property curve 'ObjectName))
(setq ObjectName (substr ObjectName 5))
(setq len (vlax-curve-getdistatparam curve (vlax-curve-getendparam curve) ))
(setq sumlen (+ sumlen len))
(setq n (1+ n))

(princ (strcat "\n第" (rtos n) "條是 " ObjectName ))
(princ (strcat " 長度: " (rtos len 2 5)))
)
(princ (strcat "\n共" (rtos n) "條 " ))
(princ (strcat "總長度: " (rtos sumlen 2 5)))
(textscr)
(princ)
)
---------------------------------------------------------------------------


Tiger&蘋果爸 在 2010-05-06, 09:19 作了第 13 次修改 (原因 : 更改主題顏色)
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 Tiger&蘋果爸 2010-05-03, 10:59

主題類型若為詢問方向或討論功能,請在主題前請加入[討論],顏色請指定為[綠色]。討論主題沒有時間限制。
【回帖精華】圖塊自訂性質參數 J0250d

[說明]發表主題前,請遵守相關要領!
http://autocad.bestoforum.net/forum-f12/topic-t1521.htm

謝謝您的配合~

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21382
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90361
威望值 : 17197
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.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

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 jack0615.tw 2010-05-03, 20:38

我用2008版試了一下

1.attdef先定義屬性文字
2.加上圖形block定義成圖塊
3.insert插入圖塊,並輸入您要的數值
4.複製圖塊
5.ddedit修改屬性文字內容
6.不同迴路改成不同圖層(關閉或凍結,只留下要選取的圖層)
7.eattext轉成xls檔案(記得選在目前的圖面中)

這樣是不是您要的呢?

Tiger&蘋果爸 寫到:讚啦!! 謝謝熱心回覆~< 積分 +1>
[公告]關於團隊成員的回文及貢獻


Tiger&蘋果爸 在 2010-05-04, 09:12 作了第 1 次修改 (原因 : 加分囉~)
jack0615.tw
jack0615.tw
中級會員
中級會員

文章總數 : 206
年齡 : 63
來自 : Taipei
職業 : 可憐的上班族
愛好 : 照相
個性 : 善良
使用年資 : 3
使用版本 : 2011&2012
積分 : 7
經驗值 : 6399
威望值 : 383
注冊日期 : 2010-03-07
經典問與答讀者 藍鵲7號
男 天秤座 牛

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-03, 22:22

jack0615.tw 寫到:我用2008版試了一下

1.attdef先定義屬性文字
2.加上圖形block定義成圖塊
3.insert插入圖塊,並輸入您要的數值
4.複製圖塊
5.ddedit修改屬性文字內容
6.不同迴路改成不同圖層(關閉或凍結,只留下要選取的圖層)
7.eattext轉成xls檔案(記得選在目前的圖面中)

這樣是不是您要的呢?

感謝您!! 可能是我沒說清楚
我是想要在cad上的每一個圖塊都可以對應一個數值
當我把這些圖塊框選在一起資料匯出,自動把圖塊相對應的數值加總起來
不知這在cad辦不辦得到呀?
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 Tiger&蘋果爸 2010-05-04, 09:10

hoiyen 寫到:
jack0615.tw 寫到:我用2008版試了一下

1.attdef先定義屬性文字
2.加上圖形block定義成圖塊
3.insert插入圖塊,並輸入您要的數值
4.複製圖塊
5.ddedit修改屬性文字內容
6.不同迴路改成不同圖層(關閉或凍結,只留下要選取的圖層)
7.eattext轉成xls檔案(記得選在目前的圖面中)

這樣是不是您要的呢?

感謝您!! 可能是我沒說清楚
我是想要在cad上的每一個圖塊都可以對應一個數值
當我把這些圖塊框選在一起資料匯出,自動把圖塊相對應的數值加總起來
不知這在cad辦不辦得到呀?
我想這是客製化需求,必須透過lisp才能滿足!!
所以AutoCAD只能按照 jack0615.tw 滿足部份需求~

____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
編輯個人資料 Sesa2011 編輯個人資料 Youtub11 編輯個人資料 Oiea2011 編輯個人資料 Oe20011 編輯個人資料 Fbi20011 編輯個人資料 Line2011
Tiger&蘋果爸
Tiger&蘋果爸
系統管理員
系統管理員

文章總數 : 21382
年齡 : 48
來自 : 台北市文山區
職業 : AutoCAD顧問
愛好 : 蹓狗/戶外活動/拍照/吸貓
個性 : 幽默/樂觀/善良
使用年資 : 20↑
使用版本 : AutoCAD 2022
經驗值 : 90361
威望值 : 17197
注冊日期 : 2008-04-23
2D基礎函授 2D進階函授 3D基礎函授 https://i.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

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 leoneriol 2010-05-04, 09:39

小弟我對這個議題很感興趣....因為我也是畫電機圖說的

不過我在工作上的經驗不是很充足,所以在圖塊製作的考量方面常常缺東缺西的

不知道hoiyen是否本身也是會寫lisp呢??希望能跟您配合討論....

再請問1280W是否要匯出到EXCEL或是做照度的計算呢?

還有能否提供簡單的圖片說明您的需求呢?...這樣問題會再清楚一點

____________________________________________________________________________________
丑角之日
堅持~!才會有價值~!
讚啦!!
【回帖精華】圖塊自訂性質參數 Ioaoe110 【回帖精華】圖塊自訂性質參數 Zuoiy_10 【回帖精華】圖塊自訂性質參數 2020-211 【回帖精華】圖塊自訂性質參數 Aizyao11 【回帖精華】圖塊自訂性質參數 Iyb_1510
【回帖精華】圖塊自訂性質參數 Aizyao10 【回帖精華】圖塊自訂性質參數 BPl3tjj.png 【回帖精華】圖塊自訂性質參數 Ziao1510 【回帖精華】圖塊自訂性質參數 Oo-2-110 【回帖精華】圖塊自訂性質參數 Oooa_110
leoneriol
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9200
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 jack0615.tw 2010-05-04, 10:05

根據樓主的敘述以前有接觸過lisp,底下這個範例是將值帶入圖塊的屬性,跟您要取出屬性值計算應該蠻類似的,請參考。

http://www.cadtutor.co.uk/forum/showthread.php?t=17246
jack0615.tw
jack0615.tw
中級會員
中級會員

文章總數 : 206
年齡 : 63
來自 : Taipei
職業 : 可憐的上班族
愛好 : 照相
個性 : 善良
使用年資 : 3
使用版本 : 2011&2012
積分 : 7
經驗值 : 6399
威望值 : 383
注冊日期 : 2010-03-07
經典問與答讀者 藍鵲7號
男 天秤座 牛

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 DevilWang 2010-05-04, 12:03

圖塊屬性設定如下圖
【回帖精華】圖塊自訂性質參數 201005041

配合以下Lisp取出該屬性總和:
代碼:

(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
  (princ "\n選取圖塊加總功率 \n")
  (setq ssBlock (ssget '((0 . "INSERT"))))
  (setq   intIncrement 0
   dblAttTotal  0
  )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "POWER")
     )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
   )
      )
    )
    (setq intIncrement (1+ intIncrement))
  )
  (prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
  (princ)
)


DevilWang 在 2010-05-04, 12:20 作了第 1 次修改
DevilWang
DevilWang
高級會員
高級會員

文章總數 : 113
年齡 : 57
來自 : 台北
職業 : AEC
愛好 : Thinking...
個性 : 閒散
使用年資 : 25↑
使用版本 : 2012
積分 : 15
經驗值 : 6054
威望值 : 355
發帖精華 : 1
回帖精華 : 3
注冊日期 : 2010-03-29
男 處女座 羊

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 leoneriol 2010-05-04, 12:08

hoiyen 寫到:
感謝您!! 可能是我沒說清楚
我是想要在cad上的每一個圖塊都可以對應一個數值
當我把這些圖塊框選在一起資料匯出,自動把圖塊相對應的數值加總起來
不知這在cad辦不辦得到呀?

突發奇想.....既然不想使用屬性文字.....

那如果單純的在圖塊內建立一個單行文字(內容"160")....再用動態圖塊的可見性參數改成不可見

再用lisp將其值取出?...似乎很麻煩....

jack0615.tw & DevilWang的方式也是相同效果,而且lisp取出值得程式也分享出來了,採納此方式似乎較實際??


leoneriol 在 2010-05-04, 18:31 作了第 1 次修改 (原因 : 修改內容)
leoneriol
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9200
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-04, 21:22

leoneriol 寫到:小弟我對這個議題很感興趣....因為我也是畫電機圖說的

不過我在工作上的經驗不是很充足,所以在圖塊製作的考量方面常常缺東缺西的

不知道hoiyen是否本身也是會寫lisp呢??希望能跟您配合討論....

再請問1280W是否要匯出到EXCEL或是做照度的計算呢?

還有能否提供簡單的圖片說明您的需求呢?...這樣問題會再清楚一點

1.在圖塊製作的考量方面常常缺東缺西的<--不知是指哪方面? 看看我能不能幫上忙!!
2.我本身電腦是還可以,唯獨程式這方面弱得可以,我也是前些日子才找到各位熱心人寫的lisp程式
讓我現在在計算 電力管線數量 有了非常大的幫助!!
3.1280W匯出是要讓我在設計電源迴路時,串接設備能很快速的算出負載,不必拿計算機一樣一樣
設備的加總!! 尤其是當土建圖一變更,電氣最倒霉幾乎都要重算,還好我現在負載表是用excel 打好
再插入autocad 總負載不必拿計算機按了
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-04, 21:39

DevilWang 寫到:圖塊屬性設定如下圖
【回帖精華】圖塊自訂性質參數 201005041

配合以下Lisp取出該屬性總和:
代碼:

(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
  (princ "\n選取圖塊加總功率 \n")
  (setq ssBlock (ssget '((0 . "INSERT"))))
  (setq   intIncrement 0
   dblAttTotal  0
  )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "POWER")
     )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
   )
      )
    )
    (setq intIncrement (1+ intIncrement))
  )
  (prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
  (princ)
)

感謝~~ 我就是這意思!!
不過Lisp 程式我執行後出現錯誤耶??
我不懂程式!! 不知是哪出錯了!! 不知您有跑出來嗎?
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-04, 21:42

jack0615.tw 寫到:根據樓主的敘述以前有接觸過lisp,底下這個範例是將值帶入圖塊的屬性,跟您要取出屬性值計算應該蠻類似的,請參考。

http://www.cadtutor.co.uk/forum/showthread.php?t=17246

感謝!!
可是我試不出來! 不知您跑得出來嗎?
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-04, 21:58

DevilWang 寫到:圖塊屬性設定如下圖
【回帖精華】圖塊自訂性質參數 201005041

配合以下Lisp取出該屬性總和:
代碼:

(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
  (princ "\n選取圖塊加總功率 \n")
  (setq ssBlock (ssget '((0 . "INSERT"))))
  (setq   intIncrement 0
   dblAttTotal  0
  )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "POWER")
     )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
   )
      )
    )
    (setq intIncrement (1+ intIncrement))
  )
  (prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
  (princ)
)

我跑不出來耶!! 程式有錯!? 我不懂Lisp程式
不知您有跑出來嗎?
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 DevilWang 2010-05-04, 22:24

hoiyen 寫到:
感謝~~ 我就是這意思!!
不過Lisp 程式我執行後出現錯誤耶??
我不懂程式!! 不知是哪出錯了!! 不知您有跑出來嗎?
請先確認圖塊中所含屬性值是否正確。

下圖為執行過程,請參考

【回帖精華】圖塊自訂性質參數 Xyz1

Tiger&蘋果爸 寫到:答對了 恭喜您的回覆獲選為回帖精華文章! < 積分+1、威望+3 >

[公告]關於論壇的文章價值


Tiger&蘋果爸 在 2010-05-06, 09:18 作了第 2 次修改 (原因 : 精華文章)
DevilWang
DevilWang
高級會員
高級會員

文章總數 : 113
年齡 : 57
來自 : 台北
職業 : AEC
愛好 : Thinking...
個性 : 閒散
使用年資 : 25↑
使用版本 : 2012
積分 : 15
經驗值 : 6054
威望值 : 355
發帖精華 : 1
回帖精華 : 3
注冊日期 : 2010-03-29
男 處女座 羊

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-05, 02:07

DevilWang 寫到:
hoiyen 寫到:
感謝~~ 我就是這意思!!
不過Lisp 程式我執行後出現錯誤耶??
我不懂程式!! 不知是哪出錯了!! 不知您有跑出來嗎?
請先確認圖塊中所含屬性值是否正確。

下圖為執行過程,請參考

【回帖精華】圖塊自訂性質參數 Xyz1

哈哈~~對對對,就是我要的!!
可是怎麼我還是執行錯誤
錯誤訊息 :
錯誤: no function definition: VLAX-ENAME->VLA-OBJECT

我先畫個120x60 的長方形 ->attdef定義屬性文字->2個block起來
選取這個block -> powersum ->就出現 錯誤: no function definition: VLAX-ENAME->VLA-OBJECT

屬性文字我也有輸入了160
不知是我哪個地方錯了嗎?
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 DevilWang 2010-05-05, 08:16

你在程式第一行加入
(vl-load-com)

應該就可以了。
DevilWang
DevilWang
高級會員
高級會員

文章總數 : 113
年齡 : 57
來自 : 台北
職業 : AEC
愛好 : Thinking...
個性 : 閒散
使用年資 : 25↑
使用版本 : 2012
積分 : 15
經驗值 : 6054
威望值 : 355
發帖精華 : 1
回帖精華 : 3
注冊日期 : 2010-03-29
男 處女座 羊

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-05, 17:52

DevilWang 寫到:你在程式第一行加入
(vl-load-com)

應該就可以了。

加入後,程式跑完了
但顯示 0W !!??
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 DevilWang 2010-05-05, 20:20

在前篇操作過程示範中,有一個確認屬性值的動作,請再確認是否有 POWER 這個屬性及其值是否正確。

如果是一張既有圖塊的圖,新增屬性到圖塊中,方法可以參考這篇
同步屬性 ATTSYNC 2
DevilWang
DevilWang
高級會員
高級會員

文章總數 : 113
年齡 : 57
來自 : 台北
職業 : AEC
愛好 : Thinking...
個性 : 閒散
使用年資 : 25↑
使用版本 : 2012
積分 : 15
經驗值 : 6054
威望值 : 355
發帖精華 : 1
回帖精華 : 3
注冊日期 : 2010-03-29
男 處女座 羊

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-05, 20:50

[quote="hoiyen"]
DevilWang 寫到:圖塊屬性設定如下圖
【回帖精華】圖塊自訂性質參數 201005041

配合以下Lisp取出該屬性總和:
代碼:

(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
  (princ "\n選取圖塊加總功率 \n")
  (setq ssBlock (ssget '((0 . "INSERT"))))
  (setq   intIncrement 0
   dblAttTotal  0
  )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "POWER")
     )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
   )
      )
    )
    (setq intIncrement (1+ intIncrement))
  )
  (prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
  (princ)
)

感謝感謝~~太感動了~~~
我試出來了~~
原來我把屬性裡的power名稱改成40Wx4 值還是160
難怪程式一直抓不到值
真是太感謝了!!!
也感謝 Tiger&蘋果爸 的技術支援!!
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 verlth 2010-05-06, 00:29

這個方法真的是太讚了啦~省了超多時間的~照著方法做了一遍
完全沒問題~超開心的啦 ^^
真的是沒事就要來逛逛~學習學習
verlth
verlth
初級會員
初級會員

文章總數 : 36
年齡 : 46
來自 : Taipei
職業 : 機電工程
愛好 : 打球
個性 : 溫和
使用年資 : 10年
使用版本 : AUTOCAD 2014
積分 : 2
經驗值 : 5745
威望值 : 6
注冊日期 : 2009-05-21
串連貼紙成功 男 天秤座 馬

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-07, 14:19

DevilWang 寫到:你在程式第一行加入
(vl-load-com)

應該就可以了。
再請教,如果我在圖塊設3個標籤,數值,lisp程式要取出圖塊屬性值要怎麼改?我想說同程式跑3次再ㄧ次秀出,結果不行,它只會秀最後的值,不知您知道要怎修正嗎?
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 leoneriol 2010-05-10, 09:36

hoiyen 寫到:
DevilWang 寫到:你在程式第一行加入
(vl-load-com)

應該就可以了。
再請教,如果我在圖塊設3個標籤,數值,lisp程式要取出圖塊屬性值要怎麼改?我想說同程式跑3次再ㄧ次秀出,結果不行,它只會秀最後的值,不知您知道要怎修正嗎?

(strcase "POWER")<===找到這一行.....

然後把power改成另外兩個標籤試試看!!!
~~~~~~~~~~~~~~~~~~~~~~~~詳細修改方式~~~~~~~~~~~~~~~~~~
代碼:
(vl-load-com)
(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
  (princ "\n選取圖塊加總功率 \n")
  (setq ssBlock (ssget '((0 . "INSERT"))))
  (setq intIncrement 0
   dblAttTotal 0
   )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "POWER")
       )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
     )
   )
      )
    (setq intIncrement (1+ intIncrement))
    )
  (prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
  (setq intIncrement 0
   dblAttTotal 0
   )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "aaaa")
       )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
     )
   )
      )
    (setq intIncrement (1+ intIncrement))
    )
  (prompt (strcat "\n總aaaa : " (rtos dblAttTotal) "aaaa的單位"))
  (setq intIncrement 0
   dblAttTotal 0
   )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "bbbb")
       )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
     )
   )
      )
    (setq intIncrement (1+ intIncrement))
    )
  (prompt (strcat "\n總bbbb : " (rtos dblAttTotal) "bbbb的單位"))
  (princ)
  )
.............................
請將aaaa及bbbb的部分改成您設定的屬性標籤名稱,這是較簡單點的修改方式,將程式重複貼三次


leoneriol 在 2010-05-10, 09:58 作了第 1 次修改 (原因 : 修改內容)

____________________________________________________________________________________
丑角之日
堅持~!才會有價值~!
讚啦!!
【回帖精華】圖塊自訂性質參數 Ioaoe110 【回帖精華】圖塊自訂性質參數 Zuoiy_10 【回帖精華】圖塊自訂性質參數 2020-211 【回帖精華】圖塊自訂性質參數 Aizyao11 【回帖精華】圖塊自訂性質參數 Iyb_1510
【回帖精華】圖塊自訂性質參數 Aizyao10 【回帖精華】圖塊自訂性質參數 BPl3tjj.png 【回帖精華】圖塊自訂性質參數 Ziao1510 【回帖精華】圖塊自訂性質參數 Oo-2-110 【回帖精華】圖塊自訂性質參數 Oooa_110
leoneriol
leoneriol
榮譽顧問
榮譽顧問

文章總數 : 818
年齡 : 40
來自 : 基隆市七堵區
職業 : 機電工程公司-繪圖(工地)
愛好 : 看小說
個性 : 不愛說話-反應慢
使用年資 : 6年
使用版本 : 2008 & 2012
積分 : 27
經驗值 : 9200
威望值 : 960
發帖精華 : 1
回帖精華 : 1
注冊日期 : 2009-03-12
經典問與答讀者 藍鵲34號
2009聚會勳章 2014聚會勳章 男 雙魚座 鼠

回頂端 向下

【回帖精華】圖塊自訂性質參數 Empty 回復: 【回帖精華】圖塊自訂性質參數

發表 由 hoiyen 2010-05-10, 11:16

leoneriol 寫到:
hoiyen 寫到:
DevilWang 寫到:你在程式第一行加入
(vl-load-com)

應該就可以了。
再請教,如果我在圖塊設3個標籤,數值,lisp程式要取出圖塊屬性值要怎麼改?我想說同程式跑3次再ㄧ次秀出,結果不行,它只會秀最後的值,不知您知道要怎修正嗎?

(strcase "POWER")<===找到這一行.....

然後把power改成另外兩個標籤試試看!!!
~~~~~~~~~~~~~~~~~~~~~~~~詳細修改方式~~~~~~~~~~~~~~~~~~
代碼:
(vl-load-com)
(defun c:powersum (/ ssBlock intIncrement dblAttTotal objBlock strValue strTotal)
  (princ "\n選取圖塊加總功率 \n")
  (setq ssBlock (ssget '((0 . "INSERT"))))
  (setq intIncrement 0
   dblAttTotal 0
   )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "POWER")
       )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
     )
   )
      )
    (setq intIncrement (1+ intIncrement))
    )
  (prompt (strcat "\n總功率 : " (rtos dblAttTotal) "W"))
  (setq intIncrement 0
   dblAttTotal 0
   )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "aaaa")
       )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
     )
   )
      )
    (setq intIncrement (1+ intIncrement))
    )
  (prompt (strcat "\n總aaaa : " (rtos dblAttTotal) "aaaa的單位"))
  (setq intIncrement 0
   dblAttTotal 0
   )
  (repeat (sslength ssBlock)
    (setq objBlock (vlax-ename->vla-object (CDR (CAR (entget (ssname ssBlock intIncrement))))))
    (foreach objAttribute (vlax-invoke objBlock "getattributes")
      (if (= (strcase (vla-get-tagstring objAttribute))
       (strcase "bbbb")
       )
   (progn
     (setq strValue (vla-get-textstring objAttribute))
     (setq dblAttTotal (+ (atof strValue) dblAttTotal))
     )
   )
      )
    (setq intIncrement (1+ intIncrement))
    )
  (prompt (strcat "\n總bbbb : " (rtos dblAttTotal) "bbbb的單位"))
  (princ)
  )
.............................
請將aaaa及bbbb的部分改成您設定的屬性標籤名稱,這是較簡單點的修改方式,將程式重複貼三次
照您的方式修改,我試成功了,真是太感謝了~謝謝啦!
hoiyen
hoiyen
一般會員
一般會員

文章總數 : 22
年齡 : 52
來自 : Taipei
職業 : 建築
愛好 : 電腦
個性 : 溫和
使用年資 : 10
使用版本 : 2010
經驗值 : 5394
威望值 : 3
注冊日期 : 2010-04-29
男 雙魚座 鼠

回頂端 向下

回頂端


 
這個論壇的權限:
無法 在這個版面回復文章
【回帖精華】圖塊自訂性質參數 Aoe1-113【回帖精華】圖塊自訂性質參數 Ioaoe110【回帖精華】圖塊自訂性質參數 2020-310【回帖精華】圖塊自訂性質參數 Oiu15010【回帖精華】圖塊自訂性質參數 2020-211【回帖精華】圖塊自訂性質參數 Ia15010【回帖精華】圖塊自訂性質參數 Aizyao10【回帖精華】圖塊自訂性質參數 Uos15010【回帖精華】圖塊自訂性質參數 BPl3tjj【回帖精華】圖塊自訂性質參數 Ziao1510
【回帖精華】圖塊自訂性質參數 Aoe15010【回帖精華】圖塊自訂性質參數 Oo-2-110【回帖精華】圖塊自訂性質參數 Zuoiy_10【回帖精華】圖塊自訂性質參數 Aizyao11【回帖精華】圖塊自訂性質參數 Iyb_1510【回帖精華】圖塊自訂性質參數 Aoe1-112【回帖精華】圖塊自訂性質參數 Uos15011【回帖精華】圖塊自訂性質參數 Aoe2da10【回帖精華】圖塊自訂性質參數 Aoe2da11【回帖精華】圖塊自訂性質參數 Aoe10