Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - Stückliste nach bestimmter Spalte sortieren

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
  
MySolidWorks: Online Lernen & Recherchieren rund um SOLIDWORKS >> (SOLIDWORKS)
Autor Thema:  API - Stückliste nach bestimmter Spalte sortieren (1461 mal gelesen)
Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 18. Apr. 2018 21:34    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


Stueckliste-Spalte-01.JPG


Stueckliste-Spalte-02.JPG


Stueckliste-Spalte-03.JPG

 
Hallo,
durch meine anderen Beiträge haben sicherlich schon einige mitbekommen, dass ich an einem Makro dran bin, welches Stücklisten in Zeichnungen aktualisieren soll.
Unter anderem soll dieses Makro auch die Stückliste nach einer bestimmten Spalte sortieren, und zwar nach unserer Spalte "Zeichnungsnummer".
Hierzu gibt es verschiedene Beispiele, unter anderem auch in der API-Hilfe. ( Sort Table Example (VBA) )

hier ein Auszug aus meinem Code:

Code:

            'nach Spalte 3 sortieren
            vTables = swBomFeat.GetTableAnnotations
            Set swBomTable = vTables(0)
            Set swSortData = swBomTable.GetBomTableSortData
           
            'Geben Sie die literale Sortiermethode an
            swSortData.SortMethod = swBomTableSortMethod_Literal
            swSortData.ColumnIndex(0) = 2  ' primäre Sortierung in Spalte 3
            swSortData.Ascending(0) = True ' aufsteigend sortieren
            swSortData.ColumnIndex(1) = -1 ' keine sekundäre Sortierung
            swSortData.Ascending(1) = True ' aufsteigend sortieren
            swSortData.ColumnIndex(2) = -1 ' keine tertiäre Sortierung
   
            swSortData.DoNotChangeItemNumber = False
            swSortData.SaveCurrentSortParameters = True    'gewählte Sortierung speichern
            boolstatus = swBomTable.Sort(swSortData)        'Sortieren

Dieser Code sollte nach der dritten Spalte sortieren (Spalte 1 = 0), und bei mir ist die dritte Spalte = "Zeichnungsnummer".
Tut er auch, solange im Teil bzw. der Baugruppe nur eine Konfig vorhanden ist.
Sobald eine weitere Konfig existiert, werden im Auswahlfenster weitere Sortieroptionen angeboten.
Existierende Konfigs werden oberhalb von "Zeichnungsnummer" angezeigt. "Stk."
Neue Konfigs werden ganz unten hinzugefügt. Siehe Bild 02 und 03.
Lösche ich die Tabelle und erzeuge sie neu, werden die 3 "Stk." alle oberhalb von "Zeichnungsnummer" eingereiht.
Dieses Verhalten führt dazu, dass "Zeichnungsnummer" ständig wechselnde Spaltenpositionen einnimmt.  :D

Nach der Spaltenüberschrift "Zeichnungsnummer" kann man so direkt nicht sortieren, es muss eine Ziffer angegeben werden.
Ich würde gerne die Spaltenüberschriften aller swSortData.ColumnIndex(0) auslesen, um die richtige definieren zu können, aber ich weiß nicht wie, habe nichts entsprechendes gefunden?

Weiß jemand von euch wie das gehen könnte, oder hat sonst irgend einen Lösungsansatz?

Über den folgenden Code kann ich zwar die Spaltenüberschriften auslesen, aber diese Spalten-Nr. hat nichts mit der Sortier-Nr. zu tun.

Code:

ColumnTitle = SwTabAnn.GetColumnTitle(i)  'Textinhalt der gewünschten Spaltenüberschrift

Bin also etwas ratlos und ich denke, es ist evtl. ein Bug. 

Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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: 19. Apr. 2018 08:55    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 Andi Beck 10 Unities + Antwort hilfreich

Hallo Andi,

keine Lösung von hier, aber vielleicht ein Hinweis oder zwei, die mir beim nachspielen deines Phänomens aufgefallen sind.

Zum einen kann ich das nicht nachstellen, dass ich auf einmal zusätzliche Sortieroptionen angezeigt bekomme, wenn ich einer Baugruppe zusätzliche Konfigurationen gebe oder den Komponenten darin. Ich bekomme immer nur die "Spalten", die in meienr Stückliste auch drin sind.

Damit dann zum Punkt 2: bei rumspielen ist mir aufgefallen, dass swTableAnn.GetColumnTitle(i) immer nur die sichtbaren Spalten ausgibt, bei der Sortierung aber alle SPalten, auch die ausgeblendeten berücksichtigt werden. Könnte es also sein, dass du in deiner Stückliste ein paar ausgeblendete Spalten drin hast, die zufällig alle die Dateieigenschaft "Stk." darstellen? Dann kann ich deine Anzeige auf provozieren und dann stimmt natürlich die Nummer von GetColumnTitle nicht mit der "echten" Spaltennummer inkl. der ausgeblendeten überein.

Ob Spalten ausgeblendet sind müsstest du nachvollziehen können, wenn swTableAnn.ColumnCount und swTableAnn.TotalColumnCount unterschiedlich sind.

Und mit

Code:
    ColCount = swTableAnn.TotalColumnCount
    For i = 0 To ColCount - 1
        Debug.Print i & " hidden: " & swTableAnn.ColumnHidden(i)
    Next

bekommst du dann heraus, welche Spalten ausgeblendet sind, kannst dir das merken, wahlweise umrechnen oder einfach kurz alle Spalte einblenden, deine Sortierung jetzt nach der richtigen Nummer machen und anschließend die gemerkten wieder ausblenden.

Vielleicht liegt es ja wirklich an ausgeblendeten Spalte 

Ciao,
Stefan

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

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 19. Apr. 2018 10:08    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


Mengen-Spaltenname.JPG

 
Zitat:
Original erstellt von StefanBerlitz:

Vielleicht liegt es ja wirklich an ausgeblendeten Spalte  

Hallo Stefan, 
und besten Dank für deine Ausführungen.

Nein, wir haben keine ausgeblendeten Spalten, welche ich evtl. wieder einblenden könnte.
Und ja, die Anzahl der Spalten sind bei mir auch unterschiedlich, wenn ich mehr als eine Konfig habe.
Also je nachdem wo ich zähle, in der Tabelle oder in der Funktion Sortierung.

Bei mir werden alle Spalten der Stückzahl von Konfigurationen mit der Überschrift "Stk." angezeigt.
Das liegt an der Grundeinstellung wie im Bild zu sehen ist.
Nehme ich diesen Haken raus , wird statt "Stk." eben die Standardeinstellung verwendet, also "01/Menge" und "02/Menge" usw.
Diese werden mir aber ebenfalls alle im Sortierendialog angeboten, obwohl in der Zeichnung nur eine Konfig eingesetzt ist.

sehr mysteriös, Grüße, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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

Andi Beck
Ehrenmitglied V.I.P. h.c.
Konstrukteur



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

Beiträge: 2572
Registriert: 02.10.2006

Firma: SW 2023-4.0 + PDM Prof.
Windows 10 Pro 64bit, i9-11900
32 GbRAM, Quadro P2200
Home:
SW 2022-5.0
Passungstabelle von Heinz
Windows 11 Pro 64bit,
i7-12700K, 32 GbRAM,
GeForce GTX 1050Ti
Samsung C34H892, 3440x1440 Pixel

erstellt am: 19. Apr. 2018 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

ich nochmal,
wie zähle ich die Anzahl der möglichen Spalten in der Sortierfunktion?

mein Code:

Code:

            'Ermitteln der Anzahl von möglichen Sortierspalten
            Dim xSpalten As Long
            Dim xSpalte As Long
            xSpalten = 1
            Do Until xSpalten = -1    'solange durch die Schleife, bis Ergebnis -1 ist
                xSpalte = xSpalten
                swSortData.ColumnIndex(0) = xSpalten + 1
                xSpalten = swSortData.ColumnIndex(0)
            Loop

und wieder wech, Andi

------------------
Hast du kein Problem?
Such dir eins. ( Und löse es )

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