Autor
|
Thema: User-Selektion nach CATParts in einem CATProduct (2120 mal gelesen)
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 24. Sep. 2009 12:44 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich bin neu hier im Forum und das ist mein(e) 1. Beitrag/Frage: Mein Aufgabenstellung ist, die in einem CATProduct enthaltenen CATParts nach gewissen Vorgaben zu überprüfen. Es sollen nicht grundsätzlich alle CATParts überprüft werden, sonder der Anwender soll sie per Anklicken im Strukturbaum auswählen können. Und hier entsteht mein Problem: Ich bekomme es nicht hin, eine SelectionsAbfrage zu erstellen und entspr. auszuwerten. Mit "SelectElement2" / "SelectElement4" habe ich mich schon versucht - ohne Erfolg. Kann mir jemand weiter helfen? Vielen Dank schon im voraus.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 12:55 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo Shamrock2, folgendes Makro sollte funktionieren: ' Auswahl festlegen ----------------------------------------------- Dim selElements(1) selElements(0) = "Part" selElements(1) = "Product" ' Selektion definieren und leeren --------------------------------- Dim userSel As Object Set userSel = CATIA.ActiveDocument.selection userSel.Clear ' Selektion vornehmen lassen -------------------------------------- Dim E As String E = userSel.SelectElement2(selElements, "Part auswählen.", True) bei mir lassen sich demnach Parts und Products auswählen. Hoffe, es hilft. MfG Thomas 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: 24. Sep. 2009 12:57 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Wo ihr gerade dabei seit: Wie kann ich das mit der Selektion gewählte Part denn aktivieren um zb Parameter über Makro zu ändern? Lösung ist wahrscheinlich ganz einfach, aber ich denke wohl gerade ein wenig um die ecke... MfG Thomas 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: 24. Sep. 2009 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 13:22 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 24. Sep. 2009 13:35 <-- editieren / zitieren --> Unities abgeben:
Zuerst möchte ich mich bei allen bedanke, die so schnell auf meine Frage reagiert haben. Danke. Ich werde versuchen, die Lösungsvorschläge in meinem Programm ein zu binden. Das dauert sicher noch etwas und es werden ganz sicher noch weitere Fragen aufkommen, denn ich bin im Catia-Macro-Programmieren ein völliger "Frischling". Deshalb nochmals und vorab schon - Danke Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Wenn ich nochmal stören darf... also ich habe die userSelektion (siehe oben). Das heißt, CATIA hat dieses markiert. Wie binde ich denn nun die GetItem-Methode ein? Ich möchte, das UserForm zur Eingabe von ca 20 Parameter-Werten dient... die Parts in denen diese Parameterwerte geändert werden sollen, werden dann einfach über die selection ausgewählt. Mein Problem ist momentan, dass ich einfach nicht dahinterkomme, wie ich mit dem selektierten Part weiterarbeiten kann... :-( Scheint heut nicht mein Tag zu sein... MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 24. Sep. 2009 14:05 <-- editieren / zitieren --> Unities abgeben:
Habe den Vorschlag mit "userSel.SelectElement2(selElements, "Part auswählen.", True)" eingebunden. Funktioniert soweit bis auf Folgendes: 1. Kann ich nur auf der Darstellung des Produktes selektieren und warum nicht im StrukturBaum? 2. Wie kann ich per "Strg" auch mehrfach selektieren? 3. Wie komme ich an die Properties der Selektion(en)? (ich glaube das trifft auch die Frage(n) von Daniel & Thomas) Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 14:09 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo Joachim, soweit ich weiß funktioniert die Selektion während eines Makros nicht mit Strg-Funktion. Da würde sich die Vorselektion anbieten, die du dann mit der For-Funktion durchgehen kannst. For i = 1 To xxx(zb UserSel).Count Die Selektion vor Starten des Makros funktioniert ganz einfach mit: Set UserSel = CATIA.ActiveDocument.Selection Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 24. Sep. 2009 14:30 <-- editieren / zitieren --> Unities abgeben:
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Da beschäftige ich mich gerade mit... zumindest mit Punkt 3. Ich möchte die Parameter des selektierten Parts ändern und bekomme den Zugriff nicht hin... :-D Das ist ja ein Beispiel , für das Problem, welches du beschreibst. Deinen Punkt 1 verstehe ich nicht ganz: Das oben gepostete Makro lässt dich Parts oder Products im Strukturbaum selektieren. Daher weiß ich nicht, was Du da konkret meinst. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 24. Sep. 2009 14:54 <-- editieren / zitieren --> Unities abgeben:
Okay, ich versuch's mal zu beschreiben: wenn ich das Macro starte und über den StrukturBaum mit dem Cursor streiche tut sich nichts --> der Cursor ändert sich zum "Durchfahrt-VerbotsSchild". Nur wenn ich über das Produkt in seiner Darstellung streiche werden die jeweiligen zugehörenden Baumteile ins Highlight gebracht. Hier mein Code: ############################################################################# ' Selection definition and free ____________________________________________ Set UserSelection = CATIA.ActiveDocument.Selection ' Selection offer for the user ______________________________________________ Dim Filter(1) Filter(0) = "Part" Filter(1) = "Document" Dim Entry Entry = UserSelection.SelectElement2( _ Filter, _ "Bitte selektieren Sie / ESC zum Abbrechen", _ True _ ) If Entry = "Normal" Then MsgBox (UserSelection.Item(1).Value.Name) Else MsgBox ("Abbruch") End If ' Selection checking ________________________________________________________ If UserSelection.Count > 0 Then Dim i For i = 1 to UserSelection.Count Echo "1: " & (UserSelection.Item(i).Name) Echo "2: " & (UserSelection.Item(i).Value.Name) Dim x Dim catProduct Set catProduct = CATIA.ActiveDocument.Product ' Properties ____________________________________________________________ For x = 1 To catProduct.UserRefProperties.Count Dim Property, pos, PropValue Property = catProduct.UserRefProperties.Item(x).Name pos = InStr(1, Property, "cdbdocname") If pos <> 0 Then PropValue = catProduct.UserRefProperties.Item(x).Value Echo x & "---" & Property & "---" & PropValue End If Next Next End If ' Selection free ____________________________________________________________ UserSelection.Clear ############################################################################# Wie ich an die Properties des aktiven Dokumentes heran komme ist im Code an der Stelle "Properties" zu erkennen. Aber wie kann ich die Selektion in diese Abfrage bringen? Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 15:07 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Das du das Part nicht anwählen kannst, liegt daran, dass jedes Part im Baum unter einem "Produkt" angeordnet ist. Wenn du dieses öffnest, befindet sich darunter nur ein Part. Willst du also diese Komponente im Baum anwählen, muss Dein Filter ein Produkt sein! Ansonsten musst du das Produkt im Strukturbaum erweitern um dann das CATPart dirket anzuwählen. Habe ich das nun richtig verstanden? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 24. Sep. 2009 15:20 <-- editieren / zitieren --> Unities abgeben:
Bingo, das war's. Habe den Filter um "Product" erweiter und schon tut's - schon kann ich selektieren. Kannst Du mir sagen, wo ich eine Liste über die Werte erhalte, die gefiltert werden können? Wenn Du eine Lösung zum Punkt "Properties" hast, bitte an den Beitrag anhängen. Danke und Gruß Joachim Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 24. Sep. 2009 15:42 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 25. Sep. 2009 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo Shamrok, wie Du die Properties anwählst erfährst du im Watch-Fenster. Einfach das zuletzt definierte Objekt im Text markieren und dann im watch-Fenster ablegen. Dann Makro laufen lassen bis der Fehler erscheint. Im Debug-Modus kannst Du dann das definierte Objekt aufklappen und die gewünschten Properties suchen, die Du ändern willst. Der Zugriff erfolgt dann mit dem Namen der "Aufklappelemente" des geöffneten Baums im watch-Fenster. Hoffe, das hilft Dir weiter. MfG Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 25. Sep. 2009 11:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Makronizer, Thomas, Danke für Deine Rückmeldung. Leider quäle ich mich noch mit einem einfachen Editor (notepad++) an der Programmierung rum (Visual Studio ist bestellt). Deshalb kann ich Deinen Vorschlag (noch) nicht nachvollziehen. Habe mir aber zwischenzeitlich selbst helfen können: Hauptproblem ist/war, dass ich die Dokumente, die ich per Auswahl abfragen wollte, zuerst einmal laden muss (ist daran zu erkennen, dass bei einem jungfraulichen Dokument etwas Zeit verstreicht, wenn man dessen Properties anschauen möchte). Lösung: For i = 1 To catProducts.Count Set AktiveProd = catProducts.Item(i) AktiveProd.ApplyWorkMode DEFAULT_MODE Next Jetzt komme ich in ueber eine UserSelection an die einzelnen Dokumente und derer Properties ran. Danke und Gruß Joachim
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: 25. Sep. 2009 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Servus Du könntest doch das Makro im ("CATIA-internen") VBA-Editor als VBA-Modul erstellen. Dann hast du auch ohne Visual Studio das Watchfenster,.... Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 25. Sep. 2009 11:38 <-- editieren / zitieren --> Unities abgeben:
|
IIYTII Mitglied
Beiträge: 85 Registriert: 30.05.2007 Catia V5 R19 Programmierung unter CATvba
|
erstellt am: 28. Sep. 2009 08:12 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hi, das Thema würde mich auch interessieren. Mit dem Quelltext oben kann ich leider nur Parts selektieren, wie kommt man denn an die Features ran? Product - Part -- Feature (z.B. Achse selektieren) Filter auf "AnyObject" geht nicht! Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Shamrock2 Mitglied CAD-Admin
Beiträge: 33 Registriert: 24.09.2009 CATIA V5 R16/R17 - x32 R18/R19 - x64 mit VISTAx64 auf HP XW4600
|
erstellt am: 28. Sep. 2009 08:46 <-- 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: 28. Sep. 2009 11:14 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Hallo zusammen, sorry, dass ich mich in diese Diskussion auch noch einmische, aber ich glaube ich muss auch meinen Senf zu zwei Themen geben, die ich hier heraus gefiltert habe. Erst einmal Parts "aktivieren" geht indem man ihre Workbench aufruft, ich hoffe das war damit gemeint und ich antworte jetzt nicht auf etwas falsches. Dann ist auch eine Multiselection möglich und zwar auf zwei Weisen, einmal mit einer Schleife, bis der User Esc drückt, würde ich aber nicht machen. Und über so ne richtige Multiselection (kennt ihr auch mit so nem grünen Sack der so gelbe Punkte hat). Das ist entweder SelectedElement3 oder SelectedElement4, denen man die Multiselection mitgibt. Grad kein CATIA hier, weshalb ich es nicht 100%ig sagen kann, aber es geht definitiv. ------------------ 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 |
IIYTII Mitglied
Beiträge: 85 Registriert: 30.05.2007 Catia V5 R19 Programmierung unter CATvba
|
erstellt am: 30. Sep. 2009 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Zitat: Original erstellt von Shamrock2: Hallo IIYTII,Makronizer hat weiter oben ein paar weitere Selektionsbeispiele benannt (24.09.09, 15:42). Vielleicht hilft Dir das weiter. Gruß Joachim
Nein, dass ist nicht das, was ich mir vorstelle. Wenn ich versuche eine Selektion anzulegen, dann klicke ich auf z.B. eine Bohrung. Leider wird mir dann nicht der Pfad der Bohrung bzw. der Mittelachse ausgelesen, sondern der Partname. Wie komme ich denn zum Pfad der Achse?
Ich bekomme als Ausgabe: Part1.1 und möchte gerne: Code: Selection_RSur Face Brp Pad.1;2);None :frown:);Cf11 :frown:));Pad.1_ResultOUT;Z0;G3242)
haben. Was ich durch den VB-Quellcode oben auch ohne weiteres auslesen kann, vorausgesetzt ich befinde mich in einem PART! ich befinde mich aber in einem PRODUCT Was kann man da machen? Selection 3 und 4 geben auch keine Verbesserung [Diese Nachricht wurde von IIYTII am 30. Sep. 2009 editiert.]
[Diese Nachricht wurde von IIYTII am 30. Sep. 2009 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: 30. Sep. 2009 13:53 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Kann das sein, dass deine Selection nicht auf Hole oder so geht, sondern auf Part? Also die InputTypen nicht klar definiert 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 |
IIYTII Mitglied
Beiträge: 85 Registriert: 30.05.2007 Catia V5 R19 Programmierung unter CATvba
|
erstellt am: 30. Sep. 2009 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Ah, super danke dir! scheint jetzt zu funktionieren, das Problem war der Filter "Part" den ich eigentlich imemr drin hatte. Schmeiße ich den raus, dann werden die scheinbar "untergeordneten Filter" ativ und ich bekomme die exakten Benennungen! :-) 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: 30. Sep. 2009 14:53 <-- editieren / zitieren --> Unities abgeben: Nur für Shamrock2
Der Filter einer Selektion geht immer vom ersten Typ zum letzten. Also wenn du etwas anklickst, was sowohl das eine, als auch das andere sein könnte, so wird das Objekt zurück gegeben, welches als erstes im Filter steht. Die Filterreihenfolge ist somit sehr wichtig. ------------------ 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 |