ich habe mal wieder ein komisches Annotation (FT&A) Problem.
Und zwar suche ich eine Annotation mit einem bestimmten Namen um nach der Erzeugung einer neuen Annotation sicherzustellen, dass der Name auch eindeutig ist.
Anmerkung dazu: Der User erzeugt die Annotation, ich muss also hinterher schauen, ob der Name eindeutig ist.
Nun ist aber unter Tools --> Options --> Mechanical Design --> FT&A --> Display --> Under View/Annotation Plane nodes aktiviert.
Das hat zur Folge, dass jede Annotation doppelt, also im Notes Knoten des Annotation Set.1 und im Notes Knoten des View auftaucht.
Das wiederum führt dazu, dass die Suche komischerweise die doppelte Anzahl an Annotations findet.
Und das wiederum interpretiert mein Algorithmus als: Annotation 2x mit dem Namen (in dem Beispiel mit dem Textinhalt) gefunden, also falsch, da doppelt vorhanden. Real ist die Annotation aber nur einmal, jedoch im Baum zweimal sichtbar. Kurios ist dabei auch, dass die Annotation, wenn ich sie manuell selektiere, nicht zweimal selektiert ist.
Also dachte ich mir nun: Kein Problem, mich interessieren nur die Annotations im globalen Notes-Knoten, also selektier ich ihn vorher und such dann nur darin. Und hier habe ich nun mein eigentliches / nächstes Problem, wie teile ich der Suche mit, dass sie nur darin suchen soll?
Mein Ansatz war nun herauszufinden, von welchem Typ der Knoten ist, was mir schon einmal nicht gelungen ist. Dann wollte ich über die Parents-Eigenschaft meiner Annotation den Knoten finden, aber auch das geht nicht, da ich direkt beim Annotation Set.1 lande...
Also habe ich es manuell durchgeführt und den Notes-Knoten selektiert und die Suche darüber laufen lassen, bzw. mir das Objekt zurück geben lassen.
CATIA meint ich hätte Annotation Set.1 selektiert, die Suche wird aber korrekt ausgeführt.
Nun muss das noch in den Code, also denke ich mir, wenn ich den Typ der Notes-Knoten schon nicht kenne, dann suche ich einfach nach dem Namen und finde sie auch. Nun selektiere ich den letzten Knoten (unter der Annahme es sei der richtige) und dann ist wieder das Annotation Set.1 selektiert und er sucht wieder überall. :-(
hier der Code zu dem gerade geschilderten Versuch:
Code:
Call i_selWork.Clear
Call i_selWork.Search("Name=Notes,all")
Set objNodeNotes = i_selWork.Item2(i_selWork.Count2).Value
Call i_selWork.Clear
Call i_selWork.Add(objNodeNotes)
Call i_selWork.Search("CATTPSSearch.CATTPSText.TextString_CAP=" & sName & ",sel")
Wie gesagt, ich habe damit leider nichts erreicht, da ich wieder über alles suche. :-(
Vielleicht habt ihr noch ne gute Idee, wie ich meine Suche eingrenzen kann, oder an die gesuchten Objekte rankommen kann.
Die gefundenen Annotations vergleichen, ob es sich um die selbe handelt, wäre auch eine Maßnahme, aber da sie selbst ja kaum etwas zurückliefern, wüsst ich gerade nicht, wie ich sie voneinander unterscheiden könnte... :-(
Mein derzeitiger, aber nicht schöner, Ansatz ist jetzt über die Collection der Annotations, aus dem Annotation Set.1 eine Schleife zu bauen, die alle einzeln durchgeht und die Namen auswertet. Hier rechne ich jedoch mit einem erheblichen Performance-Verlust (wir sprechen hier von mehreren Hundert/Tausend Annotations).
Edit: Ich habe mal meine Systeminfo aktualisiert, damit ihr auch wisst, dass es um R19 SP09 geht.
------------------
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 27. Mrz. 2012 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP