Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Stückliste per API in VBA auslesen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
Autor Thema:  Stückliste per API in VBA auslesen (4729 mal gelesen)
mmac
Mitglied
Dipl.-Ing. (FH) - Maschinenbau


Sehen Sie sich das Profil von mmac an!   Senden Sie eine Private Message an mmac  Schreiben Sie einen Gästebucheintrag für mmac

Beiträge: 30
Registriert: 01.08.2005

SW2018

erstellt am: 19. Jun. 2011 10:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Zusammen,

ich habe mir aus der API-Hilfe ein Programmbeispiel in Access 2007 kopiert. Ziel ist es die Werte Pos., Menge, Artikelnr. aus einer Baugruppenstückliste, welche sich in einer Zeichnung befindet, auszulesen und weiter zu verarbeiten.
Es soll nur die oberste Ebene ausgelesen werden, eben genau die Werte, welche in der Zeichnungsstückliste zu sehen sind.

Hier der Beispielcode:

Public Function sl_read()

    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
    Dim swSelMgr                As SldWorks.SelectionMgr
    Dim swTable                As SldWorks.TableAnnotation
    Dim swBomTable              As SldWorks.BomTableAnnotation

    Dim i                      As Long

    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
    Set swTable = swSelMgr.GetSelectedObject5(1)
    Set swBomTable = swTable

    Debug.Print "File = " & swModel.GetPathName

    For i = 0 To swTable.ColumnCount

        Debug.Print "  Column(" & i & ") = " & swBomTable.GetColumnCustomProperty(i)

    Next i

End Function

Hier das Debug.Print - Ergebnis:

  Column(0) =
  Column(1) = PartNo
  Column(2) =
  Column(3) = Description
  Column(4) =
  Column(5) =

Es wird also schon mal erkannt, dass die SL 5 Spalten hat. Seltsamerweise bringt der Programmcode "nur" 2 Spaltenüberschriften.
Zur Abarbeitung bräuchte ich noch die Spaltenbezeichner für die Pos. und die Menge.

Unterschiedliche Konfigurationen sollen nicht berücksichtigt werden, es wird die "Standard-Konfiguration" sein.

Hat mir jemand einen Tipp, wie ich ermitteln kann, welche Spalten auszulesen sind, so dass die Pos. und Artikelnr. bekomme?

Vielen Dank schon mal im Voraus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1087
Registriert: 06.05.2002

SWX Premium 2023-Sp5

erstellt am: 20. Jun. 2011 17:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mmac 10 Unities + Antwort hilfreich

Ich habe es so gemacht, wie hier:

http://ww3.cad.de/foren/ubb/Forum2/HTML/022349.shtml#000006

Würde mich auch interessieren, ob man die Pos.-Nr und Menge auch anders heraus finden kann.

Gruß, Klaus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



Sehen Sie sich das Profil von StefanBerlitz an!   Senden Sie eine Private Message an StefanBerlitz  Schreiben Sie einen Gästebucheintrag für StefanBerlitz

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 21. Jun. 2011 08:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mmac 10 Unities + Antwort hilfreich

Hallo mmac,

nur mal so einen Schuß ins Blaue: sollte dir TableAnnotation::GetColumnType nicht genau das zurückgeben, also den "Typ" der Spalte? Ich hab mal ein Minimakro gemacht und bekomm z.B. für die Spalte mit der Position davon auch als Ergebnis 201, also die "Const swBomTableColumnType_PartNumber = 201" zurück, scheint zu klappen 

Für die benutzerdefinierten Spalten könntest du auch einfach den Text in den Headerzeilen auslesen (es können ja theoretisch mehrere sein). Mit TableAnnotation::GetHeaderCount bekommst du die Anzahl der Kopfzeilen heraus, und dann mit TableAnnotation::Text(zeile,spalte) den darin enthaltenen Text.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

riesi
Mitglied
CAD-Admin


Sehen Sie sich das Profil von riesi an!   Senden Sie eine Private Message an riesi  Schreiben Sie einen Gästebucheintrag für riesi

Beiträge: 1087
Registriert: 06.05.2002

SWX Premium 2023-Sp5

erstellt am: 21. Jun. 2011 09:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für mmac 10 Unities + Antwort hilfreich

Guten Morgen Stefan!
Genau das ist es.

Code:

Const swBomTableColumnType_PartNumber = 202
Const swHoleTableColumnType_Quantity = 203

Vielen Dank, Klaus.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

mmac
Mitglied
Dipl.-Ing. (FH) - Maschinenbau


Sehen Sie sich das Profil von mmac an!   Senden Sie eine Private Message an mmac  Schreiben Sie einen Gästebucheintrag für mmac

Beiträge: 30
Registriert: 01.08.2005

SW2018

erstellt am: 21. Jun. 2011 19:47    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Stefan und riesi,

vielen Dank für eure Unterstützung, ich werde mich mal versuchen.

Gruß

Martin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2024 CAD.de | Impressum | Datenschutz