Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Führende Instanz definieren

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Führende Instanz definieren (1089 mal gelesen)
Criollo
Mitglied



Sehen Sie sich das Profil von Criollo an!   Senden Sie eine Private Message an Criollo  Schreiben Sie einen Gästebucheintrag für Criollo

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 02. Dez. 2008 11:43    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Beschreibung.pdf

 
Hallo,

per Makro möchte ich ein Achsensystem aus einem Part (Geber) innerhalb der Produktstruktur in ein anderes Part (Nehmer) kopieren (As Result). Gibt es vom Nehmer nur eine Instanz klappt alles wunderbar. Bei mehreren Nehmerinstanzen, die unterschiedliche Positionen im Raum haben, habe ich jedoch das Problem, dass ich nicht die führende Instanz (in die kopiert werden soll) bestimmen kann. (siehe Anhang)

Kann mir evt.jemand einen Tip geben, wie ich die im Anhang beschriebenen Fälle per Makro steuern kann.

Danke im voraus,

& Grüsse aus dem Süden.

Crio

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

denyo_1
Moderator
Manager


Sehen Sie sich das Profil von denyo_1 an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 02. Dez. 2008 12:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Criollo 10 Unities + Antwort hilfreich

Hallo,

hier haben wir schon mal eine ähnliche Diskussion geführt:

In einem Process ein Koordinatensystem kopieren

Das Problem ist folgendes. Du hast zwei Nehmer-Instanzen die ein und die selbe Datei sind, die sich aber an unterschiedlichen Orten im Produktkontext befinden.
Fügst du jetzt einer Instanz ein Achsensystem hinzu, erschein diese auch in der zweiten Instanz aber durch die unterschiedlichen Lage der beiden Instanzen an einem anderen Ort. Das passiert, da die beide Instanzen ein und die selbe Datei sind.
Aber wo genau sollen das Achsensystem nach deinem Kopiervorgang den sein? Direkt über dem das Geber-Parts?

Ich würde mir mein Makro anderes aufbauen. Und zwar im Nehmer-Part durch das Makro ein neues Achsensystem erstellen, das direkt auf dem vom Anwender ausgewählten Achsensystem liegt. Dann hast du zwar keine Kopie, die brauchst du aber nicht dann du willst ja so und so mit "as Result" einfügen.

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Criollo
Mitglied



Sehen Sie sich das Profil von Criollo an!   Senden Sie eine Private Message an Criollo  Schreiben Sie einen Gästebucheintrag für Criollo

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 02. Dez. 2008 12:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo denyo_1,

mein Ziel ist es, dass ich das Achsensystem in der Nehmerinstanz lagerichtig habe (d.h. kongruent zum Achsensystem im Geberpart), welche ich während des Makrolaufs auswähle. Ein neues Achsensystem im Nehmerpart erzeugen, geht leider nicht, da das Ziel des Makros auch sein soll, bei Änderungen im Geberpart, diese an das Nehmerpart zu übergeben. Da das Achsensystem im Nehmerpart publiziert ist, und diese Publikation erhalten bleiben soll, hole ich mir immer nur eine temporäre Kopie ins Nehmerpart, und setze den Nullpunkt des bereits vorhandenen Achsensystems auf das neue.

Geht alles schon ein bisschen weit -  Kernstück ist jedoch, dass ich das Achsensystem, in einer von mir gewählten Instanz lagerichtig habe. Die Lage in den anderen Instanzen ist erstmal unerheblich.

Vielleicht hast du ja dazu noch nen Tip

Danke und Gruss aus dem Süden

Crio

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lusilnie
Mitglied



Sehen Sie sich das Profil von Lusilnie an!   Senden Sie eine Private Message an Lusilnie  Schreiben Sie einen Gästebucheintrag für Lusilnie

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 02. Dez. 2008 23:41    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Criollo 10 Unities + Antwort hilfreich

Hallo Criollo,

wenn ich Dich richtig verstehe, hast Du Probleme, die richtige Instanz des Parts für's Einfügen zu selektieren.

Hier wären die Stichworte zum Lösungsansatz: Selection und FindObject! Als Code-Zeile lautet dies in etwa

Code:
... Selection.FindObject("CATIAProduct") ...
Über diese Methode kannst Du genau auf die selektierte Instanz zugreifen (und Dich notfalls auch zum Root-Knoten "hoch hangeln"). Das Thema wurde, so glaube ich zumindest, hier auch schon ausführlicher diskutiert.


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tomtom1972
Mitglied
dipl ing maschinenbau


Sehen Sie sich das Profil von tomtom1972 an!   Senden Sie eine Private Message an tomtom1972  Schreiben Sie einen Gästebucheintrag für tomtom1972

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 03. Dez. 2008 06:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Criollo 10 Unities + Antwort hilfreich

Hallo Crillo,

es hilft dir gar nichts, wenn du die "richtige Instanz" selektierst, da beim kopieren von CATIA immer die Transformation der ersten im Tree verbauten Instanz verwendet wird. Die einzige Möglichkeit dies zu vermeiden besteht darin, die Knoten aller Instanzen (bis auf den der Instanz, aus welcher du kopieren möchtest) zu deaktivieren.
Hierbei handelt es sich NICHT um einen Bug; der Grund ist vielmehr die Tatsache, das sich die Geometrie eines Parts im Dokument befindet und nicht der Instanz. Dazu habe ich vor 2 Jahren eine PMR bei IBM/Dassault gestellt.

Wenn ich mich nicht irre, gibts dazu auch schon beiträge im Forum.

Gruß TomTom

------------------
tomtom1972

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Criollo
Mitglied



Sehen Sie sich das Profil von Criollo an!   Senden Sie eine Private Message an Criollo  Schreiben Sie einen Gästebucheintrag für Criollo

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 03. Dez. 2008 07:37    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

vielen Dank für die Antworten.
Das mit .FindObject hatte ich schon ausprobiert, aber wie von tomtom1972 erwähnt, bringt das leider nicht allzuviel.
Ich werde jetzt heute mal versuchen, das Thema mit dem aktivieren / deaktivieren umzusetzen.
Bin optimistisch dass es funktioniert 

Vielen Dank nochmal

Crio

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Criollo
Mitglied



Sehen Sie sich das Profil von Criollo an!   Senden Sie eine Private Message an Criollo  Schreiben Sie einen Gästebucheintrag für Criollo

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 03. Dez. 2008 16:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Dubioses Catia...

hab nun die Thematik mit dem aktivieren / deaktivieren eingebracht. Funktioniert einwandfrei - beim ersten Mal.

Möchte ich aber ein zweites Achsensystem in eine andere Instanz kopieren. So läuft das Makro zwar fehlerfrei durch. CATIA nimmt aber einfach die führende Instanz vom ersten Makrolauf, und verwendet deren Transformation.

Das einzige was zu helfen scheint, ist ein CATIA Neustart. Dann läuft wieder alles sauber.

Falls mir hier noch jemand einen Typ geben kann, wie man die französische Dame in diesem Fall bezähmen kann, wäre das super.

Danke
Crio

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lusilnie
Mitglied



Sehen Sie sich das Profil von Lusilnie an!   Senden Sie eine Private Message an Lusilnie  Schreiben Sie einen Gästebucheintrag für Lusilnie

Beiträge: 1486
Registriert: 13.07.2005

erstellt am: 03. Dez. 2008 21:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Criollo 10 Unities + Antwort hilfreich

Hallo Criollo,

wenn das mit der Instanz nicht funktioniert, könntest du doch alternativ auch einen anderen Weg gehen:

1. Berechnung der "Move"-Matrix zwischen Geber und Nehmer
2. Kopieren des Elementes aus dem Geber
3. separates Öffnen des Nehmers
4. Einfügen des kopierten Elementes (As Result) in den Nehmer
5. Move des eingefügten Elementes entsprechend "Move"-Matrix

Wie das mit der Matrix funktionieren kann, zeigt Dir z.B. das Script "DMUpstcopypastekeepabsoluteposition.CATScript" von DS, was Du in der Automation.chm (oder so ähnlich) findest.


mfg,
Lusilnie

------------------
Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!!

frei nach größeren Geistern

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

tomtom1972
Mitglied
dipl ing maschinenbau


Sehen Sie sich das Profil von tomtom1972 an!   Senden Sie eine Private Message an tomtom1972  Schreiben Sie einen Gästebucheintrag für tomtom1972

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 04. Dez. 2008 07:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Criollo 10 Unities + Antwort hilfreich

Hallo Crillo,

und wieder einen Schritt weiter. Du hast nur noch folgenden Fehler gemacht:
Du must nach dem kopieren der ersten Instanz nicht nur ein Selection. Clear ausführen sondern die neue Selektion über ein Selection.Search vornehmen, d.h. ich gehe davon aus, das du es bisher über ein Selection.Add gemacht hast, da dann der von dir beschriebene "Fehler" auftritt.
Also am einfachsten geht es wenn du es so abänderts
...
Selection.Clear, dann
Selection.Add() ... (wie bisher, hier ist die Transformation noch falsch)
dann die Selection auslesen, ein erneutes .clear und über
Selection.Search wieder befüllen. Dann ist die Transformation OK.

Falls du die Möglichkeit dazu hast kannst du das selektierte Object nach dem .Add umbenennen (Selection.Item(1).Value.Name = unikaler String, z.B. Time), und das .Search nach dem String ausführen und ihm danach wieder seinen alten Namen zuweisen.

Das ganze hat 2. Nachteile:
1) die Umbenennerei führt zu einem "Modified" des entsp. Parts im SaveManegement
2) das .Search dauert (vor allem bei großen Strukturen) "wesentlich" länger als das .Add

An 1) kannst du nix ändern.
2) wird "wesentlich" schneller wenn du (sofern du viele Objekt kopieren willst) zum Scriptstart rekursiv alle (!) Nodes deaktivierst und immer nur den aktivierst, aus dem du kopieren willst und ihn danach wieder daektivierst.

Der Vorschlag von Lusilnie funktioniert ebenfalls sofern du alles nur "As Result" einfügen willst.

Mit der Vorgehensweise die du momentan verfolgst kannst du alle Objekte auch mit Link einfügen.
Ich erzeuge mir auf diese Weise .ALLCATParts mit Links zu der Original-Struktur.

Ich kann dir auch versicheren, das das ganze funktioniert, ohne das CATIA neu gestartet werden muss.

Falls du noch Probleme hast sende mir eine PM zu.

Gruß

 

------------------
tomtom1972

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Criollo
Mitglied



Sehen Sie sich das Profil von Criollo an!   Senden Sie eine Private Message an Criollo  Schreiben Sie einen Gästebucheintrag für Criollo

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 04. Dez. 2008 11:13    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

danke für die Antworten.
Bei der Lösung von tomtom1972, habe ich das Problem, das ich mit der .Search Methode des Selection Objekts nicht auf den AxisSystemNode komme, da beim Makrolauf immer ein Produktknoten aktiv ist.
Vielleicht fällt mir ja dazu noch eine Lösung ein.

@Lusilnie: Werde mir das von dir angesprochene Beispiel mal zu Gemüte führen. Habe zwar bisher schon etliches an Zeit in meinen derzeitigen Weg investiert, aber vielleicht hilft es ja, was anderes zu versuchen.

Danke & Gruss
Crio

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz