Autor
|
Thema: Part in NC-Umgebung versetzen (1127 mal gelesen)
|
Bappnaas Mitglied CNC-Programmierer
Beiträge: 62 Registriert: 25.08.2008
|
erstellt am: 12. Jan. 2010 10:34 <-- editieren / zitieren --> Unities abgeben:
Hallo Forumianer, ich möchte in der NC-Umgebung (PMG) einen Part anklicken und ihn um einen vorher definierten Wert in einer bestimmten Achsrichtung (zB X) versetzen. Mit dem Makrorecorder komme ichnicht weiter, er zeichnet das Versetzen nicht auf. Mit den selections habe ich immer so meine Probleme... Gruß und Danke schonmal, Gregor
------------------ Wer bin ich? Und wenn ja: wieviele? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 12. Jan. 2010 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bappnaas
Hallo Gregor, bekommst du es im Assembly Design hin? Falls ja, kannst du per Makro in der PPR-Struktur im PMG navigieren und genau so arbeiten als wärst du im Assembly Design. Hierzu hilft dir die Objektauflösung und das Watchfenster im CATvba-Editor. grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bappnaas Mitglied CNC-Programmierer
Beiträge: 62 Registriert: 25.08.2008
|
erstellt am: 12. Jan. 2010 11:16 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich habe den Part ausgewählt und den Verschiebewert (X1) definiert. Wie bekomme ich nun den gewählten Part als zu verschiebendes Objekt definiert (product1)? Hier mein bisheriger Code:
Code: Rem ## part auswählen Dim selElements(0) selElements(0) = "Part" Dim userSelection As Object Set userSelection = CATIA.ActiveDocument.Selection userSelection.Clear Dim Quelle As String Quelle = userSelection.SelectElement2(selElements, "Würfel auswählen", True)Rem 1.Würfel positionieren Dim move1 As Move Set move1 = product1.Move Set move1 = move1.MovableObject Dim arrayOfVariantOfDouble2(11) arrayOfVariantOfDouble2(0) = 1# arrayOfVariantOfDouble2(1) = 0# arrayOfVariantOfDouble2(2) = 0# arrayOfVariantOfDouble2(3) = 0# arrayOfVariantOfDouble2(4) = 1# arrayOfVariantOfDouble2(5) = 0# arrayOfVariantOfDouble2(6) = 0# arrayOfVariantOfDouble2(7) = 0# arrayOfVariantOfDouble2(8) = 1# arrayOfVariantOfDouble2(9) = 0# arrayOfVariantOfDouble2(10) = X1 'errechneter Wert arrayOfVariantOfDouble2(11) = 0# Set move1Variant = move1 move1Variant.Apply arrayOfVariantOfDouble2
------------------ Wer bin ich? Und wenn ja: wieviele? 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: 12. Jan. 2010 11:27 <-- editieren / zitieren --> Unities abgeben: Nur für Bappnaas
Servus Ich vermute dass du das Product verschieben muss. In einer Baugruppe sind nur Products enthalten. Bei Parts bildet ein Product die "Hülle" zum in der Baugruppe anzusprechen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bappnaas Mitglied CNC-Programmierer
Beiträge: 62 Registriert: 25.08.2008
|
erstellt am: 12. Jan. 2010 12:46 <-- editieren / zitieren --> Unities abgeben:
Ich habe jetzt selElements(0)="Product" gesetzt und kann nun das Produkt auswählen. Nur weiss ich nicht, was ich in dim product99 as Product set product99 = .... hier eintragen muss. userSelection ergiebt die Fehlermeldung "Type mismatch".
------------------ Wer bin ich? Und wenn ja: wieviele? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 13. Jan. 2010 12:11 <-- editieren / zitieren --> Unities abgeben: Nur für Bappnaas
Hallo, du solltest die Verschiebung per Makro erst einmal im Assembly Design aufbauen. Wenn das dort funktioniert kann man einen Schritt weiter gehen und die Verschiebung im Process ermöglichen. Im Assembly Design hilft dir ausserdem der Makro-Rekorder. Im PMG nicht!! grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bappnaas Mitglied CNC-Programmierer
Beiträge: 62 Registriert: 25.08.2008
|
erstellt am: 14. Jan. 2010 07:47 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen, ich habe den Vorgang im Assembly aufgenommen, der oben stehende Code stammt daher. Als Makro im PMG gestartet funktioniert das auch, bis zu der Stelle hin, wo die Variable "move1" gefüllt wird. Im aufgenommenen Makro wird der Wert mit feststehenden Werten gefüllt, ich will das Ganze aber flexibel gestalten, damit der User den zu verschiebenden Part anklickt und diese Auswahl benutzt wird. Also muss ich einen Weg finden, "move1" mit der Auswahl zu belegen. Das klappt aber, ich glaube mal aufgrund der Variablendefinition, nicht. Hier nochmal der aktuelle Code:
Code:
Rem ## part auswählen Dim selElements(0) selElements(0) = "Product" Dim userSelection As Object Set userSelection = CATIA.ActiveDocument.Selection userSelection.Clear Dim Quelle As String Quelle = userSelection.SelectElement2(selElements, "Würfel auswählen", True)Rem 1.Würfel positionieren Dim move1 As Move Set move1 = product1.Move '<---- was muss hier eingetragen werden? Set move1 = move1.MovableObject Dim arrayOfVariantOfDouble2(11) arrayOfVariantOfDouble2(0) = 1# arrayOfVariantOfDouble2(1) = 0# arrayOfVariantOfDouble2(2) = 0# arrayOfVariantOfDouble2(3) = 0# arrayOfVariantOfDouble2(4) = 1# arrayOfVariantOfDouble2(5) = 0# arrayOfVariantOfDouble2(6) = 0# arrayOfVariantOfDouble2(7) = 0# arrayOfVariantOfDouble2(8) = 1# arrayOfVariantOfDouble2(9) = 0# arrayOfVariantOfDouble2(10) = X1 'errechneter Wert arrayOfVariantOfDouble2(11) = 0# Set move1Variant = move1 move1Variant.Apply arrayOfVariantOfDouble2
Gruß, Gregor ------------------ Wer bin ich? Und wenn ja: wieviele? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
V5Playaz Mitglied Dipl.-Ing (BA)
Beiträge: 447 Registriert: 12.07.2005 DELL PRECISION 390 3,25 GB RAM WIN XP PRO SP2 CATIA V5 R16-19 Delmia V5 R19 VB6, VB2008 Adobe Acrobat 9 Pro Extended
|
erstellt am: 14. Jan. 2010 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für Bappnaas
Hallo Gregor, versuche mal: set product1 = userSelection.item(1) zu definieren.
Und wie gesagt, versuche ersteinmal im Assembly dein Glück. Wenn es dort komplett funktioniert, kannst du versuchen es auf den PMG-Workbench anzupassen. Grüße Dominik Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bappnaas Mitglied CNC-Programmierer
Beiträge: 62 Registriert: 25.08.2008
|
erstellt am: 14. Jan. 2010 15:08 <-- editieren / zitieren --> Unities abgeben:
Mit deinem Vorschlag geht´s auch nicht... Das Problem ist, dass das aufgenommene Makro den Namen fest vorgibt. Dies will ich, wie gesagt, durch eine Selection ersetzen. Hier der aufgenommene Code: Code:
Dim processDocument1 As ProcessDocument Set processDocument1 = CATIA.ActiveDocument Dim product1 As Product Set product1 = processDocument1.GetItem("PPRProduct") Dim products1 As Products Set products1 = product1.Products Dim product2 As Product Set product2 = products1.Item("Item.1") Dim products2 As Products Set products2 = product2.Products Dim product3 As Product Set product3 = products2.Item("HD-Aussengehäuse Moorburg") Dim products3 As Products Set products3 = product3.Products Dim product4 As Product Set product4 = products3.Item("Würfel 1600mm.1")Dim move1 As Move Set move1 = product4.Move Set move1 = move1.MovableObject '... Bewegung
Der von mir geschriebene Code läuft im Assembly inklusive selection prima, bleibt allerdings, wie im PMG, bei der Übergabe der Auswahl an die Bewegung hängen.
------------------ Wer bin ich? Und wenn ja: wieviele? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |