Produkt: AutoCAD 2006
Datum: 16.02.2006
Ukázková funkce ExportCoords ukazuje využití vlastností objektů a převod objektových typů proměnných. Funkce se dotáže na výběrovou množinu (musí být ve výkresu jedinečná, takže při každém použití původní množinu maže), poté prochází vybrané objekty a u objektů typu Point, Shape a BlockReference exportuje jejich souřadnice vložení, u objektů typu Polyline (křivka) exportuje souřadnice jejich jednotlivých vrcholů. Exportované souřadnice X-Y-Z jsou zapisovány do textového souboru C:\ExportCoords.txt (odděleny mezerami).
Funkci lze použít pro vykazování souřadnic bodových a křivkových objektů výkresu - seznam souřadnic lze např. vložit zpět do výkresu nebo načíst do Excelu.
Pro přenesení VBA kódu funkce si pomocí Alt-F11 spusťte editor VBA a zkopírujte si tento jednoduchý kód (nebo si otevřete přiložený projekt .DVB):
Public
Sub ExportCoords()Dim
AcSSetAs
AcadSelectionSetDim
ptAs
VariantOn Local Error Resume Next
If
TypeName(SelectionSets("ExportCoords")) = "Nothing"Then
SelectionSets.Add "ExportCoords"End If
Set
AcSSet = SelectionSets("ExportCoords") AcSSet.Clear AcSSet.SelectOnScreenOpen
"C:\ExportCoords.txt"For Output As
#1'hard coded
If
AcSSet.Count > 0 ThenFor
X = 0To
AcSSet.Count - 1Set
Object = AcSSet.Item(X)Select Case
TypeName(Object)Case
"IAcadPolyline", "IAcadLWPolyline", "IAcad3DPolyline"For
i = 0To
GetVertexCount(Object) - 1 OutStr = Utility.RealToString(Object.Coordinate(i)(0), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(Object.Coordinate(i)(1), acDefaultUnits, 3)If
TypeName(Object) = "IAcad3DPolyline"Then
OutStr = OutStr & " " & Utility.RealToString(Object.Coordinate(i)(2), acDefaultUnits, 3)Else
OutStr = OutStr & " " & Utility.RealToString(Object.Elevation, acDefaultUnits, 3)End If
Next
Case
"IAcadPoint" pt = Object.Coordinates OutStr = Utility.RealToString(pt(0), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(pt(1), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(pt(2), acDefaultUnits, 3)Case
"IAcadBlockReference2", "IAcadShape" pt = Object.InsertionPoint OutStr = Utility.RealToString(pt(0), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(pt(1), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(pt(2), acDefaultUnits, 3)End Select
Next
End If
Close
AcSSet.DeleteEnd Sub
Public Function
GetVertexCount(Polyline)As Integer
On Error Resume Next
Select Case
TypeName(Polyline)Case
"IAcadLWPolyline" VertList = Polyline.Coordinates GetVertexCount = (UBound
(VertList) + 1) / 2Case
"IAcadPolyline", "IAcad3DPolyline" VertList = Polyline.Coordinates GetVertexCount = (UBound
(VertList) + 1) / 3End Select
End Function
Nyní již jen musíme vyvolat nově vytvořenou funkci. Ve spuštěném AutoCADu stiskněte Alt-F8 a v seznamu maker zvolte ExportCoords. Pro automatické spuštění lze využít např. příkaz APLČTI (_APPLOAD) a příkaz -VBARUN.
Copyright © 2006 CAD Studio a.s.