| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | In CATIA den Maßstab ändern - so geht es, ein Fachartikel
|
|
Autor
|
Thema: [Makro] Stückliste auswählen (2499 mal gelesen)
|
Findu Mitglied

 Beiträge: 12 Registriert: 27.07.2010 SolidWorks 2010
|
erstellt am: 01. Mrz. 2011 17:35 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich suche und probiere jetzt schon eine geraume Zeit, habe es aber leider nicht geschafft. Ich versuche von einer geöffeneten Zeichnung, die eine Stückliste, die dort vorhanden ist, auszuwählen. Der Basiscode: Code:
Dim swApp As Object Dim Part As Object Set swApp = CreateObject("SldWorks.Application") swApp.Visible = True Set Part = swApp.ActiveDocDim swView As Object Set swView = Part.GetFirstView Set swBOMTable = swView.GetBomTable
swBOMTable ist leider leer. Dann habe ich versucht, dass per while-Schleife zu erweitern: Code:
Dim swApp As Object Dim Part As Object Set swApp = CreateObject("SldWorks.Application") swApp.Visible = True Set Part = swApp.ActiveDocDim swView As Object Set swView = Part.GetFirstView Set swBOMTable = swView.GetBomTable Do While swBOMTable Is Nothing swView = swView.GetNextView swBOMTable = swView.GetBomTable Loop
Das resultiert mit diversen Ausschmückungen entwerder in einer Endlosschleife oder in "Laufzeitfehler 91". Darum bin ich der Meinung, dass ich den falschen Ansatz gewählt habe. Wisst ihr, wie man die Tabelle auswählen kann? mfG Findu Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ad_man Mitglied freiberuflicher Entwicklungsing. (Fahrzeugtechnik, CSWP, CPPA))
   
 Beiträge: 1384 Registriert: 20.12.2003 SolidWorks 2023 SP5 mit Enterprise PDM , Windows 11, Dell Precision 3660, i7-12700K, 96 GB DDR-Ram, Quadro RTX A4000
|
erstellt am: 01. Mrz. 2011 20:11 <-- editieren / zitieren --> Unities abgeben:          Nur für Findu
Hallo Findu, du bist dir aber darüber im Klaren, dass du mit der GetBOMTable-Methode nur auf Excel-basierende Stülis zurückgreifen kannst? Der Zugriff auf die SWX -Stülis ist in dem Beispiel "Get Components in Each BOM Table Row (VBA)" beschrieben. ------------------ ========== Gruß Andreas ========== Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 02. Mrz. 2011 06:36 <-- editieren / zitieren --> Unities abgeben:          Nur für Findu
Hallo Findu das sollte das eigentlich erledigen ist ein etwas abgewandelter Code der als Beispiel in der Online-Hilfe unter dem Suchbegriff "Get Table Annotation and Contents Example (VBA)" zu finden ist die Stückliste ist dann in swTable gespeichert Sub main() Dim swApp As Object Dim swModel As Object Dim swDraw As Object Dim swView As Object Dim swTable As Object Dim gefunden As Boolean Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swModel Set swView = swDraw.GetFirstView gefunden = False Do While Not swView Is Nothing And gefunden = False Set swTable = swView.GetFirstTableAnnotation Do While Not swTable Is Nothing And gefunden = False If swTable.Type = swTableAnnotation_BillOfMaterials Then gefunden = True End If If gefunden = False Then Set swTable = swTable.GetNext Loop Set swView = swView.GetNextView Loop End Sub ------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Findu Mitglied

 Beiträge: 12 Registriert: 27.07.2010 SolidWorks 2010
|
erstellt am: 03. Mrz. 2011 15:56 <-- editieren / zitieren --> Unities abgeben:         
Danke für die Hilfe, der Code scheint zu funktionieren. @ad_man Ich dachte eigentlich, allerdings habe ich das missverstanden. Ich dachte die Funktion liefert eine Stückliste in Excelkompatiblem Format zurück, unabhängig davon, was wirklich vorliegt. mfG Findu Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |