- 积分
- 5987
- 明经币
- 个
- 注册时间
- 2006-7-8
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
- Sub ReadEntityData()
- Dim Obj As AcadEntity
- Dim sel As AcadSelectionSet
- Dim seldata(0) As Variant, selcode(0) As Integer
- Dim gpdata As Variant, gpcode As Variant
- Dim pt(0 To 2) As Double, pt1(0 To 2) As Double
- With ThisDrawing
- ret = .Utility.GetPoint(, "指定左上角:")
- SetRet ret, pt
- ret = .Utility.GetCorner(pt, "指定对角点:")
- SetRet ret, pt1
- Set sel = .SelectionSets.Add("ss")
- selcode(0) = 0: gpcode = selcode
- seldata(0) = "Line": gpdata = seldata
- sel.Select acSelectionSetCrossing, pt, pt1, gpcode, gpdata
- Debug.Print "Line ", sel.Count
- .SelectionSets.Item("ss").Clear
- 'Set sel = .SelectionSets.Add("ss")
- selcode(0) = 0: gpcode = selcode
- seldata(0) = "Dimension": gpdata = seldata
- sel.Select acSelectionSetCrossing, pt, pt1, gpcode, gpdata
- Debug.Print "Dimension ", sel.Count
-
- .SelectionSets.Item("ss").Delete
- End With
-
- End Sub
- Private Sub SetRet(ret As Variant, pt() As Double)
- pt(0) = ret(0)
- pt(1) = ret(1)
- pt(2) = ret(2)
- End Sub
- Function xlApp() As Object
- ' Dim xlApp As Object ' This Line ,Not set Excel , run Excel
- 'Dim xlsheet As Object
-
- ' 发生错误时跳到下一个语句继续执行
- On Error Resume Next
- ' 连接Excel应用程序
- Set xlApp = GetObject(, "Excel.Application")
-
- If Err.Number <> 0 Then
- Set xlApp = CreateObject("Excel.Application")
- xlApp.Visible = True
- xlApp.Workbooks.Add
- End If
- ' 返回当前活动的工作表
- End Function
- Sub ObjectToExcel()
- Set ArcXlsheet = xlApp.Sheets(1)
- ArcXlsheet.Name = "Arc"
- Set CircleXlSheet = xlApp.Sheets(2)
- CircleXlSheet.Name = "Circle"
- Set PolylineXlSheet = xlApp.Sheets(3)
- PolylineXlSheet.Name = "Polyline"
- Set LineXlsheet = xlApp.Sheets.Add
- LineXlsheet.Name = "Line"
- Set Mtextxlsheet = xlApp.Sheets.Add
- Mtextxlsheet.Name = "MText"
- Set TextXlSheet = xlApp.Sheets.Add
- TextXlSheet.Name = "Text"
- Set DimensionXlSheet = xlApp.Sheets.Add
- DimensionXlSheet.Name = "Dimension"
- End Sub
- Sub ls()
- Dim Obj As AcadEntity
- Dim sel As AcadSelectionSet, kk As AcadSelectionSet
- Dim seldata(0) As Variant, selcode(0) As Integer
- Dim gpdata As Variant, gpcode As Variant
- Dim pt(0 To 2) As Double, pt1(0 To 2) As Double
-
- With ThisDrawing
- 'If Not IsNull(ThisDrawing.SelectionSets.Item("sss")) Then
- 'ThisDrawing.SelectionSets.Item("sss").Delete
- Set sel = .SelectionSets.Add("sss")
- 'End If
- '' Line
- selcode(0) = 0: gpcode = selcode
- seldata(0) = "Line": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Set kk = ReadLineAttribute(sel)
- Debug.Print "Line ", sel.Count
- '''
- sel.Clear
- seldata(0) = "Dimension": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "Dimension ", sel.Count
- ''
- sel.Clear
- seldata(0) = "LWPOLYLINE": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "LWPOLYLINE ", sel.Count
- ''
- sel.Clear
- seldata(0) = "POLYLINE": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "POLYLINE ", sel.Count
- '''
- sel.Clear
- seldata(0) = "Text": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "Text ", sel.Count
- ''
- sel.Clear
- seldata(0) = "MText": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "MText ", sel.Count
- '' Arc Data
- sel.Clear
- seldata(0) = "Arc": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Set kk = ReadArcAttribute(sel)
- ''
- sel.Clear
- seldata(0) = "Circle": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "Circle ", sel.Count
- ''
- sel.Clear
- seldata(0) = "Ellipse": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "Ellipse ", sel.Count
- ''
- sel.Clear
- seldata(0) = "HATCH": gpdata = seldata
- sel.Select acSelectionSetAll, , , gpcode, gpdata
- Debug.Print "Hatch ", sel.Count
-
- .SelectionSets.Item("sss").Delete
- End With
- End Sub
- ' Function Line
- Function ReadLineAttribute(InputSel As AcadSelectionSet) As AcadSelectionSet
- Dim ll As AcadLine
- Set LineXlsheet = xlApp.Sheets("Line")
-
- ii = 1
- With ll
- For jj = 0 To 2
- LineXlsheet.Cells(ii, jj + 1).Value = "StartPoint(" & jj & ")"
- LineXlsheet.Cells(ii, jj + 4).Value = "EndPoint(" & jj & ")"
- LineXlsheet.Cells(ii, jj + 7).Value = "Delta(" & jj & ")"
- Next jj
- LineXlsheet.Cells(ii, 10).Value = "Length"
- LineXlsheet.Cells(ii, 11).Value = "Layer"
- LineXlsheet.Cells(ii, 12).Value = "Linetype"
- LineXlsheet.Cells(ii, 13).Value = "LinetypeScale"
- LineXlsheet.Cells(ii, 14).Value = "Lineweight"
- LineXlsheet.Cells(ii, 15).Value = "Color"
- End With
-
-
- ii = 2
- For Each ll In InputSel
- With ll
- For jj = 0 To 2
- LineXlsheet.Cells(ii, jj + 1).Value = Round(.StartPoint(jj), 2)
- LineXlsheet.Cells(ii, jj + 4).Value = Round(.EndPoint(jj), 2)
- LineXlsheet.Cells(ii, jj + 7).Value = Round(.Delta(jj), 2)
- Next jj
- LineXlsheet.Cells(ii, 10).Value = .Length
- LineXlsheet.Cells(ii, 11).Value = .Layer
- LineXlsheet.Cells(ii, 12).Value = .Linetype
- LineXlsheet.Cells(ii, 13).Value = .LinetypeScale
- LineXlsheet.Cells(ii, 14).Value = .Lineweight
- LineXlsheet.Cells(ii, 15).Value = .color
- End With
- ii = ii + 1
- Next ll
- End Function
- '''Function Arc
- Function ReadArcAttribute(InputSel As AcadSelectionSet) As AcadSelectionSet
- Dim Aa As AcadArc
- Set ArcXlsheet = xlApp.Sheets("Arc")
-
- ii = 1
- With Aa
- For jj = 0 To 2
- ArcXlsheet.Cells(ii, jj + 1).Value = "Center(" & jj & ")"
- ArcXlsheet.Cells(ii, jj + 4).Value = "StartPoint(" & jj & ")"
- ArcXlsheet.Cells(ii, jj + 7).Value = "EndPoint(" & jj & ")"
-
- Next jj
- ArcXlsheet.Cells(ii, 10).Value = "StartAngle"
- ArcXlsheet.Cells(ii, 11).Value = "EndAngle"
- ArcXlsheet.Cells(ii, 12).Value = "TotalAngle"
- ArcXlsheet.Cells(ii, 13).Value = "Radius"
- ArcXlsheet.Cells(ii, 14).Value = "ArcLength"
- ArcXlsheet.Cells(ii, 15).Value = "Area"
- ArcXlsheet.Cells(ii, 16).Value = "Layer"
- ArcXlsheet.Cells(ii, 17).Value = "Linetype"
- ArcXlsheet.Cells(ii, 18).Value = "LinetypeScale"
- ArcXlsheet.Cells(ii, 19).Value = "Lineweight"
- ArcXlsheet.Cells(ii, 20).Value = "color"
- End With
-
-
- ii = 2
- For Each Aa In InputSel
- With Aa
- For jj = 0 To 2
- ArcXlsheet.Cells(ii, jj + 7).Value = Round(.Center(jj), 2)
- ArcXlsheet.Cells(ii, jj + 1).Value = Round(.StartPoint(jj), 2)
- ArcXlsheet.Cells(ii, jj + 4).Value = Round(.EndPoint(jj), 2)
-
- Next jj
-
- ArcXlsheet.Cells(ii, 10).Value = .StartAngle
- ArcXlsheet.Cells(ii, 11).Value = .EndAngle
- ArcXlsheet.Cells(ii, 12).Value = .TotalAngle
- ArcXlsheet.Cells(ii, 13).Value = .Radius
- ArcXlsheet.Cells(ii, 14).Value = .ArcLength
- ArcXlsheet.Cells(ii, 15).Value = .Area
- ArcXlsheet.Cells(ii, 16).Value = .Layer
- ArcXlsheet.Cells(ii, 17).Value = .Linetype
- ArcXlsheet.Cells(ii, 18).Value = .LinetypeScale
- ArcXlsheet.Cells(ii, 19).Value = .Lineweight
- ArcXlsheet.Cells(ii, 20).Value = .color
- End With
- ii = ii + 1
- Next
- End Function
|
|