| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
 | Schnell, effizient und günstig: Mit der Kisters 3DViewStation 3D Arbeits- und Reparaturanleitungen einfach erstellen und pflegen, eine Pressemitteilung
|
Autor
|
Thema: Einlesen von Parametern (1023 mal gelesen)
|
Ske Mitglied
 Beiträge: 4 Registriert: 07.02.2008
|
erstellt am: 19. Aug. 2008 19:34 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich sitze jetzt schon etwas länger vor einem Problem, das ich nicht in den Griff bekomme! Ich hoffe, dass mir hier einer weiterhelfen kann! Das Problem gestaltet sich wie folgt: Ich habe ein CAD-Modell mit einer menge Parametern. Um diese einfach und Übersichtlich ändern zu können, habe ich eine Userform gebastelt. Man Startet also für Parameteränderungen das Makro. Das Makro lädt die aktuellen Werte der Parameter in die Userform. Wenn Werte nicht geändert werden, wird bei Parametern mit Dezimalzahlen die Komma stelle nicht mehr erkannt. Das komische an der Sache ist, dass bei der Ersteingabe, bei der die Parameter noch keinen Wert zugewiesen haben, die Dezimalzahlen erkannt werden. Das Problem tritt erst auf, nachdem man Änderungen vorgenommen hat. hier mal eine Auszug aus meinem Quelltext: Es wird der Parameter Wert aus der Userform ausgelesen und in den Parameter im Strukturbaum geschrieben. _________________________________________________________ Dim length1 As Length Set length1 = parameters1.Item(Dok_Name & "\Input_Parameter\#Input_Fugenbreite") length1.Value = Startfenster.CB_Fugenbreite.Value '###### kotfluegel ## Dim Length45 As Length Set Length45 = parameters1.Item(Dok_Name & "\Input_Parameter\#Input_Blechstaerke_Kotfluegel") Length45.Value = Startfenster.CB_Blechstaerke_Kotfluegel.Value Dim length2 As Length Set length2 = parameters1.Item(Dok_Name & "\Input_Parameter\#Input_Blechstaerke_Kotfluegel_Innenblech") length2.Value = Startfenster.CB_Blechstaerke_Kotluegel_Innenblech.Value Dim length3 As Length Set length3 = parameters1.Item(Dok_Name & "\Input_Parameter\#Input_Klebespalt_Kotfluegel_Boerdel") length3.Value = Startfenster.CB_Kotfluegel_Klebespalt.Value ___________________________________________________________________ wenn jemand eine Lösung hat wäre mir das eine sehr große Hilfe! Vielen Dank im Voraus 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: 19. Aug. 2008 19:47 <-- editieren / zitieren --> Unities abgeben:          Nur für Ske
Servus Welchen Variablentyp haben die Variablen (zB Startfenster.CB_Fugenbreite.Value) im Userform? Vielleicht würde es helfe beim schreiben der Parameter die Routine "ValuateFromString" zu verwenden (siehe Doku) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ske Mitglied
 Beiträge: 4 Registriert: 07.02.2008
|
erstellt am: 20. Aug. 2008 00:46 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd, danke für deinen Tip, allerdings muss ich gestehen, das ich nich ganz schlau daraus werde. Die Variablen(z.B.Startfenster.CB_Fugenbreite.Value) sind bei Startfenster= der Name der Userform und CB_Fugenbreite= der Name der Textbox. Der in der unter der "F1" beschriebenen Verwendung kann ich nicht wirklich entnehmen wie diese Routine anzuwenden ist. Aber der gedanke, dass es an der Textbox liegen könnte ist vielleicht gar nicht so falsch, nur frage ich mich dann wieso es bei der Ersteingaben funktioniert? Gruß, Sönke 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: 20. Aug. 2008 08:01 <-- editieren / zitieren --> Unities abgeben:          Nur für Ske
Servus Warum es einmal funktioniert und danach nicht, keine Ahnung. Die Variable der Textbox sollte ein String sein, deshalb sollte dieser "Wert" in einen richtige Zahl (zB double) konvertiert werden. (über den "normalen" VB-Befehl) Ich vermute das der befehl "ValuateFromString" so lauten sollte: length1.Value = ValuateFromString(Startfenster.CB_Fugenbreite.Value)
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ske Mitglied
 Beiträge: 4 Registriert: 07.02.2008
|
erstellt am: 20. Aug. 2008 16:57 <-- editieren / zitieren --> Unities abgeben:         
Hallo Bernd, habe jetzt ziemlich lange rumprobiert und bin leider immer noch nicht zu einem Ergebnis gekommen. length1.Value = ValuateFromString(Startfenster.CB_Fugenbreite.Value) funktioniert leider so auch nicht aber es liegt eindeutig daran, dass die zahl nicht als zahl erkannt wird. ich habe inzwischen heraus gefunden, dass die Parameterwerte nicht beispielsweise mit dem Wert "4,5" eingelesen werden, sondern mit "4.5". In diesem Fall ist der Punkt anscheinend das Problem. Wenn ich den Punkt in ein Komma ändere hat sich das Problem erledigt. Allerdings sind es wirklich viele Parameter und ich habe keine lust im Quelltext jeden Parameterwert mit einer "Punktsuche" zu belegen, die mir den Punkt gegen ein Komma austauscht. Oder gibt es da eine einfachere Methode wie ich die "Zahlen" wieder in Zahlen konvertiert bekomme? das mit Double habe ich auch schon probiert, hat aber ebenfalls nicht funktioniert.....! aber evtl. habe ich das auch an der Falschen stelle versucht. Gruß, Sönke 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: 20. Aug. 2008 17:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Ske
Servus Mit "CDbl" kannst du einen String inein Double konvertieren. Mit "Replace" könntest du das Komma durch einen PPunkt ersetzen. Zum Beispiel: Code: length1.Value = CDbl ( Replace(Startfenster.CB_Fugenbreite.Value,".", ",") )
Alternativ könntest du ja eine Funktion erstellen die die Typkonvertierung und das Replace ausführt (somit nur einmal zu schreiben)Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ske Mitglied
 Beiträge: 4 Registriert: 07.02.2008
|
erstellt am: 20. Aug. 2008 18:35 <-- editieren / zitieren --> Unities abgeben:         
|