【問題】請問幾何公差物件的轉換
3 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 2D討論
第1頁(共1頁)
【問題】請問幾何公差物件的轉換
最近上班從另一個廠商拿到圖需要統計零件的數量,結果標註零件的方式是用幾何公差(指令:TOLERANCE)的物件來寫(應該是因為有文字框才用的吧),這個沒辦法直接做統計,在修改上也很麻煩,所以我自己改成圖塊屬性的方式,但是數量實在太多,粗估上千個吧,想請教有沒有快速的方法
以下是我的檔案,想把左邊的物件轉成右邊圖塊的方式
https://drive.google.com/drive/folders/1eEygRBB5L2Pwuse6xpwcaBMG1yc3lZ_Y?usp=sharing
麻煩各路大佬解惑
以下是我的檔案,想把左邊的物件轉成右邊圖塊的方式
https://drive.google.com/drive/folders/1eEygRBB5L2Pwuse6xpwcaBMG1yc3lZ_Y?usp=sharing
麻煩各路大佬解惑
dennis861020- 一般會員
- 文章總數 : 21
年齡 : 27
來自 : 桃園
職業 : 學生
愛好 : 鍵盤
個性 : 開朗
使用年資 : 新手初學
使用版本 : 新手初學
經驗值 : 1276
威望值 : 0
注冊日期 : 2021-08-27
回復: 【問題】請問幾何公差物件的轉換
這個AutoCAD沒有可以轉換的指令功能...
上千個只能考慮委外開發LSP程式😅
上千個只能考慮委外開發LSP程式😅
____________________________________________________________________________________
👉[雙11優惠]2024雙11活動 教學產品7折起(免運)(點我)👈
選取 TOLERANCE 自動轉換成 COM 圖塊屬性改名字
Option Explicit
Public tm As AcadModelSpace ' 設 tm 簡化名稱圖紙空間
Public tu As AcadUtility
Public pi As Double
Public Sub test()
On Error Resume Next
ThisDrawing.SendCommand "ucs" & vbCr & "w" & vbCr
ThisDrawing.SendCommand "undo" & vbCr & "be" & vbCr
pi = 3.141592 / 180
Set tm = ThisDrawing.ModelSpace: Set tu = ThisDrawing.Utility
Dim tol As AcadTolerance
Dim blkref_obj As AcadBlockReference
Dim att As Variant
Dim i_count As Integer
Dim new_text As String
Dim char_obj As String
Dim basePnt As Variant
Do While True
tu.GetEntity tol, basePnt, "請選取 TOLERANCE !! < ESC 結束 > "
If Err <> 0 Then Exit Sub
For i_count = 1 To Len(tol.TextString)
char_obj = Mid(tol.TextString, i_count, 1)
If char_obj <> "%" And char_obj <> "v" Then new_text = new_text & char_obj
Next i_count
Dim new_blkref As AcadBlockReference
Set new_blkref = tm.InsertBlock(tol.insertionPoint, "COM", 1.8336, 1.8336, 1, 0)
att = new_blkref.GetAttributes
att(0).TextString = new_text: new_blkref.Update
tol.Delete
Loop
ThisDrawing.SendCommand "undo" & vbCr & "e" & vbCr
End Sub
Public tm As AcadModelSpace ' 設 tm 簡化名稱圖紙空間
Public tu As AcadUtility
Public pi As Double
Public Sub test()
On Error Resume Next
ThisDrawing.SendCommand "ucs" & vbCr & "w" & vbCr
ThisDrawing.SendCommand "undo" & vbCr & "be" & vbCr
pi = 3.141592 / 180
Set tm = ThisDrawing.ModelSpace: Set tu = ThisDrawing.Utility
Dim tol As AcadTolerance
Dim blkref_obj As AcadBlockReference
Dim att As Variant
Dim i_count As Integer
Dim new_text As String
Dim char_obj As String
Dim basePnt As Variant
Do While True
tu.GetEntity tol, basePnt, "請選取 TOLERANCE !! < ESC 結束 > "
If Err <> 0 Then Exit Sub
For i_count = 1 To Len(tol.TextString)
char_obj = Mid(tol.TextString, i_count, 1)
If char_obj <> "%" And char_obj <> "v" Then new_text = new_text & char_obj
Next i_count
Dim new_blkref As AcadBlockReference
Set new_blkref = tm.InsertBlock(tol.insertionPoint, "COM", 1.8336, 1.8336, 1, 0)
att = new_blkref.GetAttributes
att(0).TextString = new_text: new_blkref.Update
tol.Delete
Loop
ThisDrawing.SendCommand "undo" & vbCr & "e" & vbCr
End Sub
- 附件
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6741
威望值 : 361
注冊日期 : 2010-09-20
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 2D討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章