Autor
|
Thema: Makro - Parameter - Mehrfachauswahl - Stelle (2030 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: 11780 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. 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: 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 |
| Technischer Systemplaner (m/w/d) der Fachrichtung Versorgungs- & Ausrüstungstechnik | Als zentraler Dienstleister des Landes Schleswig-Holstein setzen wir als GMSH mit unseren 1.700 Beschäftigten nachhaltige Standards in den Bereichen öffentliches Bauen, Bewirtschaften und Beschaffen. Bei der Suche nach den besten Lösungen für unsere Kunden sind wir fachkundig und zuverlässig, innovativ und zukunftsorientiert. Sie suchen einen neuen Arbeitsplatz mit spannenden Aufgaben ... | Anzeige ansehen | Systemadministration, Netzwerkadministration |
|
Grede Mitglied Engineering Coordinator
Beiträge: 4 Registriert: 01.02.2010
|
erstellt am: 08. Feb. 2010 14:48 <-- editieren / zitieren --> Unities abgeben:
|