Autor
|
Thema: Zugridd auf Compare in DMU (1084 mal gelesen)
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 15. Mrz. 2019 14:47 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Mrz. 2019 15:13 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 15. Mrz. 2019 15:37 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Mrz. 2019 16:28 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Zugriff/Öffnen auf das Fenster wohl nur über StartCommand (und Steuerung per WindowsAPI). Ohne Userinterface siehe Doku PartComps.Add. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 16. Mrz. 2019 11:28 <-- editieren / zitieren --> Unities abgeben:
Servus Bernd, ist es denn möglich, wenn ich die Partnumber der einzelnen Bauteile als Variable herausgelesen habe diese automatisch in die beiden Fenster für Bauteil alt und neu eintragen zu lassen? Kann man eine Abfraage nach der Ergebnisfarbe mach, also wenn rot, dann Vorsicht, irgend was ist anders. Ich habe dazu nirgends was gefunden. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mrz. 2019 12:01 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 17. Mrz. 2019 17:40 <-- editieren / zitieren --> Unities abgeben:
Servus, ich muss Parts von zwei Baugruppen untereinander vergleichen und wollte per StartCommand Compare Products das Fenster aufrufen, die ausgelesenen Partnamen eintragen lassen und den Partnamen des Paares in eine LsitBox reinschreiben, das rot als Ergebnis hat. Eventuell noch einen Screenshot machen, wo die Unterschiede sind und das Bild in eine PictureBox einfügen. Hatte gehofft, dass das möglich ist. Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Mrz. 2019 17:59 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Ich würde es eher über die API probieren. Mit den Methoden (zB AddedMaterialPercentage) von PartComps den Unterschied bestimmen/entscheiden und die Exportdatei des 3D-Vergleichs für ein Bild nutzten. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 18. Mrz. 2019 15:49 <-- editieren / zitieren --> Unities abgeben:
Servus Bernd und alle anderen, ich haben mir inzwischen soviel zusammen geschustert: Erstmal ist einfach nur ein Product mit zwei Bauteilen offen, um zu sehen, ob ich das Macro überhaupt hinbekomme. Sub CATMain() Set productDocument1 = CATIA.ActiveDocument Set product1 = productDocument1.Product Set products1 = product1.Products Set compareWorkBench1 = productDocument1.GetWorkbench("Digital Mock-Up Space Analysis Workbench") '' Was vergleiche ich: Part 1 und 2 des Products
Set product2 = products1.Item(1) Set product3 = products1.Item(2) '' Der Vergleich
Set partComps1 = compareWorkBench1.PartComps Set partComp1 = partComps1.GeometricComparison(product2, product3, 2.000000, 2.000000, 2, added, removed) Set partComp1 = partComps1.Add(product2, product3, 2.000000, 2.000000, 2)
'' Resultat
PercentAdded = partComps1.AddedMaterialPercentage PercentRemoved = partComps1.RemovedMaterialPercentage
'' Volumen hinzu VolumeAdded = partComps1.AddedMaterialVolume '' Volumen entfernt VolumeRemoved = partComps1.RemovedMaterialVolume If PercentAdded > MinDifference Then msgbox "Difference detected : Added = " & Cstr(PercentAdded) & " , Removed = " & Cstr(PercentRemoved) & " VolumeAdded = " & Cstr (VolumeAdded) & " VolumeRemoved = " & Cstr(VolumeRemoved) '' Speichern Ergebnisse Set document1 = documents1.Item("AddedMaterial.3dmap") document1.Activate document1.SaveAs "C:\Desktop\AddedMaterial.3dmap" Set document2 = documents1.Item("RemovedMaterial.3dmap") document2.Activate document2.SaveAs "C:\Desktop\RemovedMaterial.3dmap"
End Sub Das Macro hängt sich beim Befehl auf Workbench Space Analysis zu aktivieren, also weiß ich jetzt auch nciht, ob der Rest passt. Siehst du den Fehler? Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 18. Mrz. 2019 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Nimm mal die Optimizer-Workbench:
Code: Set optimizerWorkBench1 = productDocument1.GetWorkbench("OptimizerWorkBench") Set partComps1 = compareWorkBench1.PartComps
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 15. Mai. 2019 12:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, in welcher Library finde ich PartComps und PartComp? Unter vb.NET kann ich nicht einfach schreiben : Dim PartComp As PartComp, Sondern muss vor PartComp die Bibliothek angeben. Wie komme ich zu der Doku, wo du sowas immer nachschaust? THX Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Mai. 2019 12:52 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 15. Mai. 2019 13:25 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Mai. 2019 13:29 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 15. Mai. 2019 13:37 <-- editieren / zitieren --> Unities abgeben:
Danke !! Für alle Suchenden: Dim partComps1 As SMTypeLib.PartComps partComps1 = optimizerWorkBench1.PartComps Dim partComp1 As SMTypeLib.PartComp partComp1 = optimizerWorkBench1.PartComp Grüße ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 15. Mai. 2019 14:00 <-- editieren / zitieren --> Unities abgeben:
Ich bekomme eine Fehlermeldung gleich in der Zeile: partComps1 = optimizerWorkBench1.PartComps Was stimmt denn damit nicht? Ist meine Lizenz plötzlich weg oder stimmt die Zeile generell nicht? Danke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Mai. 2019 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Wie lautet die Fehlermeldung? Läuft der Code als CATScript? Hast du während der Laufzeit mal geprüft ob die Lizenz vorhanden ist? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 16. Mai. 2019 10:45 <-- editieren / zitieren --> Unities abgeben:
Servus, liegt an der fehlenden Lizenz. Programmiert ist das Ganze in vb.NET in Visual Studio. Ohne Lizenz weiß ich jetzt nicht, ob meine Codezeilen richtig sind. Ich müsste die exe auf gut Glück auf einem Rechner mit Lizenz testen. Wenn da aber ein Fehler kommt, weiß ich nicht an welcher Stelle. Das ist jetzt mein Code: Dim productDocument1 As ProductStructureTypeLib.ProductDocument productDocument1 = myCatiaApp.ActiveDocument 'Produkte vergleichen Dim optimizerWorkBench1 As INFITF.Workbench optimizerWorkBench1 = productDocument1.GetWorkbench("OptimizerWorkBench") 'Zu vergleichende Produkte Dim product2 As ProductStructureTypeLib.Product Dim products1 As ProductStructureTypeLib.Products products1 = productDocument1.Product product2 = products1.Item(1) Dim product3 As ProductStructureTypeLib.Product product3 = products1.Item(2) 'Vergleich Dim partComps1 As SMTypeLib.PartComps partComps1 = optimizerWorkBench1.PartComps Dim partComp1 As SMTypeLib.PartComp partComp1 = optimizerWorkBench1.PartComp MsgBox("Die Berechnungsgenauigkeit und die Anzeigegenauigkeit beeträgt 1mm." & Chr(13) & "Standardwerte ändern?", 3, "Standardwerte") Dim value As Integer = Integer.Parse(Console.ReadLine()) Select Case value Case "6" Dim BGenauigkeit BGenauigkeit = "2" BGenauigkeit = InputBox("Geben Sie die Genauigkeit der Berechnung in Millimetern ein.", "Berechnungsgenauigkeit") 'BGenauigkeit = InputBox("Geben Sie die Genauigkeit der Berechnung in Millimetern ein.", "Berechnungsgenauigkeit", Eingabe) Dim AGenauigkeit AGenauigkeit = "2" AGenauigkeit = InputBox("Geben Sie die Genauigkeit der Anzeige in Millimetern ein.", "Anzeigegenauigkeit") 'AGenauigkeit = InputBox("Geben Sie die Genauigkeit der Anzeige in Millimetern ein.", "Anzeigegenauigkeit", Anzeige) partComp1 = partComps1.Add(product2, product3, BGenauigkeit, AGenauigkeit, 2) 'XXX Abrufen des hinzugefügten Volumen (%, Wärte zwischen 0.0 und 1.0) Dim PercentAdded As Double PercentAdded = partComps1.AddedMaterialPercentage 'XXX Abrufen des entfernten Volumens (%, Wärte zwischen 0.0 und 1.0) Dim PercentRemoved As Double PercentRemoved = partComps1.RemovedMaterialPercentage Dim MinDiff As Double If PercentAdded > MinDiff And PercentRemoved > MinDiff Then MsgBox("Eine Geometrieänderung durch hinzugefügtes und entferntes Volumen liegt vor.") End If End Select Siehst du irgendwo einen Fehler? Danke. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mai. 2019 18:03 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Wie wäre es dass du mal eine Fehlerbehandlung einbaust? (Try .. catch und entsprechend reagieren) IMHO macht das Testen und die Fehlerbehandlung min 60% des Aufwands bei der Programmierung aus. Gruß Bernd PS: Bitte endlich Code in entsprechenden Tags posten ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |