Autor
|
Thema: SelectElement2 Methode bei Branchable (2006 mal gelesen)
|
Thunderflash Mitglied Konstrukteur Bordnetz
Beiträge: 4 Registriert: 14.09.2012
|
erstellt am: 24. Nov. 2012 19:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Ihr Lieben, ich bäuchte mal eure Hilfe. Ich arbeitere gerade mit der Kabelbaumentwicklung und versuche mit der Methode SelectElement2 ein Branchable oder Bundle Segment zu selektieren. Leider hab ich bis jetzt immer noch nicht herausgefunden, welchen Opjekttyp ich für den Suchfilter einsetzen muss. Bisher mache ich es über eine Rippe und schließe dann von der Nummerierung auf den Branchable.(Rippe.1 = Branchable.1). Das funktioniert soweit auch, leider finde ich die Lösung suboptimal,da ich den Brachable nicht im Strukturbaum auswählen kann und auch Rippen auswählen könnte. Weiß jemand, wie den ObjektTyp für den Filter herausbekomme?
Code: Dim Was(0), Rippe(0) Was(0) = "Part" Rippe(0) = "Rib"'********Selektion definieren und leeren*********** Dim UserSel Set UserSel = CATIA.ActiveDocument.Selection UserSel.Clear '*****************Auswahl festlegen *************************** MsgBox "Wählen Sie den Multibranchable", vbOKOnly, makroname + " " + version eingabe = UserSel.SelectElement2(Was, "Multibranchable auswählen", False) If eingabe = "Normal" Then Dim p1 As String p1 = UserSel.Item(1).Value.Parent.Name 'Produkt-Mehrfachverzweigbar1.CATPart Dim documents1 As Documents Set documents1 = CATIA.Documents Dim partDocument1 As PartDocument Set partDocument1 = documents1.Item(p1) Dim p As String p = UserSel.Item(1).Value.Name 'Produkt-Mehrfachverzweigbar1 Dim part1 As Part Set part1 = partDocument1.Part Dim parameters1 As Parameters Set parameters1 = part1.Parameters '*******************Auswahl über Rib festlegen************************************************* 'Da anzunehmen ist, dass der Name der Rib sowie des Bundlesegmentes nicht geändert werden und die Indizes dieselben sind UserSel.Clear Dim bundleseg, index, laenge, diff, nummer MsgBox "wählen Sie ein Bündelsegment", vbOKOnly, makroname + " " + version bundleseg = UserSel.SelectElement2(Rippe, "Wählen Sie ein Bündelsegment", False) If bundleseg = "Normal" Then If (Left(UserSel.Item(1).Value.Name, 3) = "Rib") Then laenge = Len(UserSel.Item(1).Value.Name) index = InStrRev(UserSel.Item(1).Value.Name, ".") diff = laenge - index nummer = Right(UserSel.Item(1).Value.Name, diff) Else Exit Sub End If '********************************************************************************************** Dim pfad As String pfad = (p + "\Constraints\" + "Bundle Segment." + CStr(nummer) + "\Diameter") Dim dimension1 As Dimension Set dimension1 = parameters1.Item(pfad) dimension1.Value = rundung part1.Update 'Part wird aktualisiert MsgBox "Anpassung Erfolgreich!", vbOKOnly, makroname + " " + version
------------------ Wenn du willst, das etwas richtig gemacht wird, dann mach es selber!! 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: 24. Nov. 2012 23:19 <-- editieren / zitieren --> Unities abgeben: Nur für Thunderflash
Servus Willkommen in Forum. Du kannst den Typ folgender maßen auslesen: Branchable selektieren (von Hand) und über TypeName den Typ ausgeben (oder eben im Watch-Fenster das Objekt anschauen) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thunderflash Mitglied Konstrukteur Bordnetz
Beiträge: 4 Registriert: 14.09.2012
|
erstellt am: 25. Nov. 2012 13:48 <-- editieren / zitieren --> Unities abgeben:
Hallo, erstmal danke für die schnelle Antwort. Ich hatte jetzt mal folgendes versucht. Code: Sub CATMain() Dim activedoc As Document Set activedoc = CATIA.ActiveDocument Dim oselection As Selection Set oselection = activedoc.Selection MsgBox oselection.Item2(1).Type End Sub
Das liefert mir auch für alle Elemente den passenden Typ für den Filter, nur eben nicht für ein Bundlesegment. Das Branchble liefert mir Product, womit ich so aber nichts anfangen kann.Das ganze scheint doch nicht so trivial, wie anfangs angenommen. Ich hab mal die Bilder mit hochgeladen. Vielleicht liegt das auch an mir, aber ich komme einfach nicht drauf. Noch jemand eine Idee, woran das liegen könnte?
------------------ Wenn du willst, das etwas richtig gemacht wird, dann mach es selber!! 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: 26. Nov. 2012 09:37 <-- editieren / zitieren --> Unities abgeben: Nur für Thunderflash
Code:
Sub CATMain() Dim activedoc As Document Set activedoc = CATIA.ActiveDocument Dim oselection As Selection Set oselection = activedoc.Selection Call MsgBox(TypenName(oselection.Item2(1).value)) End Sub
Edit: Eventuell hilft hier auch das Such-Fenster, wo man den Typ durch Auswählen herausfinden kann. Oder mach einmal eine Makroaufzeichnung, wie Du solch ein Element erzeugst, eventuell findet sich dann in der AUfzeichnung etwas. Möglich ist aber auch, dass der Typ an der API nicht vorhanden ist. ------------------ 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 26. Nov. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thunderflash Mitglied Konstrukteur Bordnetz
Beiträge: 4 Registriert: 14.09.2012
|
erstellt am: 26. Nov. 2012 18:22 <-- editieren / zitieren --> Unities abgeben:
Das liefert leider das gleiche Ergebnis. Die Makroaufzeichnung hilft mit hier leider auch nicht weiter. Wie kann ich das Problem denn dann lösen, wenn der Typ nicht in der API nicht vorhanden ist? ------------------ Wenn du willst, das etwas richtig gemacht wird, dann mach es selber!! 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: 27. Nov. 2012 17:19 <-- editieren / zitieren --> Unities abgeben: Nur für Thunderflash
Anfrage an Dassault stellen (PMR) es über die API zugänglich zu machen. Ist mühsig, aber wenn sie etwas nicht freigegeben haben, gibts kaum Alternativen. :-( ------------------ 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 |
Thunderflash Mitglied Konstrukteur Bordnetz
Beiträge: 4 Registriert: 14.09.2012
|
erstellt am: 28. Nov. 2012 19:09 <-- editieren / zitieren --> Unities abgeben:
Hmm, naja muss ich mal sehen, ansonsten belasse ich das erst so. Nochmal eine andere Frage. In meinen Bildern oben sieht man ja die Branchable. Ist es ohne CAA möglich herauszufinden, welche miteinander verbunden sind?
------------------ Wenn du willst, das etwas richtig gemacht wird, dann mach es selber!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|