Autor
|
Thema: Parameterwerte bei Single values abgreifen (989 mal gelesen)
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 13. Mai. 2016 10:44 <-- editieren / zitieren --> Unities abgeben:
Hi, um Werte eines Parameters abzugreifen, der mehrere Werte enthält habe ich folgende Zeilen: Dim myParam As KnowledgewareTypeLib.Parameter Dim myParamConfig As KnowledgewareTypeLib.StrParam Dim myDimensions As Object() myCatiaDoc = myCatiaApp.ActiveDocument myPart = myCatiaDoc.Part myParam = myPart.Parameters.Item("Irgendwas") myParamConfig = CType(myParam, KnowledgewareTypeLib.StrParam) ReDim myDimensions(myParamConfig.GetEnumerateValuesSize() - 1) myParamConfig.GetEnumerateValues(myDimensions) For Each variantDimension As String In myDimensions xlsApp.Cells(4, 3).Value = myDimensions Next Wie baue ich das Konstrukt so um, dass es auch für Paramter funktioniert, der nur einen Wert enthält? Ich möchte alle Parameter ansprechen, die mit dem Namen "Irgendwas" anfangen und deren Werte in ein Array dann schaufeln. 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: 13. Mai. 2016 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Ich würde einfach "myParamConfig.GetEnumerateValuesSize" auswerten (Anzahl der Einzelwerte): wenn 0, zurückgegeben wird den Wert über "myParamConfig.Value" auslesen, sonst (also bei mehreren Werten) über deinen Code. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 13. Mai. 2016 11:33 <-- editieren / zitieren --> Unities abgeben:
Servus, ich habe inzwischen ein anderes Konstrukt: Dim MyArrayWert() As String myCatiaDoc.Selection.Search("(Name=Irgendwas* & CATKnowledgeSearch.InternalParameter),all") ReDim MyArrayWert(myCatiaDoc.Selection.Count) For k = 1 To myCatiaDoc.Selection.Count MyArrayWert(k) = myPart.Parameters.Item(k).Value xlsApp.Cells(4 + k, 3).Value = MyArrayWert(k) Next Es werden 5 Parameter gefunden, mit dem Namen, die alle einen Wert >0 haben. Was ich abr als Ergebnis bekomme: Für die ersten 3 Parameter wird der Wert 0 rausgegeben, für den 4. eine 1 und für den letzten wieder 0. Warum wird denn nichts gefunden? Gruß 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: 13. Mai. 2016 11:39 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Mir "myPart.Parameters.Item(k).Value" sprichst du den k-ten Parameter des Parts an, und nicht aus deiner Selektion. Um auf den Parameter/Wert aus der Selektion zuzugreifen: - myCatiaDoc.Selection.item2(k).Value (der Parameter an sich) - myCatiaDoc.Selection.item2(k).Value.Value (den Parameterwert) - myCatiaDoc.Selection.item2(k).Name (der Parameternamen bzw auch .Value.Name) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 13. Mai. 2016 12:03 <-- editieren / zitieren --> Unities abgeben:
Hi, verstanden, vielen Dank. funktioniert jetzt auch. Aber ( wäre auch zu schön, wenn es kein Aber gäbe ): Die Parameterwerte werden als Text rausgeschrieben, nicht als Zahl. Vor dem Einfügen in Excel habe ich dann die Zeile eingefügt: xlsApp.Range("C:C").NumberFormat = "0.000" Um die ganze Spalte als Zahl zu formatieren. Es erscheint dennoch die Meldung, in die Zahl umzuwandeln. Vorher ist alles im Grafen daneben auf Null. Gibt es überhaupt einen Befehl, den Wert als Zahl zu definieren? Gruß 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: 13. Mai. 2016 12:17 <-- editieren / zitieren --> Unities abgeben: Nur für Tweety79
Servus Bist du sicher das der Wert als String in Catia vorliegt oder erst durch deinen Code konvertiert wird? (zB "MyArrayWert() As String") Deshalb schau dir die Objekte im Watch/Local-Fenster zur Laufzeit (Schrittweise ablaufen lassen des Codes) an, und überprüfe die Typen/Werte/Ablauf. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Konstrukteur für unsere Projektgruppe (m/w/d) | Die besten Köpfe für die unterschiedlichsten Aufgaben zu finden sowie Menschen und Technologien zu verbinden, und zwar täglich aufs Neue - dafür schätzen unsere Kunden FERCHAU. Unterstütze uns: Als Berufserfahrene:r unterstützt du deine Kolleg:innen mit deinem langjährigen Know-how und deiner Expertise.
Konstrukteur für unsere Projektgruppe (m/w/d) Kiel Diese Herausforderungen ... | Anzeige ansehen | Konstruktion, Visualisierung |
|
Tweety79 Mitglied Entwicklung Automotive
Beiträge: 269 Registriert: 09.12.2007 WPF, VBA, CATScript, Access
|
erstellt am: 13. Mai. 2016 12:38 <-- editieren / zitieren --> Unities abgeben:
Hi Bernd, du hattest Recht. Ich habe nun MyArrayWert() As String in MyArrayWert() As Object geändert und die Werte erscheinen als Zahlen. Ist der Wert in Catia 2000 mm² wird er aber als 0,002 in Excel geschrieben. Wenn ich das noch gelöst habe, habe ich heute viel gelernt :-). Grüße Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |