Autor
|
Thema: Selektion auf Baum beschränken (2487 mal gelesen)
|
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 08. Apr. 2010 08:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich verwende bisher in meinem Macro den Befehl "SelectElement2" welcher es dem Anwender ermöglicht ein Element im 3D-Fenster oder im Baum auszuwählen... Gibt es eine Möglichkeit die Selektion des Users auf den Baum zu beschränken? Ich habe schonmal irgendwo hier im Forum was darüber gelesen aber finde das nicht mehr wieder. Soweit ich mich erinnere, gab es dort aber nur den Vorschlag alle 3D-Elemente auszublenden, und nach der Selektion wieder einzublenden. Diese Lösung finde ich aber nicht gut! Danke im Voraus! Hannes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
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: 08. Apr. 2010 09:26 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
|
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 08. Apr. 2010 09:48 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnelle Antwort! Schade, dass es keine andere Möglichkeit zu geben scheint, als die Körper auszublenden... Ich verwende als Filter "Body", sodass der User nur diese anklicken kann. Der Body, der vom User ausgewählt werden muss, besteht leider aus ein paar anderen Bodies, die mit dem Bool'schen Operator "Add" an diesen gebunden sind. Wenn der User nun einen Body im 3D-Bereich anklickt, wird leider nicht der Hauptbody verwendet. Das ist leider eine potentielle Fehlerquelle... Gruß Hannes Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Moderator Manager
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: 08. Apr. 2010 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
|
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 08. Apr. 2010 10:15 <-- editieren / zitieren --> Unities abgeben:
Ja, es soll Benutzer geben die alles einfach weiterklicken Für das Abfangen im Script muss ich mir noch was überlegen Aber das bekomm ich schon hin! Denke ich werds über die Anzahl an Items die in dem Body sein müssen überprüfen... Danke! 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: 08. Apr. 2010 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Hallo Hannes, es gibt noch folgende Alternativen: 1. Den Pickable-Status auf catVisPropertyNoPickAttr setzen, dann ist der Body zwar sichtbar, aber nicht im 3D selektierbar. 2. Du liest im Script vor der Selektion alle Bodies und deren Sub-Bodies aus, so dass du eine parent-children struktur hast (Ist per Script so nicht direkt auszulesen, da alle bodies auf einer Ebene liegen, -> zusammenbasteln) . Wird dann bei der Selection ein children-Body selektiert, nimmst du einfach den parent. Gruß CAMiCADse 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: 08. Apr. 2010 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Hallo, du bekommst über .InBooleanOperation für jeden Body die Information, ob er sich auf der ersten Ebene befindet oder in einer Body-Struktur verschachtelt ist; in diesem Fall dann einfach den Inhalt der Selection löschen. Gruß ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 08. Apr. 2010 14:26 <-- editieren / zitieren --> Unities abgeben:
|
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 26. Mai. 2010 15:12 <-- editieren / zitieren --> Unities abgeben:
Hallo! Würd gerne mal wissen wie man die VisProperties einer Selection auf catVisPropertyNoPickAttr setzt. Hab mich schon in der Automation-Datei umgeschaut aber konnte irgendwie noch nicht herausfinden, wie das genau funktionieren soll. Kann mir jemand helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 26. Mai. 2010 15:33 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Hallo Hannes12, z.B. so: Code: Dim auswahl As VisProperties Set auswahl = Selection.VisProperties Selection.Clear Selection.Search "Name:Elementname" auswahl.SetPick catVisPropertyNoPickAttr
Gruß Bertel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 26. Mai. 2010 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Servus Wenn etwas selektiert hast (im Beispiel oSel ist die Selektion) dann über: Code: osel.VisProperties.SetPick catVisPropertyNoPickAttr
das Element im Fesnter (nicht im Baum) nicht mehr selektierbar schalten.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 26. Mai. 2010 15:55 <-- editieren / zitieren --> Unities abgeben:
Danke für die schnellen Antworten! Bekomme das aber leider immernoch nicht hin! Mein Code lautet: Code:
Set myDoc = CATIA.ActiveDocument Set ActivePart = CATIA.ActiveDocument.Part ' Selektion definieren und leeren ---- Dim UserSel 'As Object Set UserSel = myDoc.Selection UserSel.Clear '------------------------------------- ' Auswahl festlegen ------------------- Dim Was1(0) Was1(0) = "Body" '-------------------------------------- Dim Auswahl Auswahl = UserSel.SelectElement2(Was1, "Bitte das Element auswählen.", False)
Wo genau muss ich denn die Visproperties setzen? Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 26. Mai. 2010 16:31 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
|
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 27. Mai. 2010 09:19 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Mai. 2010 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Servus Über: Code: Sub CATMain() Set myDoc = CATIA.ActiveDocument Set ActivePart = CATIA.ActiveDocument.Part ' Selektion definieren und leeren ---- Dim UserSel 'As Object Set UserSel = myDoc.Selection UserSel.Clear '------------------------------------- ' Auswahl festlegen ------------------- Dim Was1(0) Was1(0) = "Body" '-------------------------------------- Dim Auswahl Auswahl = UserSel.SelectElement2(Was1, "Bitte den Körper auswählen.", False) UserSel.VisProperties.SetPick catVisPropertyNoPickAttr End Sub
kann man den selektierten Körper auf NoPick setzen. Über:Code: Sub CATMain() Set myDoc = CATIA.ActiveDocument Set ActivePart = CATIA.ActiveDocument.Part ' Selektion definieren und leeren ---- Dim UserSel 'As Object Set UserSel = myDoc.Selection UserSel.Clear UserSel.Search "CATPrtSearch.BodyFeature,all" UserSel.VisProperties.SetPick catVisPropertyNoPickAttr End Sub
alle Körper.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hannes12 Mitglied Konstrukteur
Beiträge: 31 Registriert: 09.02.2010
|
erstellt am: 27. Mai. 2010 11:30 <-- editieren / zitieren --> Unities abgeben:
Klasse! Mit...
Code: Sub CATMain() Set myDoc = CATIA.ActiveDocument Set ActivePart = CATIA.ActiveDocument.Part ' Selektion definieren und leeren ---- Dim UserSel 'As Object Set UserSel = myDoc.Selection UserSel.Clear UserSel.Search "CATPrtSearch.BodyFeature,all" UserSel.VisProperties.SetPick catVisPropertyNoPickAttr UserSel.Clear ' Auswahl festlegen ------------------- Dim Was1(0) Was1(0) = "Body" '-------------------------------------- Dim Auswahl Auswahl = UserSel.SelectElement2(Was1, "Bitte das Element auswählen.", False) End Sub
..klappt nun genau so, wie ich das wollte! Danke! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 02. Mai. 2011 16:24 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Hallo, ich möchte das der Anwender über Baum und 3D auswählen kann. Normal is dass doch standardmäßig bei der SelectElement2 Funktion, aber wenn ich als Filter "Face" eingeben, dann kann ich die Flächen im 3D anwählen aber wenn ich genau die selben im Baum anwählen möchte lässt er mich nicht... Wo liegt der Fehler? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 03. Mai. 2011 22:27 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
|
ThomasJay Mitglied Dipl-Ing
Beiträge: 159 Registriert: 19.04.2011 CATIA V5 R19
|
erstellt am: 03. Mai. 2011 22:32 <-- editieren / zitieren --> Unities abgeben: Nur für Hannes12
Danke für den Tipp. Probier ich morgen gleich aus, aber wenn der Filter falsch wäre, wieso kann ich dann die Flächen im 3D auswählen. Is ja deshalb kein andrer Typ, wenn dann müsste doch beides nicht möglich sein... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |