Sehr geehrter Herr Klingenberg,
diese Aufgabenstellung lässt sich z.B. mittels VBA lösen.
Egal ob VBA unter Excel - Zugriff auf AM oder aber von AM aus und Daten nach Excel.
Wir haben den Weg "über VBA von Excel aus" gewählt.
In eine erste Tabelle bringen wir sämtliche Attributdaten.
Mit denen wird der Stücklistenkopf ausgefüllt.
Anschliessend werden die BOM (Stücklistendaten) eingelesen.
Diese Daten in dem ersten Rechenblatt können schön sortiert werden,
das war bei der Programmerstellung ein gangbarer Weg, Sonderzeichen sollten noch ausgetauscht werden (z.B. Durchmesser, plus/minus, usw.).
Ein zweites Rechenblatt ist nunmehr die Stüli. Der Vordruck.
Sämtliche Daten aus dem ersten Rechenblatt werden nunmehr in diesen Vordruck eingelesen, jeweils in die richtige Spalte und Zeile.
Information zu diesem speziellen Thema Stücklisten i.e. der PartRef, der BOM und der Balloon findet sich im Installationsverzeichnis von Ihrem AM im Ordner Hilfe:
1. mcadvba.chm
Kapitel 9 beschreibt Symbols and Bill of Material.
insbesondere der letzte Abschnitt, Sub BOM Automation() ist für den Interessenten von Bedeutung. Daneben
2. mcadauto.hlp
Die beiden Routinen unter Examples sind anzusehen.
Zu der Aufgabe von Excel aus auf das AutoCAD bzw. das AM zuzugreifen finden sich auch Beispiele.
Mit obigen Tipps hoffe ich etwas beigetragen zu haben.
Für weitere Ausführungen bzw. Beispiele wird uns der Moderator eh ins ACAD VBA verbannen.
Vielleicht für Interessenten von VBA zur Einführung folgendes:
Sub SuFind()
Dim Such As String
Such = InputBox("gesuchte Positions-Nummer : ")
Dim symbb As McadSymbolBBMgr
Set symbb = ThisDrawing.Application.GetInterfaceObject("SymBBAuto.McadSymbolBBMgr")
Dim objName As String
Dim entry As AcadEntity
For Each entry In ThisDrawing.ModelSpace
objName = entry.ObjectName
If objName = "AcmBalloon" Then
Dim Items As McadBOMItems
Set Items = entry.BOMItems
Dim Pos As String
Dim Item As McadBOMItem
For Each Item In Items
Pos = Item.ItemNumber
If Pos = Such Then
entry.Highlight True
ThisDrawing.Application.Update
entry.GetBoundingBox MinPunkt, MaxPunkt
ZoomWindow MinPunkt, MaxPunkt
MsgBox "Pos-Nr.", vbOKOnly + vbInformation, Pos
entry.Highlight False
End If
Next
End If
Next
End Sub
laden Sie sich das als Makro. Schalten Sie unter Verweis die notwendigen Bibliotheken zu (AutoCAD MCADAuto Type Library und die Autodesk SymBBAuto Type Library.
Das Beispiel-Makro dient der Suche nach einer Positionsnummer.
Den Zugriff auf die Stücklistendaten können Sie daraus bereits ableiten: Bringen Sie einen Stop-Befehl nach Pos=Item.ItemNumber ein.
Schalten Sie in der Ansicht das Lokal-Fenster dazu und suchen Sie nachdem das Programm anhält nach Item, Data. Sie finden die Stücklistendaten der betreffenden Position:
(Data(0), Data(1)...) als ein zweidimensionales Feld.
Den Zugriff finden sie in o.g. Beispielen dargestellt
mit freundlichem Gruss
Hans Krissler
PS. Sollten Sie eine schön formattierte Stüli haben, die von meinem Mandanten mag ich nicht veröffentlichen: eMail ib-krissler@t-online.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP