Autor
|
Thema: Punkte suchen und in Array schreiben (1057 mal gelesen)
|
Physimathi Mitglied Student
Beiträge: 88 Registriert: 07.09.2005
|
erstellt am: 12. Apr. 2007 10:08 <-- editieren / zitieren --> Unities abgeben:
Hallo User, ich lerne gerade Schritt für Schritt Markro mit dem Buch von Herrn Ziethen. Man kann ja sagen es geht bescheiden vorwärts. Ich kann also schon fleißig Punkte und Körper usw. erzeugen, doch es gibt in der anderen Richtung große Probleme. Ich bekomme es nicht hin, die Geometrien wieder einzulesen. Z.B. Wie suche kann ich in einem Produkt nach Punkten und Linien suchen lassen, so das am Ende diese Punkte und Linien auch in einem Array stehen. Ich habe es über das catGeoTypePoint2D versucht, nur leider sterbe ich dann bei der Umformung in einen Array mit allen Itemdatem zu dem Punkt ab. Habe auch schon mit Selection schon experimentiert, nur das klappt auch nicht wirklich. Hat jemand schon ein Skript zu diesem Thema mal geschrieben? Danke für Hilfe Phys Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Proofin Mitglied Dpl.Ing
Beiträge: 208 Registriert: 24.11.2004
|
erstellt am: 12. Apr. 2007 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für Physimathi
Moin Physimathi, Du kannst Elemente am einfachsten über die Search Funktion der Selection suchen. Hierfür kannst du den Suchstring aus der Suchfunktion unter "Bearbeiten/Suchen" verwenden. Aber aufpassen dieser Suchstring ist Sprachabhängig. Also du kannst zum Beispiel in der deutschen Sprachumgebung mit folgendem Code alle Punkte suchen lassen: --------------------------------- Code --------------------------------- Dim oSel As Selection Set oSel = CATIA.ActiveDocument.Selection oSel.Search ("Type=Punkt, all") --------------------------------- Code Ende --------------------------------- Ähnlich funktioniert das mit Linien und allen anderen Elementen.
Gruß Proofin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Apr. 2007 10:40 <-- editieren / zitieren --> Unities abgeben: Nur für Physimathi
Hallo, das ist ganz einfach: Set oSelection = CATIA.ActiveDocument.Selection oSelection.Clear oSelection.Search "CATGmoSearch.Point,all" Dim aPointArray() ReDim aPointArray(oSelection.Count) For n = 1 to oSelection.Count Set aPointArray(n) = oSelection.Item(n).Value Next Das wars. Jetzt sind deine Punkte im Array. Eine andere Möglichkeit (und um auf das .Search zu verzichten) wäre das rekursive Scanen deiner Struktur. Zu dem Ganzen gibts im übrigen schon mehrere Beiträge im Forum. Einfach mal die Suchfunktion verwenden. Hoffe das Hilft dir weiter.
Gruß ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Physimathi Mitglied Student
Beiträge: 88 Registriert: 07.09.2005
|
erstellt am: 12. Apr. 2007 11:08 <-- editieren / zitieren --> Unities abgeben:
Danke, habe eine deutsche version und somit die Suche auf Punkt gesetzt. Nun sind die Punkte im Array. Toll Ich merke auch immer wieder, das eben viel im Forum steht, nur wenn man nicht weis wonach man suchen soll, dann sucht man sich verrückt. Euch einen schönen Tag. Sub CATMain() Set oSelection = CATIA.ActiveDocument.Selection oSelection.Clear oSelection.Search ("Type=Punkt, all") Dim aPointArray() As Point2D ReDim aPointArray(oSelection.Count) For n = 1 To oSelection.Count Set aPointArray(n) = oSelection.Item(n).Value Next End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Physimathi Mitglied Student
Beiträge: 88 Registriert: 07.09.2005
|
erstellt am: 12. Apr. 2007 12:03 <-- editieren / zitieren --> Unities abgeben:
Hallo, wie es eben so ist, mit dem Tun kommen die Fragen. Mein Skript: Sub CATMain()
Set oSelection = CATIA.ActiveDocument.Selection Dim Auswahl(0) oSelection.Clear Auswahl(0) = "Point2D" MsgBox ("Selektieren Sie bitte einen Punkt") Status = oSelection.SelectElement2(Auswahl, "Select", False) Set oSelectedElement = oSelection.Item(1).Value 'Nimm erste Selektion MsgBox ("Punkt in Selection") End Sub Nun meine Frage: Im Baum kann ich einen Punkt anklicken, welcher dann in die Selection geht. Doch gehe ich auf den Punkt im Körper, kann ich keine Punkte anklicken. (Sie sind gesperrt) Warum? Ist Punkt im Baum nicht gleich Punkt im Körper? Oder muss man die Punkte erst eine Funktion zuweisen. Mein Experimentmodell hat einen einzel Skizzenpunkt, eine Linie mit zwei Punkten und es gibt dann noch einen Geometriepunkt "3D". Phys [Diese Nachricht wurde von Physimathi am 12. Apr. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAMiCADse Mitglied
Beiträge: 177 Registriert: 17.02.2006 V5,R19,SP9
|
erstellt am: 12. Apr. 2007 13:31 <-- editieren / zitieren --> Unities abgeben: Nur für Physimathi
Hallo Physimathi, Zitat: Im Baum kann ich einen Punkt anklicken, welcher dann in die Selection geht. Doch gehe ich auf den Punkt im Körper, kann ich keine Punkte anklicken. (Sie sind gesperrt)
Zur Selektion (Baum <-> Fenster) hat Proofin dir doch hier schon geantwortet!?!
Zitat: Warum? Ist Punkt im Baum nicht gleich Punkt im Körper?
Selektion im Strukturbaum gibt ein Objekt zurück (Point) Selektion auf Bauteil gibt ein BRep zurück (Vertex) Wenn du mehr zu BReps wissen willst, dann google mal nach "Boundary Representation". Gruß CAMiCADse Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Physimathi Mitglied Student
Beiträge: 88 Registriert: 07.09.2005
|
erstellt am: 12. Apr. 2007 14:00 <-- editieren / zitieren --> Unities abgeben:
|