| | |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| | |
 | Konstruktionsfeedback neu gedacht: CAD-Modelle teilen, kommentieren, verstehen, ein Webinar am 23.06.2026
|
|
Autor
|
Thema: Stückliste auslesen - API (2960 mal gelesen)
|
Stephan86 Mitglied
 Beiträge: 2 Registriert: 27.02.2006
|
erstellt am: 27. Feb. 2006 21:52 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Tut mir jetzt schon fast leid, das ich euch schon wieder mit der Stückliste nerven muss  Möchte gern die Daten aus der Stückliste in eine externe Excel-Datei eintragen.Komm aber nicht an die Stückliste ran(bin kein VBA-Profi). Code: Dim swApp As Object Dim swModel As ModelDoc2 Dim swDraw As DrawingDoc Dim swSheet As Sheet Dim swView As view Dim swActiveView As view Dim BomTable As BomTable Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swModel Set swSheet = swDraw.GetCurrentSheet Set swActiveView = swDraw.ActiveDrawingView Set swView = swDraw.GetFirstView Set BomTable = swView.GetBomTable() MsgBox BomTable.GetRowCount()
Jetzt bekomm ich in der letzten Zeile immer den Fehler "Objektvariable oder With-Blockvariable nicht festgelegt" Was mach ich denn falsch? MfG Stephan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mkkk Mitglied
 
 Beiträge: 105 Registriert: 04.03.2005
|
erstellt am: 28. Feb. 2006 09:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Stephan86
Schau doch mal in der API-Hilfe nach: Remarks This method only returns the visible rows in the BOM table. Before you use any of the BomTable methods, activate the BOM Table using BomTable::Attach. After you finish getting BOM data, use BomTable: etach to deactivate the table. This method returns 0 if the BOM is obscured, which may occur when debugging a macro. This is a quirk in Microsoft Excel, which is used by SolidWorks for the BOM functionality Zunächst mußt Du BomTable::Attach aufrufen um Zugriff auf die Tabelle zu erlangen. Gruß, Markus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ABarth Mitglied Ing. Maschinenbau

 Beiträge: 23 Registriert: 12.02.2003 SolidWorks 2008
|
erstellt am: 28. Feb. 2006 14:33 <-- editieren / zitieren --> Unities abgeben:          Nur für Stephan86
Hallo Stephan, wenn es sich bei der Stückliste um eine SWX -Stückliste handelt (und nicht um eine Excel-Stüli) dann suche doch nach dem BOM-Feature und werte darüber aus. So habe ich das gemacht: Code:
Dim swApp As Object Dim swModel As ModelDoc2 Dim swDraw As DrawingDoc Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swDraw = swModel Dim swFeat As SldWorks.Feature Dim swBomFeat As SldWorks.BomFeature Dim vTableArr As Variant Dim swTable As SldWorks.TableAnnotation Set swFeat = swDraw.FirstFeature Do While Not swFeat Is Nothing If "BomFeat" = swFeat.GetTypeName Then Set swBomFeat = swFeat.GetSpecificFeature2 vTableArr = swBomFeat.GetTableAnnotations Set swTable = vTableArr(0) '----zeilenweises Auslesen der swTable------------------------------ For ZReihe = 1 To swTable.RowCount - 1 For ZSpalte = 0 To swTable.ColumnCount - 1 MsgBox "Spalte: " & swTable.GetColumnTitle(ZSpalte) & _ " / " & "Zeile: " & ZReihe & _ " / " & "Inhalt: " & swTable.Text(ZReihe, ZSpalte) Next ZSpalte If ZReihe = 2 Then Exit For '<--- nur wegen der vielen MsgBoxen..:-) Next ZReihe '------------------------------------------------------------------ End If Set swFeat = swFeat.GetNextFeature Loop
Viele Grüsse Andreas..... [Diese Nachricht wurde von ABarth am 28. Feb. 2006 editiert.] [Diese Nachricht wurde von ABarth am 28. Feb. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Stephan86 Mitglied
 Beiträge: 2 Registriert: 27.02.2006
|
erstellt am: 01. Mrz. 2006 20:28 <-- editieren / zitieren --> Unities abgeben:         
|
u.clemens Mitglied Konstrukteur
  
 Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 02. Mrz. 2006 09:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Stephan86
|