| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | Dassault PLM Integrationen mit der 3DViewStation, eine Pressemitteilung
|
Autor
|
Thema: Makro - Parameter - Mehrfachauswahl - Stelle (2212 mal gelesen)
|
Grede Mitglied Engineering Coordinator
 Beiträge: 4 Registriert: 01.02.2010
|
erstellt am: 01. Feb. 2010 17:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo ihr, ich habe ein Problem. Und zwar habe ich einen Parameter mit einer Mehrfachauswahl (Multivalue). Unabhängig vom Inhalt des ausgewählten Wertes möchte ich nun dessen Stelle innerhalb der Mehrfachauswahl herausfinden. Weiss jemand von euch wie dies möglich ist? Mit freundlichen Grüßen Grede
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Timberwolve Mitglied
 
 Beiträge: 233 Registriert: 21.07.2006
|
erstellt am: 04. Feb. 2010 14:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Grede
Hallo, ich denke es sollte möglich sein mit der Funktion (GetEnumerateValues) ungefähr so Code:
Dim oParam Dim aParamValues() Set oParam = oParameters.Item(1) 'hier muss das Parameterobjekt geholt werden
oParam.GetEnumerateValues aParamValues 'Die Funktion schreibt dir die Werte der Liste in ein Array
Anschliessend prüfst du den aktuellen Wert des Parameters und suchst in mit einer SChleife im Array. Das müsste dann die Position sein an der der Wert in der Liste steht.
Gruss Timber
------------------ Wenn alle Stricke reissen, nehm ich ein Drahtseil Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Grede Mitglied Engineering Coordinator
 Beiträge: 4 Registriert: 01.02.2010
|
erstellt am: 07. Feb. 2010 16:30 <-- editieren / zitieren --> Unities abgeben:         
Danke für deine Hilfe  Nun habe ich ein anderes Problem. Die Funktion gibt mir leider nicht den Inhalt der Parameterwerte wieder. Vorweg: die MsgBox "Wert1: "+aParamValue, ,"Stopp3" hat als Ergebnis: "Wert1: " Code: Sub CATMain()Dim oParam Set oParam = Catia.ActiveDocument.Product.Parameters.item(39) 'MsgBox "Paramter ausgewählt: "+oParam.Name, ,"Stopp1" 'Stopp1 Dim Groesse Dim Groesse2 Groesse = oParam.GetEnumerateValuesSize Groesse2 = CStr(Groesse) MsgBox "Groesse: "+Groesse2, ,"Stopp2" 'STOPP2 Dim aParamValues() Dim aParamValue oParam.GetEnumerateValues aParamValues aParamValue = CStr(aParamValues1) 'Catia.ActiveDocument.Part.Update MsgBox "Wert1: "+aParamValue, ,"Stopp3" STOPP3 End Sub
Wie man vielleicht erkennen kann habe ich nicht all zu viel Ahnung von VBA  Der Parameter ist übrigens vom Typ "Zeichenfolge" (String). PS: Total faszinierend finde ich es, dass die Funktion in einem Makro funktioniert - und im anderen nicht, je nach dem wo ich die Variablen deklariere. Deklariere ich diese zu Anfang, spuckt das Makro (an der Stelle der Funktion) immer eine Fehlermeldung CATIALength .... Error 1002 ... aus.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 07. Feb. 2010 17:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Grede
Servus Vorsicht: Bei einem Array hat dass erste Element den Index 0. Versuch es mal mit: Code:
Dim aParamValues() Dim aParamValue Redim aParamValues (oParam.GetEnumerateValuesSize - 1) oParam.GetEnumerateValues aParamValues aParamValue = CStr(aParamValues(0))
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. 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: 07. Feb. 2010 18:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Grede
Hallo, das ganze kannst du dann in der Schleife durchgehen und z.B. in eine MsgBox ausgeben lassen. Hier mal ein Beispielcode: Code:
Sub CATMain() Dim intDoc As PartDocument Dim intPart As Part Dim intParas As Parameters Dim intPara As Parameter Dim intParamValues() Dim intParamValue Set intDoc = CATIA.ActiveDocument Set intPart = intDoc.Part Set intParas = intPart.Parameters Set intPara = intParas.Item("Testpara")
ReDim intParamValues(intPara.GetEnumerateValuesSize - 1) intPara.GetEnumerateValues intParamValues For i = 0 To UBound(intParamValues) intParamValue = CStr(intParamValues(i)) MsgBox "Folgende Werte wurden ausgelesen:" + vbNewLine + vbNewLine + _ "Parametername:" + vbTab + vbTab + intPara.Name + vbNewLine + _ "Parameter Werteanzahl:" + vbTab + CStr(i + 1) + " von " + CStr(UBound(intParamValues) + 1) + vbNewLine + _ "Parameterwert:" + vbTab + vbTab + intParamValue, vbInformation, "Hinweis" Next
End Sub
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Grede Mitglied Engineering Coordinator
 Beiträge: 4 Registriert: 01.02.2010
|
erstellt am: 08. Feb. 2010 14:48 <-- editieren / zitieren --> Unities abgeben:         
|