Autor
|
Thema: InstanceName aber ohne Selection (1262 mal gelesen)
|
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: 21. Jan. 2013 16:47 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, wie ihr wisst erfreue ich euch ja gern mit Knobelaufgaben, die mich sehr beschäftigen. Dieses Mal habe ich eine Applikation, welche Annotation-Informationen (Notizen) aus einer Produktstruktur ausliest. Dabei habe ich verschiedene Captures (Aufnahmen? – ich weiß nicht wie der Deutsche Begriff dazu wäre, das Kamerasymbol jedenfalls :-)), welche meine Annotations enthalten. Diese Annotations sind nun wieder über die Produktstruktur verteilt. Und jetzt kommt die Herausforderung: Ich benötige den Instanznamen des Produktes / Teils, in dem sich die Annotation, des Captures befindet, da ein Teil mehrfach verbaut sein kann oder die Namen der Annotations doppelt vergeben sind. Dafür nutze ich folgende Funktion. Code:
Private Function getInstanceNameToProductFromObject(ByRef i_objWork As Object) As String Dim selWork As INFITF.Selection Set selWork = CATIA.ActiveDocument.Selection Call selWork.Clear Call selWork.add(i_objWork) getInstanceNameToProductFromObject = selWork.Item2(1).LeafProduct.name End Function
Diese Funktion, da mir nix Besseres eingefallen ist, nutzt die Selection und davon die Methode LeafProduct(). Nur diese Funktion hat die Verarbeitungszeit meines Tools um den Faktor 5 erhöht. Das ist aus meiner Sicht nicht tragbar. Drum stelle ich die Frage in die Runde, ob nicht jemand noch eine andere Idee hätte, möglichst günstig (schnell) zum Instanznamen des übergeordneten Produkts einer Annotation zu kommen. An die hier aufgeführte Funktion übergebe ich direkt das Annotation Feature. Zum Zeitpunkt des Aufrufes der Funktion ist mir bereits die Produktstruktur bekannt (mit Inszanznamen), hilft mir derzeit aber auch nicht weiter, da ich nicht weiß wie ich eineindeutig sonst ermitteln könnte, ob die Annotation in einem Produkt ist. Ich bin auf jeden Fall auf eure Ideen gespannt. :-) Vielen Dank! ------------------ 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 |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 21. Jan. 2013 23:24 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo HoBLila, ich habe hin und her überlegt, doch das Funktionieren Deines Skriptes geht aus meiner Sicht nur unter einer Voraussetzung: Deine als Eingabe fungierende "Annotation" ist schon ein "SelectedElement". Denn wie solltest Du sonst auf die genutzte "Instance" kommen? Wenn ich mit dieser Annahme aber Recht habe, musst Du ja das "SelectedElement" nicht erst noch einmal in einer "Selection" verarbeiten, sondern kannst doch daraus direkt die "Instance" ermitteln. Etwa so: Code: Private Function getInstanceNameToProductFromObject(ByRef i_objWork As INTITF.SelectedElement) As String getInstanceNameToProductFromObject = i_objWork.LeafProduct.name End Function
Oder habe ich da einen Denkfehler? 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 |
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: 22. Jan. 2013 09:29 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, vielen Dank für Deine Antwort. Meien Funktion funktioniert schon, Du hast quasi auch nichts anderes geschrieben, nur dass Du die das Selektieren vorschaltest. Mein Problem ist aber, dass ich gar nicht selektieren möchte. Ich würde gern völlig auf das Selection-Objekt verzichten. ------------------ 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 |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 31. Jan. 2013 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, wie du sicher selber schon versucht hast kommt man mit Code: MeineAnno.Parent.Parent...Name
nicht ans Ziel. Aber wie kommst du zu der Annotation also "i_objWork"? Müsstest doch vorher schon über die Struktur oder eine Selection gekommen sein, also am InstanceName vorbei oder? mfG Mario 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: 01. Feb. 2013 09:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Mario, danke für Deine Gedanken zum Thema! Ja für den Normalfall hast Du völlig Recht und ich müsste wissen, wo ich mich gerade befinde. In meinem Fall werte ich die Captures aus der FTA-Workbench aus (also die blauen Fotoapparate). Diese sind mit Annotations verknüpft, die ich auswerten will. Diese verknüpften Annotations können aber leider überall in der Produktstruktur ihren Ursprung haben. Leider auch in irgendeinem SubProduct oder Part. Hinzu kommt noch, dass für meinen Fall entscheidend ist, aus welcher Instanz eines Parts die Annotation stammt, auch wenn das Capture an einer völlig anderen Stelle in der Baumstruktur sitzt. Z.B. kann ein Normteil, welches eine Annotation hat, mehrfach verbaut sein. Das Capture zeigt nun einen Teilausschnitt des Produktes und ich muss wissen welche Annotations und welche Instanz dazu. --> Für die weitere Verarbeitung ist es entscheidend zu wissen wo die entsprechenden Annotations zu finden sind. ------------------ 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 |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|