Autor
|
Thema: Replace mit Makro durchführen (5395 mal gelesen)
|
symax Mitglied Student
Beiträge: 8 Registriert: 05.11.2010
|
erstellt am: 08. Nov. 2010 08:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde, ich habe in einem Geoset 1 Orginalpunkt. mit dem Makro(rekorder) habe ich dort einen Punkt mit Link einkopiert. Nun will ich den vorhandenen Orginalpunkt durch den neuen Punkt mit Link ersetzen. Leider zeichnet hier der Makrorekorder nichts auf, ist das möglich das durchzuführen und wenn wie ? (Anschließendes Löschen zeichnet er auf) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 08. Nov. 2010 17:03 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Ich kann mich auch irren, ist nicht mein Spezialgebiet, aber ich glaube Replace geht mit VBA nicht. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AndiMuenchen1 Mitglied Dipl.Ing.
Beiträge: 13 Registriert: 09.11.2010 V5R19 Windows XP
|
erstellt am: 09. Nov. 2010 14:02 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Es besteht die Möglichkeit über Translates zu arbeiten. Der ursprüngliche Punkt ist der Input eines Translates das um 0 verschoben wird. Du kannst über ein Makro den Input des Translates mit dem neuen Punkt austauschen. Somit stellt der Translate immer den aktuellen Punkt dar. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mrgod Mitglied
Beiträge: 28 Registriert: 22.01.2010
|
erstellt am: 29. Jan. 2011 16:13 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Zitat: Original erstellt von symax: Hallo Gemeinde,ich habe in einem Geoset 1 Orginalpunkt. mit dem Makro(rekorder) habe ich dort einen Punkt mit Link einkopiert. Nun will ich den vorhandenen Orginalpunkt durch den neuen Punkt mit Link ersetzen. Leider zeichnet hier der Makrorekorder nichts auf, ist das möglich das durchzuführen und wenn wie ? (Anschließendes Löschen zeichnet er auf)
Für Elemente ersetzen kann man einen Trick machen. Statt Element macht man einen Join und dann ersetzt man die Referenz im Join auf ein neues Element: '--- REPLACE --- Dim a As AnyObject Set a = GEO_SET.HybridShapes.Item ("Name des neuen Elements") Dim Ref1 As Reference Set Ref1 = PART_X.CreateReferenceFromObject (a) Dim JOIN As HybridShapeAssemble Set JOIN = GEO_SET.HybridShapes.Item ("Name des Joins") JOIN.AddElement Ref1 JOIN.RemoveElement 1 Allerdings weiss ich nicht, ob es für Punkte funzt... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 17. Mai. 2011 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Hallo CAD-User, stehe derzeit vor einem Problem. Hänge genau bei der Methode, die oben beschrieben wurde. Das "replacen" mit Hilfe der Join's klappt wunderbar. Nur beim Ersetzen über ein Translate hängt es :-( Versuche eine Achse, durch eine vom Benutzer gewählte Achse, im Part Design zu ersetzen. Programmiere mit VisualStudio Auszug aus dem Quellcode: Dim F F = UserSel.SelectElement2(Was, "################### Bitte ein Achsensystem selektieren ###################", False)
Dim MeinObj As Object MeinObj = UserSel.Item(1).Value Dim MeineRef As Object MeineRef = MeinPart.CreateReferenceFromObject(MeinObj) 'Translate Element ändern Dim Translate As Object Translate = GeoSet.HybridShapes.Item("Axis") Translate.ElemToTranslate = MeineRef Bei dem Ausdruck Translate.ElemtoTranslate sagt er mir "Mitglied nicht gefunden" Hoffe mir kann hier jemand helfen :-(
Mit freundlichen Grüßen schnix
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. Mai. 2011 15:03 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Servus Ist dein "GeoSet.HybridShapes.Item("Axis")" wirklich dein Translate-Feature? Was zeigt dir das Watch-Fenster für diese Objekt, bzw. welche Parameter/Eigenschaften hat e, an? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 17. Mai. 2011 15:14 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Ja das ist das Translate-Feature! :-) Entschuldige - Ich habe noch nie mit dem Watch-Fenster gearbeitet. Kann es demnach auch nicht wirklich bedienen.. Der Ablauf des Programms sollte so sein, dass der Benutzer aufgefordert wird ein Achsensystem zu selektieren. Daraufhin soll das Programm, dass Element im Translate austauschen... Hört sich so einfach an.. Spielt es eine Rolle, ob das selektierte Achsensystem und das Translate im gleichen geometrischen Set sind? Die CATIA Struktur in meinem Part ist wie folgt:
- Geometrisches Set 1 - - Fläche - - Achse - Geometrisches Set 2 - - Geometrisches Set 2.1 - - - Join 1 - - - Join 2 - - - Translate [Diese Nachricht wurde von schnix am 17. Mai. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
schnix Mitglied Student
Beiträge: 25 Registriert: 18.09.2007
|
erstellt am: 18. Mai. 2011 07:52 <-- editieren / zitieren --> Unities abgeben: Nur für symax
Ok - Problem gelöst. Dim F F = UserSel.SelectElement2(Was, "################### Bitte ein Achsensystem selektieren ###################", False) Dim MeinObj As INFITF.AnyObject MeinObj = UserSel.Item(1).Value tbAchsensystem.Text = UserSel.Item(1).Value.Name UserSel.Clear() Dim MeineRef As INFITF.Reference MeineRef = MeinPart.CreateReferenceFromObject(MeinObj) 'Translate Element ändern Dim Translate1 As HybridShapeTypeLib.HybridShapeTranslate Translate1 = GeoSet.HybridShapes.Item("Axis") Translate1.ElemToTranslate = MeineRef So klappt es nun. Trotzdem Vielen Dank für die Bemühungen Mit freundlichem Gruß schnix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |