Autor
|
Thema: Measure Inertia Informationen kopieren (1213 mal gelesen)
|
Xahaeus304 Mitglied
Beiträge: 9 Registriert: 27.03.2020 DMU Navigator V5R2018 Catia V5-6R2018
|
erstellt am: 27. Mrz. 2020 11:02 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich versuche gerade ein Makro zu schreiben, dass den Bauteilnamen aus meiner Excel Tabelle liest und diesen im DMU Navigator sucht. Beziehungsweise die komplette Idee ist nach dem Namen zu suchen und dann aus dem "Measure inertia" Tool die Schwerpunktkoordinaten und die 9 Werte der "Principal Axes" auszulesen und wieder in Excel einzufügen. Ich hänge allerdings schon am Suchen fest. VBA ist kein komplettes Neuland für mich, die Schnittstelle zu DMU allerdings schon. Im Moment sieht mein (trauriger) Code so aus Code:
Sub Test()Dim DMU As Object Dim name As String 'die erste 12 Stellen name = Left$(Range("D15").Value, 12) Dim objWMI As Object, colPro As Object Set objWMI = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & "." & "\root\cimv2") Set colPro = objWMI.ExecQuery _ ("Select * from Win32_Process Where Name " 'DMU.exe'") AppActivate ("DMU ") End Sub
Damit kann ich zumindest schon mal den Namen aus der Zelle auslesen und den Navigator aktivieren, aber jetzt hört es auch schon auf. Wobei ich den Code, um den DMU Navigator anzusprechen, auch nur irgendwo gefunden habe. So ganz verstehen tu ich den auch nicht unbedingt, aber damit hab ich mich erst einmal abgefunden. Ich danke euch schon einmal im Voraus für die Hilfe. 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: 27. Mrz. 2020 11:33 <-- editieren / zitieren --> Unities abgeben: Nur für Xahaeus304
Servus Willkommen im Forum. Meinst du den DMU Navigator als extra Anwendung oder als Catia Workbench? Von wo aus willst du darauf zugreifen? Von Excel aus? Woher hast du deinen Code? Sollte da nicht einfach GetObject (wie hier) gehen? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xahaeus304 Mitglied
Beiträge: 9 Registriert: 27.03.2020 DMU Navigator V5R2018 Catia V5-6R2018
|
erstellt am: 27. Mrz. 2020 13:48 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank für die nette Begrüßung. Ich meine den DMU Navigator als extra Anwendung und ja, ich starte aus Excel raus. Ich weiß nicht mehr genau wo der Code herkommt, den hatte ein Kollege mal für was anderes verwendet. Damit funktioniert es zumindest, dass das aktive Fenster von Excel auf DMU wechselt. GetObject funktioniert leider nicht weil ich das gleiche Problem habe wie hier, die Lösung aber nicht funktioniert bzw. keinen Unterschied macht. [Diese Nachricht wurde von Xahaeus304 am 27. Mrz. 2020 editiert.]
[Diese Nachricht wurde von Xahaeus304 am 27. Mrz. 2020 editiert.] [Diese Nachricht wurde von Xahaeus304 am 27. Mrz. 2020 editiert.] 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: 27. Mrz. 2020 13:52 <-- editieren / zitieren --> Unities abgeben: Nur für Xahaeus304
|
Xahaeus304 Mitglied
Beiträge: 9 Registriert: 27.03.2020 DMU Navigator V5R2018 Catia V5-6R2018
|
erstellt am: 27. Mrz. 2020 14:08 <-- editieren / zitieren --> Unities abgeben:
oh man... natürlich nicht. Jetzt hab ich das gemacht. Ich bekomme zumindest den Laufzeitfehler nicht mehr, allerdings aktiviert sich der Navigator auch nicht. Hab ich was vergessen? Code:
Dim DMU As Object Set DMU = GetObject(, "DMU.Application")
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: 27. Mrz. 2020 14:13 <-- editieren / zitieren --> Unities abgeben: Nur für Xahaeus304
Servus Dabei wird auch nicht die Applikation aktiviert. Brauchst du auch nicht sondern kannst direkt auf die Objekte zugreifen. (vermutlich geht zB MsgBox DMU.Caption) Der VBA-Editor (in Excel oder DMU) (Watchfenster) sowie vielleicht auch die V5Automation.chm sollten nun weiter helfen. Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xahaeus304 Mitglied
Beiträge: 9 Registriert: 27.03.2020 DMU Navigator V5R2018 Catia V5-6R2018
|
erstellt am: 27. Mrz. 2020 14:39 <-- editieren / zitieren --> Unities abgeben:
|
Xahaeus304 Mitglied
Beiträge: 9 Registriert: 27.03.2020 DMU Navigator V5R2018 Catia V5-6R2018
|
erstellt am: 02. Jun. 2020 16:22 <-- editieren / zitieren --> Unities abgeben:
Hi zusammen, ich wollte kein neues Thema aufmachen, da der Titel an sich immer noch zu meinem Problem passt. Das Auslesen des Schwerpunktes klappt soweit, mein Problem ist aber, dass ich immer nur den Schwerpunkt eines Teiles auslese. Manchmal haben z.B. zwei Teile denselben Namen und ich will nur den Schwerpunkt des zweiten Teiles, deswegen habe ich da einen counter "j" drin. Das funktioniert auch alles super. Es gibt aber auch den Fall, dass ich von beiden Teilen gleichzeitig den SP haben will und da finde ich nicht den richtigen Befehl wie ich dem "Produkt" zwei Items übergeben kann. Hier ein Ausschnitt aus meinem Code Code: ...Set selection = Catia.ActiveDocument.selection selection.Search ("Name = Modell*" & SNr & "*, all") Set Auswahl = Catia.ActiveDocument.selection j = Range("I" & i).Value Set Produkt = Auswahl.Item(j).LeafProduct Set NewInertia = Produkt.GetTechnologicalObject("Inertia") NewInertia.GetCOGPosition cog_coord ...
Vielen Dank 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: 02. Jun. 2020 18:14 <-- editieren / zitieren --> Unities abgeben: Nur für Xahaeus304
Servus ich hab dazu folgende Ideen: - Gesamt-COG aus den einzelnen COGs/Massen berechnen
- alle anderen Products in der Rootbaugruppe deaktivieren und von der Rootbaugruppe as COG bestimmen
- zu messende Instanzen in ein leeres Product/Komponente kopieren, COG bestimmen, Hilfsproduct/Komponente wieder löschen
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Xahaeus304 Mitglied
Beiträge: 9 Registriert: 27.03.2020 DMU Navigator V5R2018 Catia V5-6R2018
|
erstellt am: 02. Jun. 2020 18:35 <-- editieren / zitieren --> Unities abgeben:
Hi Bernd, deine erste Idee war mein Plan B. Zitat: Original erstellt von bgrittmann:
- Gesamt-COG aus den einzelnen COGs/Massen berechnen
Damit kriege ich es sicher hin, ich dachte nur da gibt es evtl. eine elegantere Lösung in Richtung "Product.Add.Item(xy)" mit der ich alles in einem Produkt zusammenfassen könnte. Das wären wahrscheinlich auch ein paar Zeilen weniger Code gewesen, aber wenn es das nicht gibt kann ich auch mit der Berechnung leben. Ich danke dir. Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |