Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Test: Parameter Wert gleich Dezimalzahl?

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Test: Parameter Wert gleich Dezimalzahl? (759 mal gelesen)
ebnair
Mitglied


Sehen Sie sich das Profil von ebnair an!   Senden Sie eine Private Message an ebnair  Schreiben Sie einen Gästebucheintrag für ebnair

Beiträge: 4
Registriert: 20.06.2007

erstellt am: 25. Jul. 2007 11:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo liebe CAD-Profis,

ich habe ein Makro geschrieben, dass mir alle Parameter eines Parts/Products in ein Excel-File ausliest. Da es sich um etwa 2000 Parameter handelt, dauert das Auslesen sehr lange.
Mein Befehl zum Auslesen der Parameter:
Excel.Worksheets(1).cells(l+1,4).value = prod.Parameters.Item(i).value

Ein Grund dafür könnte sein, dass nicht alle Parameterwerte eine Dezimalzahl enthalten (Ich benötige nur Zahlenwerte),und dass es außerdem beim Ausführen des Makros zu Fehlern kommt.
Diese Fehler umgehe ich immer mit dem Befehl:
on error resume next
Aus diesem Grund könnte es zu langer Laufzeit führen.

Deswegen meine Fragen an Euch:

1. Gibt es eine Möglichkeit zu testen, ob ein Parameterwert eine Dezimalzahl ist (Typ float)?

2. Könnte man mit diesem Test die Fehlermeldungen umgehen? Wenn nein, welche andere Möglichkeiten gibt es die Fehler zu vermeiden?

Ich würde mich sehr freuen, wenn mir jemand dabei helfen könnte! Ist ein wichtiges Problem für mich.

Viele Grüße

Adrian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

zoltan.bekesi
Mitglied



Sehen Sie sich das Profil von zoltan.bekesi an!   Senden Sie eine Private Message an zoltan.bekesi  Schreiben Sie einen Gästebucheintrag für zoltan.bekesi

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 26. Jul. 2007 17:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ebnair 10 Unities + Antwort hilfreich

Hallo,

Du könntest die Bearbeitung verschnellern, indem Du die Aktualisierung in Excel ausschaltest (falls es bisher nicht betan wurde).
Das geht über den Application Objekt vont Excel, sagen wir es heißt z.B. Excel aus CATIA gestartet oder einfach Application aus Excel. Dann brauchst Du vor der Schleife Excel.Screenupdating=false und nach der Schleife Excel.Screenupdating=true setzen.
Somit wird beim Ausfüllen der Tabelle nichts angezeigt, es wird aber wesentlich schneller sein.

Für den Test kannst Du eventuell den Zahl mit Round(Variable,0) auf ganze abrunden und wenn die Differenz abs(Variable-Round(Variable,0))>0 ist, dann ist es keine ganze Zahl.

Gruß,

Zoltan

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Timberwolve
Mitglied



Sehen Sie sich das Profil von Timberwolve an!   Senden Sie eine Private Message an Timberwolve  Schreiben Sie einen Gästebucheintrag für Timberwolve

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 08. Aug. 2007 15:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für ebnair 10 Unities + Antwort hilfreich

Hallo,

könntest du das Makro mal posten?

Es stellen sich noch ein paar Fragen, wo sind die Parameter vorhanden? in einem ParameterSet oder in mehreren.

Ich würde dir empfehlen, das Excel nur im Hintergrund laufen zu lassen, also nicht sichtbar auf dem Bildschirm.

Dann könntest du die Parameter überprüfen und zwar mit TYPENAME oder den Parameterwert mit IsNumeric. Dann kannst du
Zahlen von anderen Einträgen unterscheiden.

zu deinem 2.Punkt

Der beste Weg Fehlermeldungen zu vermeiden, ist natürlich alles richtig zu programmieren und auch die Eventualitäten
abzudecken die auftreten können.

Die lange Laufzeit kann auch auf die Products zurückgeführt werden. Hier ist auch entscheidend mit welcher Methode du die Parameter aus den Products liest. Denn grundsätzlich gilt:

Im Product.Parameters.... sind auch alle Parameter der darunter befindlichen Parts gespeichert. D.h. bei einem Product mit
2 Parts und sagen wir mal knapp 200Parametern(ob jetzt relevant oder nicht) hat man ca:
1Product --> ca 50Parameter (nur mal angenommen)
2Parts --> je 200Parameter
Gesamt --> ca 450Parameter

Diese 450 Parameter sind alle über das Product verfügbar. wenn du jetzt natürlich 100 Parts in diesem Product hast, kann das zum scannen ziemlich lange dauern.

Deswegen frage ich ob du den Code mal posten kannst, damit man sich das mal anschauen kann wie du da vor gehst.


Gruß Timber

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz