Produkt: AutoCAD 2006
Datum: 16.02.2006
Stáhnout VBA projekt (5 KByte)
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):
PublicSub ExportCoords()DimAcSSetAsAcadSelectionSetDimptAsVariantOn Local Error Resume NextIfTypeName(SelectionSets("ExportCoords")) = "Nothing"ThenSelectionSets.Add "ExportCoords"End IfSetAcSSet = SelectionSets("ExportCoords") AcSSet.Clear AcSSet.SelectOnScreenOpen"C:\ExportCoords.txt"For Output As#1'hard codedIfAcSSet.Count > 0 ThenForX = 0ToAcSSet.Count - 1SetObject = AcSSet.Item(X)Select CaseTypeName(Object)Case"IAcadPolyline", "IAcadLWPolyline", "IAcad3DPolyline"Fori = 0ToGetVertexCount(Object) - 1 OutStr = Utility.RealToString(Object.Coordinate(i)(0), acDefaultUnits, 3) OutStr = OutStr & " " & Utility.RealToString(Object.Coordinate(i)(1), acDefaultUnits, 3)IfTypeName(Object) = "IAcad3DPolyline"ThenOutStr = OutStr & " " & Utility.RealToString(Object.Coordinate(i)(2), acDefaultUnits, 3)ElseOutStr = OutStr & " " & Utility.RealToString(Object.Elevation, acDefaultUnits, 3)End IfNextCase"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 SelectNextEnd IfCloseAcSSet.DeleteEnd SubPublic FunctionGetVertexCount(Polyline)As IntegerOn Error Resume NextSelect CaseTypeName(Polyline)Case"IAcadLWPolyline" VertList = Polyline.Coordinates GetVertexCount = (UBound(VertList) + 1) / 2Case"IAcadPolyline", "IAcad3DPolyline" VertList = Polyline.Coordinates GetVertexCount = (UBound(VertList) + 1) / 3End SelectEnd 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.