Autor
|
Thema: CreateReferenceFromName max. Zeichenlänge für Pfadangabe? (1642 mal gelesen)
|
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 14. Feb. 2013 13:38 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich schreibe gerade ein Makro, mit dem es möglich ist, unterschiedliche Bodies aus einem beliebigen Strukturbaum eines Products auszuwählen und in ein bestimmtes Part zu kopieren. Es klappt soweit so gut. Allerdings habe ich über die Selection Methode das Problem gehabt, dass bei mehrfach auftretenden Bauteilen die Eindeutigkeit nicht gegeben war. D.h. ich wähle einen Body eines mehrfach auftretenden Bauteils und Catia wählt als Selection einen Body einer beliebigen Instanz. Das ist natürlich suboptimal. Ich habe im Forum einen Lösungsvorschlag gefunden (siehe hier), der dieses Problem umgeht. Unter Verwendeung der Referenz, dem Befehl "CreateReferenceFromName", ist es möglich meinen Body eindeutig zu identifizieren und für mein weiteres Voorgehen zu verwenden. Es funktioniert, allerdings stoße ich auf folgende Grenze: Die Pfadangabe wird bei dem Befehl nach einer bestimmten Zeichenlänge abgeschnitten (".DisplayName"). Meine Produkte und Bauteile haben relativ lange Namen, die ich auch ungern ändern möchte. Kennt jemand das Problem und weiß Rat? Eventuell eine Alternativmethode? 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: 14. Feb. 2013 13:55 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
Vielleicht kannst Du den Namen auf mehrere String-Variablen verteilen & zusammen bauen. ------------------ 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 |
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 14. Feb. 2013 14:03 <-- editieren / zitieren --> Unities abgeben:
Ich speicher meine Pfadangabe zunächst in einem String. Da wird der Pfad auch komplett angezeigt. Sobald ich diesen String an CreateReferenceFromName (Pfadangabe) übergebe, wird er in der Eigenschaft "Displayname" gespeichert. Da wird der Name nach einer bestimmten Zeichenlänge abgeschnitten. Das Aufteilen ist so also nicht möglich... 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: 14. Feb. 2013 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
Hast Du Dir die Eigenschaft mal ausgeben lassen? ist der DisplayName überhaupt entscheidend?`ich dachte das wäre ein rein optischer Aspekt. Was sagt denn CATIA, wenn Du die Referenz verwendest? ------------------ 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 |
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 14. Feb. 2013 15:11 <-- editieren / zitieren --> Unities abgeben:
Ich hatte auch gehofft, dass es ein optischer Aspekt ist. ich hab sie mir ausgeben lassen, und er schneidet es ab. Wenn ich die Referenz verwenden möchte, selektiert Catia ein Bauteil, was eine paar Ebenen über dem gewünschten Body liegt. 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: 14. Feb. 2013 15:20 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
Das ist übel und klingt dann nach einem Fehler von Dassault. Mir würde jetzt nur noch einfallen das Teil in einem anderen Fenster zu öffnen, aber dann bist Du die Instanz los, die Du ja scheinbar (Wofür?) brauchst. :-( Edit: Eine Publication kann vielleicht auch helfen. ------------------ 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 [Diese Nachricht wurde von HoBLila am 14. Feb. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 14. Feb. 2013 16:06 <-- editieren / zitieren --> Unities abgeben:
ich brauche den Body, den ich in jeder seiner verschiedenen Positionen in ein Part kopiere (durchläuft eine Kinematik). Ich hab den code nochmal durchlaufen lassen und mir den string für den Pfad ausgeben lassen. Einmal für den String "Pathreferenz", der den Pfad speichert und einmal für den String aus "CreateReferencefromName.displayname". Anscheinend übernimmt er nicht alles vom Pfad und wiederholt ab einer bestimmten Stelle, siehe Bilder. Das Ausrufezeichen befindet sich nicht am Ende. Ich hoffe die Bilder sind trotz Unkenntlichmachung verständlich. Wie funktioniert das mit Publikationen? Hier ist mein Code: Code:
Dim SelFilter(0) SelFilter(0) = "Body" Dim SelElm2Result ReDim removeBody(0 To 10) Set osel = CATIA.ActiveDocument.Selection osel.Clear SelElm2Result = osel.SelectElement2(SelFilter, "Wählen sie den abzuziehenden Koerper!", True) If Not SelElm2Result = "Normal" Then Exit Sub 'Undo, Redo und Cancel führen zum Abbruch End IfZ = osel.Item(1).LeafProduct.Name X = osel.Item(1).Value.Name Dim Pathreferenz As String Set Zed = osel.Item(1).LeafProduct.Parent Pathreferenz = Zed.Name & "/" & Z & "/!" & X Do While Zed.Name <> CATIA.ActiveDocument.Product.Name Set Zed = Zed.Parent Pathreferenz = Zed.Name & "/" & Pathreferenz Loop osel.Clear Set removeBody(0) = CATIA.ActiveDocument.Product.CreateReferenceFromName(Pathreferenz) osel.add removebody(0)
[Diese Nachricht wurde von chameleon am 14. Feb. 2013 editiert.] [Diese Nachricht wurde von chameleon am 14. Feb. 2013 editiert.] 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: 14. Feb. 2013 16:40 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
Eine Publikation ist quasi auch nichts anderes als eine Referenz, aber wie ein Feature im Baum. Ich nehm an osel.Item(1).Reference liefert die besagte beliebige Instanz und nicht die selektierte? ich hätte noch zwei weitere Ideen, aber keine Lösungen: * Es gibt die Funktion ProductToPart * Man könnte die LageInformationen des ReferenceProducts auslesen, den Body kopieren (Instanz ist dann egal) und die Translationsinformationen auf den Body wirken, dann wäre er wieder an die richtigen Stelle. Der Code wird dann aber sehr viel komplexer. ------------------ 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 |
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 14. Feb. 2013 16:48 <-- editieren / zitieren --> Unities abgeben:
|
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: 14. Feb. 2013 17:45 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
Versuch dann mal osel.Item2(1).Reference (solltest ehh Item2() verwenden). ------------------ 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 |
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 15. Feb. 2013 08:59 <-- editieren / zitieren --> Unities abgeben:
|
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: 15. Feb. 2013 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
|
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 18. Feb. 2013 09:01 <-- editieren / zitieren --> Unities abgeben:
Danke für den Hinweis! Aber Publications scheinen auch mit dem Befehl CreateReferenceFromName zu arbeiten und das hilft mir ja leider nicht. Die Lageinformationen auszulesen wäre evtl. eine interessante Möglichkeit. Könntest du mir sagen, wie ich da vorgehen müsste? 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: 18. Feb. 2013 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für chameleon
Die Suchfunktion hat das hier ausgespuckt: http://ww3.cad.de/foren/ubb/Forum137/HTML/005219.shtml#000001Hinweis: Ich bitte Dich, als Student, Dir die Sachen autodidaktisch beizubringen und die Suchfunktion des Forums zu benutzen. Ich werde Dir generell immer nur Hilfe zur Selbsthilfe sein. Fertige Lösungen kann ich Dir schon aus arbeitstechnischen Gründen nicht liefern (außer Du kaufst mich ein :-D). Hoffe aber, dass meine Vorschläge Dir Ideenimpulse liefern, wie Du Dein Problem selbst lösen kannst. Auch ich weiß nicht alles und habe auch nicht alles ausprobiert. ------------------ 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 |
chameleon Mitglied Student
Beiträge: 27 Registriert: 27.04.2010 Pro/Engineer Wildfire 4.0 Catia V5 R19
|
erstellt am: 18. Feb. 2013 15:10 <-- editieren / zitieren --> Unities abgeben:
Danke für die Hilfe! Natürlich erwarte ich von niemandem vollständige Quellcodes als Antwort. Aber wer weiß, vielleicht hatte ja jemand ein ähnliches Problem und kennt ein paar Kniffe. Ich habe mittlerweile (nach einer Woche ) das Problem ausfindig machen können. Es gab Subproducts, die Backslashes im Namen trugen und daher schlug der Befehl immer fehl. Also CreatReferenceFromName funktioniert auch mit längeren Pfadangaben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |