[討論]有沒有圖塊的快速標註方法?
+2
pc200098
naruto018
6 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 2D討論
第1頁(共1頁)
[討論]有沒有圖塊的快速標註方法?
圖面上有多個圖塊需要標註
但因為太多個,又因為多個區域
標註在基準點上
我只找到QDIM的快速標註 圓和弧
但沒法用在圖塊
所以有沒有圖塊的快速標註方法?
上圖都是圖塊
標註成如下圖(希望可以標註再插入點或圖塊中心)
(如看不到圖片請案右鍵分頁開啟圖片)
但因為太多個,又因為多個區域
標註在基準點上
我只找到QDIM的快速標註 圓和弧
但沒法用在圖塊
所以有沒有圖塊的快速標註方法?
上圖都是圖塊
標註成如下圖(希望可以標註再插入點或圖塊中心)
(如看不到圖片請案右鍵分頁開啟圖片)
naruto018 在 2017-01-14, 12:54 作了第 3 次修改
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
回復: [討論]有沒有圖塊的快速標註方法?
請可以列個使用方式嗎? 因為QIDM有很多功能,標註方向、方式都會因使用者而不同。
pc200098- 初級會員
- 文章總數 : 49
年齡 : 39
來自 : 台南市
職業 : 機械製圖
愛好 : 電玩
個性 : 執著
使用年資 : 12
使用版本 : 2013&2016
積分 : 1
經驗值 : 5288
威望值 : 53
注冊日期 : 2011-03-10
回復: [討論]有沒有圖塊的快速標註方法?
使用QDIM沒辦法把圖塊的插入點當作標註點
會顯示成無效點
無法標註出來
但是使用QDIM裡的編輯-加入標著點可以選到圖塊地插入點
才能夠標註
會顯示成無效點
無法標註出來
但是使用QDIM裡的編輯-加入標著點可以選到圖塊地插入點
才能夠標註
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
我寫的圖塊快速標註程式(VBA), 參考一下!!
選取物件會過濾不是圖塊的物件, 程式會自動抓圖塊的中心點, 然後再點選標註要落下的地方. 試用一下如果有問題我再修改, 因為我只會寫程式, 不會畫圖. 3Q !!
- 附件
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
d93xjp61212 likes this post
回復: [討論]有沒有圖塊的快速標註方法?
shackle_2005 寫到:選取物件會過濾不是圖塊的物件, 程式會自動抓圖塊的中心點, 然後再點選標註要落下的地方. 試用一下如果有問題我再修改, 因為我只會寫程式, 不會畫圖. 3Q !!
感謝shackle_2005大大
我試用了一下
大致上就是我要的
不過我發現有個問題
如果選擇註解的平行方向上有2個以上的物體的話
會出現標註為0的問題
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
回復: [討論]有沒有圖塊的快速標註方法?
方便的話可能上傳一下 有問題的部份dwg sample 圖檔. 我不會畫圖, 測試我是自己隨便弄兩個圖塊, 不太了解問題. 3Q
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
回復: [討論]有沒有圖塊的快速標註方法?
大致上類似CAD檔內的房間
我挑出不同圖塊密度比較高部分
感謝大大的幫忙
我挑出不同圖塊密度比較高部分
感謝大大的幫忙
- 附件
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
回復: [討論]有沒有圖塊的快速標註方法?
我懂了, 程式我花五分鐘就寫好了, 是簡單陽春的功能. 所以同高度的圖塊之間也會標註, 所以會是 0. 比較簡單的方法就是不要全選圖塊, 同高度選一個圖塊就好了. 同高度只要標註一個, 不出現 0, 這就比較複雜, 我要慢慢試. OK
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
回復: [討論]有沒有圖塊的快速標註方法?
終於找到我要的程式了 因為每次都要花很多時間在對點 也誠心感謝善心人士 分享這個程式 讓我提高工作效率
jenniferaptg- 一般會員
- 文章總數 : 135
年齡 : 50
來自 : taiwan
職業 : cafe
愛好 : 電腦
個性 : 平易近人
使用年資 : 15
使用版本 : 用最熟的那一版
經驗值 : 6382
威望值 : 30
注冊日期 : 2009-01-30
回復: [討論]有沒有圖塊的快速標註方法?
圖塊快速標註(VBA) 程式原理說明 : 1. 先過濾出要標註的圖塊. 2. 圖塊.getboundingbox 這個 VBA 程式指令可以得到圖塊的左下角及右上角點座標. 3. 得到這兩個座標就可以算出圖塊的正中心點. 4. 在每個圖塊的正中心點畫一個假功能的小圓 5. 建立一個新的群組, 把假功能的小圓都加入. 6. 因為 qdim 指令可以輸入 群組(G), 所以把很多小圓的群組餵給 qdim 指令. 7. 再點選標註落點, 這樣就標註好了, 最後再把所有假功能的小圓全部刪除. 我個人覺得 VBA 寫有點難又不太難的程式很好用, 大家可以參考一下.
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
回復: [討論]有沒有圖塊的快速標註方法?
shackle_2005 寫到:圖塊快速標註(VBA) 程式原理說明 : 1. 先過濾出要標註的圖塊. 2. 圖塊.getboundingbox 這個 VBA 程式指令可以得到圖塊的左下角及右上角點座標. 3. 得到這兩個座標就可以算出圖塊的正中心點. 4. 在每個圖塊的正中心點畫一個假功能的小圓 5. 建立一個新的群組, 把假功能的小圓都加入. 6. 因為 qdim 指令可以輸入 群組(G), 所以把很多小圓的群組餵給 qdim 指令. 7. 再點選標註落點, 這樣就標註好了, 最後再把所有假功能的小圓全部刪除. 我個人覺得 VBA 寫有點難又不太難的程式很好用, 大家可以參考一下.
感謝shackle_2005大大的解說
雖然我寫過Excel VBA(不精通)
但沒寫過AutoCAD的
不清楚相關的控制指令的部分
所以我沒有去碰,加上不清楚哪裡可以找到相關的範例和教學
不過我測試一下QDIM的指令
並排好幾個圓並不會出現標註為0的問題
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
這我就不了解了, 我慢慢研究一下, 3Q : )
這證明我不會畫圖, Qdim 怎麼運作我不了解, 我只是把圖塊餵給 Qdim, 我再慢慢研究一下, 加油!!
Dim tm As AcadModelSpace
Dim tu As AcadUtility
Dim ent_set As AcadSelectionSet
Dim group_obj As AcadGroup
Dim ent_obj As AcadObject
Dim add_entity(0) As AcadEntity
Dim min_p As Variant
Dim max_p As Variant
Dim center_p(0 To 2) As Double ' 一般我都用 double 雙倍精度, 所以高度差一點點, 就會不對.
Dim cir As AcadCircle
Dim group_name As String
Dim dim_p As Variant
' 設定 tm 為這張圖面的模型空間, 設定 tu 為這張圖面的公用程式
Set tm = ThisDrawing.ModelSpace: Set tu = ThisDrawing.Utility
Do While True
Set ent_set = ThisDrawing.SelectionSets.Add(rnd_process)
tu.prompt "請選取要標註的物件!!....... Esc(結束)"
ent_set.SelectOnScreen
If ent_set.count = 0 Then Exit Do
dim_p = tu.GetPoint(, "請點選標註落點!!..........")
If Err Then Exit Do
group_name = rnd_process
Set group_obj = ThisDrawing.Groups.Add(group_name)
For Each ent_obj In ent_set
If TypeOf ent_obj Is AcadBlockReference Then
' *** 抓圖塊左下跟右上角點座標
ent_obj.GetBoundingBox min_p, max_p
' *** 計算圖塊的正中心點, 多個平行的圖塊, 正中心點只要差個 0.0000000001, Qdim 就會以為是不同高度的圖塊.
center_p(0) = (min_p(0) + max_p(0)) / 2: center_p(1) = (min_p(1) + max_p(1)) / 2
Set cir = tm.AddCircle(center_p, 1): cir.Update
Set add_entity(0) = cir: group_obj.AppendItems add_entity
End If
Next ent_obj
' ***************** 執行 Qdim, 把小圓組成的群組餵給指令 *********************************
ThisDrawing.SendCommand "qdim" & vbCr & "g" & vbCr & group_name & vbCr & vbCr & _
p_str_2d(dim_p) & vbCr
For Each ent_obj In group_obj
ent_obj.Delete
Next ent_obj
group_obj.Delete
Loop
Dim tm As AcadModelSpace
Dim tu As AcadUtility
Dim ent_set As AcadSelectionSet
Dim group_obj As AcadGroup
Dim ent_obj As AcadObject
Dim add_entity(0) As AcadEntity
Dim min_p As Variant
Dim max_p As Variant
Dim center_p(0 To 2) As Double ' 一般我都用 double 雙倍精度, 所以高度差一點點, 就會不對.
Dim cir As AcadCircle
Dim group_name As String
Dim dim_p As Variant
' 設定 tm 為這張圖面的模型空間, 設定 tu 為這張圖面的公用程式
Set tm = ThisDrawing.ModelSpace: Set tu = ThisDrawing.Utility
Do While True
Set ent_set = ThisDrawing.SelectionSets.Add(rnd_process)
tu.prompt "請選取要標註的物件!!....... Esc(結束)"
ent_set.SelectOnScreen
If ent_set.count = 0 Then Exit Do
dim_p = tu.GetPoint(, "請點選標註落點!!..........")
If Err Then Exit Do
group_name = rnd_process
Set group_obj = ThisDrawing.Groups.Add(group_name)
For Each ent_obj In ent_set
If TypeOf ent_obj Is AcadBlockReference Then
' *** 抓圖塊左下跟右上角點座標
ent_obj.GetBoundingBox min_p, max_p
' *** 計算圖塊的正中心點, 多個平行的圖塊, 正中心點只要差個 0.0000000001, Qdim 就會以為是不同高度的圖塊.
center_p(0) = (min_p(0) + max_p(0)) / 2: center_p(1) = (min_p(1) + max_p(1)) / 2
Set cir = tm.AddCircle(center_p, 1): cir.Update
Set add_entity(0) = cir: group_obj.AppendItems add_entity
End If
Next ent_obj
' ***************** 執行 Qdim, 把小圓組成的群組餵給指令 *********************************
ThisDrawing.SendCommand "qdim" & vbCr & "g" & vbCr & group_name & vbCr & vbCr & _
p_str_2d(dim_p) & vbCr
For Each ent_obj In group_obj
ent_obj.Delete
Next ent_obj
group_obj.Delete
Loop
shackle_2005 在 2017-01-16, 06:06 作了第 4 次修改
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
一頭霧水
但我發現 S 圖塊的地方, 是兩個圖塊重疊. 但其它好像沒有重疊, 真是兩頭霧水, 我也不知道為什麼........ ?????
- 附件
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
我找到問題了, debug 修正 OK. Happy
我在計算圖塊正中心點的時候, 是使用 double 雙倍精度變數. 所以多個圖塊平行只要高度差一點點 0.00000001 , Qdim 指令就會以為平行的圖塊是不同高度, 用 int 指令把很多小數的座標取整數就 OK 了. I got it. 3Q !!
- 附件
shackle_2005 在 2017-02-13, 19:25 作了第 2 次修改
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
回復: [討論]有沒有圖塊的快速標註方法?
shackle_2005 寫到:我在計算圖塊正中心點的時候, 是使用 double 雙倍精度變數. 所以多個圖塊平行只要高度差一點點 0.00000001 , Qdim 指令就會以為平行的幾塊是不同高度, 改為 integer 整數就 OK 了. I got it. 3Q !!
恭喜shackle_2005大大找出問題
感謝你的付出
原來變數設定就影響那麼多
終於可以不用點那麼酸在那裏標註了
naruto018- 中級會員
- 文章總數 : 226
年齡 : 32
來自 : 高雄
職業 : 學習中(CAD,Revit,Excel VBA)
愛好 : 當個懶熊
個性 : 內向
使用年資 : 新手
使用版本 : 2015
AutoCAD基礎篇等級 : 10星級
積分 : 5
經驗值 : 4542
威望值 : 564
注冊日期 : 2016-11-29
回復: [討論]有沒有圖塊的快速標註方法?
有空可以學學 Autocad VBA, 寫程式應該都大同小異. 只是有時候看不出問題在那裏, debug 就要搞很久, 雙精度的問題我有類似的經驗, 所以這次才快一點解決. 歡迎有問題再 PO 上來大家討論. 3Q !!
shackle_2005 在 2017-01-16, 05:53 作了第 1 次修改
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
回復: [討論]有沒有圖塊的快速標註方法?
謝謝shackle_2005前輩這麼有心...shackle_2005 寫到:有空可以學學 Autocad VBA, 寫程式應該都大同小異. 只是有時候看不出問題在那裏, debug 有時候要搞很久, 雙精度的問題我有類似的經驗, 所以這次才快一點幾解決. 歡迎有問題再 PO 上來大家討論. 3Q !!
有機會也來學學vba
____________________________________________________________________________________
👉快速比例設定與出圖技巧-線上課程(點我)👈
回復: [討論]有沒有圖塊的快速標註方法?
shackle_2005 寫到:選取物件會過濾不是圖塊的物件, 程式會自動抓圖塊的中心點, 然後再點選標註要落下的地方. 試用一下如果有問題我再修改, 因為我只會寫程式, 不會畫圖. 3Q !!
大大你好:
我做機電及機電繪圖的,我有一些想法可惜卻不會寫程式,不知道可否與大大交流,我出主意跟測試麻煩大大寫可以嗎?
d93xjp61212- 一般會員
- 文章總數 : 23
年齡 : 38
來自 : 宜蘭
職業 : 機電
愛好 : 解決問題
個性 : 對工作固執,有時候懶惰所以一直再找方法
使用年資 : 10
使用版本 : 2022
經驗值 : 1061
威望值 : 0
注冊日期 : 2022-04-13
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 2D討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章