| |
| KISTERS 3DViewStation - Der Schlüssel zur Einsparung von CAD-Lizenzen, eine Pressemitteilung
|
Autor
|
Thema: Part-Anzahl im Product ermitteln (5062 mal gelesen)
|
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 02. Aug. 2011 13:19 <-- editieren / zitieren --> Unities abgeben:
Ich habe ein Makro, das die Eigenschaften einzelner Parts eines Products als XLS-Datei ausgibt. Um die Anzahl der in der Baugruppe incl. Unterbaugruppen enthalten Parts zu bestimmen, kann man z.B. den AssemblyConvertor verwenden. Das hat aber den Nachteil, daß dessen Werte in einer separaten und vorkonfigurierten Datei ausgegeben werden. Diese Daten lassen sich daher nicht direkt für ein eigenes Makro verwenden. Im Forum habe ich eine Variante der rekursiven Suche gefunden, die sehr aufwendig ist und bei mir auch nicht funktioniert: http://ww3.cad.de/foren/ubb/Forum137/HTML/003224.shtml#000003 Mir wäre eine einfachere Version lieber, die ich verstehe und in mein Makro einbauen kann. ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Ehrenmitglied V.I.P. h.c. Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 02. Aug. 2011 13:25 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Zitat: Original erstellt von jdahm: Um die Anzahl der in der Baugruppe incl. Unterbaugruppen enthalten Parts zu bestimmen, kann man z.B. den AssemblyConvertor verwenden. Das hat aber den Nachteil, daß dessen Werte in einer separaten und vorkonfigurierten Datei ausgegeben werden. Diese Daten lassen sich daher nicht direkt für ein eigenes Makro verwenden.
Wieso nicht? Mache ich auch. Ich selbst habe ein Makro in .Net geschrieben, welches die Stücklisteninformationen im HTML-Dokument zerpflückt und verarbeitet, so dass ich eine Gesamtstückliste aller Parts erstellen kann. Kompliziert bleibt es in jedem Fall, wenn man es richtig macht. Dazu gehören nämlich nicht nur die Funktionen, sondern auch Fehlerbehandlung und narrensichere Eingabe. Fakt ist, dass man diese Daten mit VB-Mitteln eben auch auslesen und verarbeiten kann. Was meinst du mit die Anzahl aller in der Baugruppe befindlichen Parts? Möchtest du eine Gesamtstückliste oder nur eine Zahl, die tatsächlich sagt, dass z.B. 128 verschiedene Parts geladen sind? ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 02. Aug. 2011 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
wie im anderen beitrag schon erwähnt habe ich mal eine funktion geschrieben um eine produktstruktur zu erfassen. diese kann man ohne weiteres benutzen um die parts in einem produkt zu zählen (grad ausprobiert..). hier die Sub die das ganze macht: Code:
Sub CATMain() ' Document Structure aufrufen Call M_Doc_Structure.CATMain Dim part_counter As Integer part_counter = 0 For Each fProduct In pProducts If fProduct.DocType = "Part" Then part_counter = part_counter + 1 End If Next MsgBox "Im aktuellen Product befindet/befinden sich " & part_counter & " Part(s)." End Sub
im selben VBA-Projekt muss sich noch die Klasse C_Doc_Structure_Object und das Modul M_Doc_Structure befinden. Die beiden findest du ganz oben auf http://nj.riotdowntown.com/2011/06/obtain-the-structure-for-a-catproduct/ hoffe es hilft, gruß [Diese Nachricht wurde von meisterlumpi am 16. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
jdahm Mitglied Konstrukteur
Beiträge: 137 Registriert: 01.08.2008
|
erstellt am: 02. Aug. 2011 14:56 <-- editieren / zitieren --> Unities abgeben:
Es geht um eine Stückliste. Daher muß ich wissen, wie oft jedes Part insgesamt verbaut wurde. Falls es keine einfache Lösung gibt, wäre es als schlechte Alternative auch möglich, die Daten des AssemblyConvertors in eine Excel-Tabelle auszugeben und alles bis auf die Zusammenfassung zu löschen. Anschließend führe ich das vorhandene script (Part-Eigenschaften) aus, übernehme die Anzahlen aus der ersten Tabelle in die neue und lösche die erste wieder. ------------------ Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
meisterlumpi Mitglied
Beiträge: 118 Registriert: 15.04.2011 Intel Core2 Quad Q6600 2.40 GHz | 4 GB RAM | Win7x64
|
erstellt am: 03. Aug. 2011 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Hallo nochmal dann hatte ich das falsch verstanden. Welche Parts und wie oft diese in einer Baugruppe verwendet werden bekommt man aber auch relativ leicht raus. Beispiel code dazu würde folgendermaßen aussehen: Code:
Sub CATMain() ' Document Structure aufrufen Call M_Doc_Structure.CATMain Dim part_counter As Integer part_counter = 0 Dim PartsFound As Collection Set PartsFound = New Collection Dim PN As Variant Dim PartFound As Boolean Dim eachpart_PN() As String Dim eachpart_count() As Integer For i = 1 To pProducts.Count Set fProduct = pProducts.Item(i) If fProduct.DocType = "Part" Then PartFound = False For Each PN In PartsFound If PN = fProduct.PartNumber Then PartFound = True For j = LBound(eachpart_PN) To UBound(eachpart_PN) If eachpart_PN(j) = fProduct.PartNumber Then _ eachpart_count(j) = eachpart_count(j) + 1 Next End If Next If PartFound = False Then part_counter = part_counter + 1 PartsFound.Add fProduct.PartNumber ReDim Preserve eachpart_PN(part_counter) eachpart_PN(part_counter) = fProduct.PartNumber ReDim Preserve eachpart_count(part_counter) eachpart_count(part_counter) = 1 End If End If Next ' Ausgabe Dim str As String For i = 1 To UBound(eachpart_PN) str = str & eachpart_PN(i) & " (" & CStr(eachpart_count(i)) & ")" & " ; " Next MsgBox "Im aktuellen Product befindet/befinden sich " & part_counter & " Part(s):" & Chr(10) & str End Sub
gruß [Diese Nachricht wurde von meisterlumpi am 07. Sep. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 03. Aug. 2011 13:09 <-- editieren / zitieren --> Unities abgeben: Nur für jdahm
Hallo, hier ist das Ergebnis von dem Link der im ersten beitragt ist -> Excel öffnen -> Bauteile auslesen -> Bauteile unterscheiden (zwischen Kaufteile und Fertigungsteile) Anpassung nötig -> Partname wird Zerlegt ( je nach dem ob Kaufteil oder Fertigungsteil) Anpassung nötig -> Exceltabelle wird befüllt sollte keine Bedingung erfüllt werden wird der Partname nicht Zerlegt und nicht in die Entsprechenden Zellen geschrieben sondern der komplette Partname mit Anzahl nach der Zelle (J) geschrieben ------------------ Sei Schlau bleib Dumm !!?!!
[Diese Nachricht wurde von K.Siebert am 05. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |