[討論]請問如何將聚合線轉回單線段啊?
+2
logic7bmw
tzung1017
6 posters
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
[討論]請問如何將聚合線轉回單線段啊?
今天收到客戶的圖,來的圖弧都是聚合線
導致要修改尺寸相當麻煩(也量不出來原本的弧的大小)
請問有辦法可以解決嗎?
導致要修改尺寸相當麻煩(也量不出來原本的弧的大小)
請問有辦法可以解決嗎?
tzung1017- 初級會員
- 文章總數 : 23
年齡 : 46
來自 : 彰化
職業 : 沖壓模具設計
愛好 : 看電視
個性 : 內向
使用年資 : 1年
使用版本 : 2005
積分 : 1
經驗值 : 5360
威望值 : 12
注冊日期 : 2010-06-19
回覆:[問題]請問如何將聚合線轉回單線段啊?
分解(explode簡碼x)即可,只要對方不是用直線畫弧,用X都可以讓各種線條原形畢露喔.
這是分解的符號
以下為原廠說明:
要單獨修改複合物件的元件時,請將其分解。可以分解的物件包括圖塊、聚合線、面域等。
任何已分解物件的顏色、線型與線粗可能變更。其他結果會根據您所分解的複合物件類型的不同而不同。
注意事項:如果您使用的是腳本或 ObjectARX® 功能,則每次僅能分解一個物件。
這是分解的符號
以下為原廠說明:
要單獨修改複合物件的元件時,請將其分解。可以分解的物件包括圖塊、聚合線、面域等。
任何已分解物件的顏色、線型與線粗可能變更。其他結果會根據您所分解的複合物件類型的不同而不同。
注意事項:如果您使用的是腳本或 ObjectARX® 功能,則每次僅能分解一個物件。
logic7bmw 在 周四 19 4月 2012, 11:15 作了第 1 次修改
____________________________________________________________________________________
追求極致奢華,力求完美表現
logic7bmw- 中級會員
- 文章總數 : 121
年齡 : 47
來自 : 台中新社
職業 : 繪圖員
愛好 : 玩線上遊戲
個性 : 陽光
使用年資 : 邁入第五年啦~~
使用版本 : 2006/2013
積分 : 8
經驗值 : 5585
威望值 : 359
注冊日期 : 2012-01-18
回復: [討論]請問如何將聚合線轉回單線段啊?
猜測你收到的圖應該是由3D物件所轉出來的2D圖
所以弧及圓 應該找不到中心點
我的解決方法是 自己再畫一個弧(A)
任意在圓或弧中 選3點 重新畫一次
此時就可以得到圓心及半徑 就可以量出來囉
https://www.youtube.com/watch?v=qVEwFIc_syo&feature=player_embedded
所以弧及圓 應該找不到中心點
我的解決方法是 自己再畫一個弧(A)
任意在圓或弧中 選3點 重新畫一次
此時就可以得到圓心及半徑 就可以量出來囉
https://www.youtube.com/watch?v=qVEwFIc_syo&feature=player_embedded
droaaa- 高級會員
- 文章總數 : 494
年齡 : 42
來自 : 宜蘭
職業 : 畫畫圖
愛好 : 看動漫
個性 : 低調
使用年資 : 新手初學
使用版本 : 2008
積分 : 20
經驗值 : 9474
威望值 : 2166
注冊日期 : 2010-09-10
回復: [討論]請問如何將聚合線轉回單線段啊?
之前也有遇過這問題~
原來還有這一招呀!!
又多學一招了
原來還有這一招呀!!
又多學一招了
ttv_01- 初級會員
- 文章總數 : 145
年齡 : 35
來自 : 彰化
職業 : 倉管
愛好 : 發呆
個性 : 低調
使用年資 : 新手初學
使用版本 : AUTOCAD2008
積分 : 4
經驗值 : 5769
威望值 : 288
注冊日期 : 2011-08-16
回復: [討論]請問如何將聚合線轉回單線段啊?
謝謝兩位熱心的教導
不過,來的圖是聚合線真的相當麻煩
每次要把線接回去總是浪費相當多的時間
不知道有沒有什麼程式可以快速的把聚合線接回原本的弧或圓
不過,來的圖是聚合線真的相當麻煩
每次要把線接回去總是浪費相當多的時間
不知道有沒有什麼程式可以快速的把聚合線接回原本的弧或圓
tzung1017- 初級會員
- 文章總數 : 23
年齡 : 46
來自 : 彰化
職業 : 沖壓模具設計
愛好 : 看電視
個性 : 內向
使用年資 : 1年
使用版本 : 2005
積分 : 1
經驗值 : 5360
威望值 : 12
注冊日期 : 2010-06-19
回復: [討論]請問如何將聚合線轉回單線段啊?
"JOIN" 這個指令可以將所有的轉成polyline 然後結合在一起!!
k2g853- 一般會員
- 文章總數 : 7
年齡 : 36
來自 : 台中
職業 : 測量員
愛好 : 學習
個性 : 隨和
使用年資 : 初學
使用版本 : 初學
經驗值 : 4633
威望值 : 0
注冊日期 : 2012-04-13
弧形聚合線轉為單一圓弧, 3D 轉進來要先轉成 Autocad 的 2D 聚合線. (VBA練習)
Option Explicit
Public tm As AcadModelSpace ' 設 tm 簡化名稱圖紙空間
Public tu As AcadUtility
Public pi As Double
Public Sub pline_to_arc()
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 pline As AcadLWPolyline
Dim coor As Variant
Dim start_p(0 To 2) As Double
Dim end_p(0 To 2) As Double
Dim line_obj As AcadLine
Dim p2 As Variant
Dim p3 As Variant
Dim p4 As Variant
Dim int_p As Variant
Dim p5(0 To 2) As Double
Dim pick_p As Variant
Dim arc_obj As AcadArc
tu.GetEntity pline, pick_p, "請選取 2D 聚合線 : "
If Err Then Exit Sub
coor = pline.Coordinates ' 取出聚合線的起點與終點
start_p(0) = coor(0): start_p(1) = coor(1)
end_p(0) = coor(UBound(coor) - 1): end_p(1) = coor(UBound(coor))
Set line_obj = tm.AddLine(start_p, end_p): line_obj.Update ' 起點與終點畫一條線
p2 = tu.PolarPoint(start_p, line_obj.Angle, line_obj.Length / 2) ' 取直線的中點
p3 = tu.PolarPoint(p2, line_obj.Angle + 90 * pi, line_obj.Length * 10) ' 畫一條與直線垂直的長線
p4 = tu.PolarPoint(p2, line_obj.Angle + 270 * pi, line_obj.Length * 10)
line_obj.Delete
Set line_obj = tm.AddLine(p3, p4): line_obj.Update
int_p = line_obj.IntersectWith(pline, acExtendNone) ' 長線跟聚合線求交點用來三點畫弧
If UBound(int_p) = 2 Then p5(0) = int_p(0): p5(1) = int_p(1)
line_obj.Delete
' 三點畫弧
ThisDrawing.SendCommand "arc" & vbCr & two_p_str(start_p) & vbCr & two_p_str(p5) & _
vbCr & two_p_str(end_p) & vbCr
Set arc_obj = tm.Item(tm.Count - 1): arc_obj.color = 3: arc_obj.Update
pline.Delete
ThisDrawing.SendCommand "undo" & vbCr & "e" & vbCr
End Sub
Private Function two_p_str(p_variant As Variant) As String
On Error Resume Next
two_p_str = Trim(Str(p_variant(0))) & "," & _
Trim(Str(p_variant(1))) '& "," & _
Trim(Str(p_variant(2)))
End Function
Public tm As AcadModelSpace ' 設 tm 簡化名稱圖紙空間
Public tu As AcadUtility
Public pi As Double
Public Sub pline_to_arc()
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 pline As AcadLWPolyline
Dim coor As Variant
Dim start_p(0 To 2) As Double
Dim end_p(0 To 2) As Double
Dim line_obj As AcadLine
Dim p2 As Variant
Dim p3 As Variant
Dim p4 As Variant
Dim int_p As Variant
Dim p5(0 To 2) As Double
Dim pick_p As Variant
Dim arc_obj As AcadArc
tu.GetEntity pline, pick_p, "請選取 2D 聚合線 : "
If Err Then Exit Sub
coor = pline.Coordinates ' 取出聚合線的起點與終點
start_p(0) = coor(0): start_p(1) = coor(1)
end_p(0) = coor(UBound(coor) - 1): end_p(1) = coor(UBound(coor))
Set line_obj = tm.AddLine(start_p, end_p): line_obj.Update ' 起點與終點畫一條線
p2 = tu.PolarPoint(start_p, line_obj.Angle, line_obj.Length / 2) ' 取直線的中點
p3 = tu.PolarPoint(p2, line_obj.Angle + 90 * pi, line_obj.Length * 10) ' 畫一條與直線垂直的長線
p4 = tu.PolarPoint(p2, line_obj.Angle + 270 * pi, line_obj.Length * 10)
line_obj.Delete
Set line_obj = tm.AddLine(p3, p4): line_obj.Update
int_p = line_obj.IntersectWith(pline, acExtendNone) ' 長線跟聚合線求交點用來三點畫弧
If UBound(int_p) = 2 Then p5(0) = int_p(0): p5(1) = int_p(1)
line_obj.Delete
' 三點畫弧
ThisDrawing.SendCommand "arc" & vbCr & two_p_str(start_p) & vbCr & two_p_str(p5) & _
vbCr & two_p_str(end_p) & vbCr
Set arc_obj = tm.Item(tm.Count - 1): arc_obj.color = 3: arc_obj.Update
pline.Delete
ThisDrawing.SendCommand "undo" & vbCr & "e" & vbCr
End Sub
Private Function two_p_str(p_variant As Variant) As String
On Error Resume Next
two_p_str = Trim(Str(p_variant(0))) & "," & _
Trim(Str(p_variant(1))) '& "," & _
Trim(Str(p_variant(2)))
End Function
- 附件
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
3d 轉進來的聚合線轉成 Autocad 的 2d 聚合線 ( VBA 練習 )
Option Explicit
Public tm As AcadModelSpace ' 設 tm 簡化名稱圖紙空間
Public tu As AcadUtility
Public pi As Double
Public Sub three_two_pline()
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 ent As AcadObject
Dim points() As Double
Dim exp As Variant
Dim pline As AcadLWPolyline
Dim i_count As Integer
Dim line_obj As AcadLine
Dim start_p As Variant
Dim end_p As Variant
Dim pick_p As Variant
tu.GetEntity ent, pick_p, "請選取 3d 聚合線 : "
If Err Then Exit Sub
' 顯示 3d 轉進來的聚合線物件名稱是 AcDb2dPolyline, 不是 Autocad 的 2d 輕量線(LWpolyline) AcDbPolyline.
' MsgBox pline.ObjectName
exp = ent.Explode: ent.Delete ' 炸開 3d 聚合線
ReDim points((UBound(exp) + 1) * 2 + 1) As Double ' 重新制定新 2d 聚合線需要的點數資料
For i_count = 0 To UBound(exp) ' 把炸開的每一條線叫出來
Set line_obj = exp(i_count)
line_obj.color = i_count + 1: line_obj.Update
start_p = line_obj.StartPoint: end_p = line_obj.EndPoint
' 依順序把線的起點終點座標鋪上去 2d 聚合線需要的點數資料
points(i_count * 2) = start_p(0): points(i_count * 2 + 1) = start_p(1)
points((i_count + 1) * 2) = end_p(0): points((i_count + 1) * 2 + 1) = end_p(1)
line_obj.Delete
Next i_count
Set pline = tm.AddLightWeightPolyline(points) ' 產生新的 2d 聚合線
pline.color = 1: pline.Update
ThisDrawing.SendCommand "undo" & vbCr & "e" & vbCr
End Sub
Public tm As AcadModelSpace ' 設 tm 簡化名稱圖紙空間
Public tu As AcadUtility
Public pi As Double
Public Sub three_two_pline()
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 ent As AcadObject
Dim points() As Double
Dim exp As Variant
Dim pline As AcadLWPolyline
Dim i_count As Integer
Dim line_obj As AcadLine
Dim start_p As Variant
Dim end_p As Variant
Dim pick_p As Variant
tu.GetEntity ent, pick_p, "請選取 3d 聚合線 : "
If Err Then Exit Sub
' 顯示 3d 轉進來的聚合線物件名稱是 AcDb2dPolyline, 不是 Autocad 的 2d 輕量線(LWpolyline) AcDbPolyline.
' MsgBox pline.ObjectName
exp = ent.Explode: ent.Delete ' 炸開 3d 聚合線
ReDim points((UBound(exp) + 1) * 2 + 1) As Double ' 重新制定新 2d 聚合線需要的點數資料
For i_count = 0 To UBound(exp) ' 把炸開的每一條線叫出來
Set line_obj = exp(i_count)
line_obj.color = i_count + 1: line_obj.Update
start_p = line_obj.StartPoint: end_p = line_obj.EndPoint
' 依順序把線的起點終點座標鋪上去 2d 聚合線需要的點數資料
points(i_count * 2) = start_p(0): points(i_count * 2 + 1) = start_p(1)
points((i_count + 1) * 2) = end_p(0): points((i_count + 1) * 2 + 1) = end_p(1)
line_obj.Delete
Next i_count
Set pline = tm.AddLightWeightPolyline(points) ' 產生新的 2d 聚合線
pline.color = 1: pline.Update
ThisDrawing.SendCommand "undo" & vbCr & "e" & vbCr
End Sub
- 附件
shackle_2005- 初級會員
- 文章總數 : 232
年齡 : 53
來自 : 台中
職業 : 程式設計
愛好 : 音樂
個性 : 隨和
使用年資 : 10 年
使用版本 : 2013
積分 : 3
經驗值 : 6758
威望值 : 361
注冊日期 : 2010-09-20
AutoCAD顧問 :: 技術(發言等級:一般會員) :: :: 進階討論
第1頁(共1頁)
這個論壇的權限:
您 無法 在這個版面回復文章