Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Parameter schnell ansprechen

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:  Parameter schnell ansprechen (556 mal gelesen)
Legat
Mitglied



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

Beiträge: 30
Registriert: 18.05.2006

erstellt am: 18. Mai. 2006 20:56    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,

ich möchte schnell auf viele Parameter(etwa 50) zugreifen und den Value übernehmen. Ich habe es versucht über das direkte ansprechen
set Param = CATIA.ActiveDocument.Part.Parameters.item(CATIA.ActiveDocument.Part.name & "\" & NameEinesBodies & "\" NameEinesParameterSets & "\NameDesParameters")

Diese Variante dauert aber sehr lange (Es gibt etwa 24000 Parameter in diesem Part!)

Bitte um schnelle Hilfe!!!!!!!!!!!!!!!!!!!!!!!!!!!!

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

Tapani.
Mitglied



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

Beiträge: 56
Registriert: 12.05.2006

erstellt am: 24. Mai. 2006 14:46    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 Legat 10 Unities + Antwort hilfreich

Hallo Legat,

als ersten Tip würde ich versuchen so viel wie möglich von den CATIA-Objekten in Variablen zwischen zu speichern:
statt in der Schleife

Code:
set Param = CATIA.ActiveDocument.Part.Parameters.Item(...)

lieber
Code:
set paramsCol = CATIA.ActiveDocument.Part.Parameters

außerhalb der Schleife und dann
Code:
paramsCol.Item(...)

innerhalb der Schleife.

Aber ob das den erwünschten Effekt bringt ist fraglich, deshalb noch eine weitere, aber wesentlich kompliziertere Möglichkeit:
Du bildest zuerst von allen Parameternamen einen (eindeutigen) Hash und merkst dir dann den dazugehörigen Parameterindex.
Während der Suche brauchst du dann nur noch vom zu suchenden Parameternamen ebenfalls den Hash bilden und dann in der Hashtabelle den Parameterindex raussuchen.
Sicherheitshalber sollte man zum Schluß noch überprüfen, ob die Parameternamen (den, den man sucht und den, den man gefunden hat) tatsächlich identisch sind, nur für den Fall, das der Hash-Algorithmus doch nicht eindeutig war...

Dieses Vorgehen hat bei uns an anderer Stelle wo auch viele Stringvergleiche nötig waren eine Geschwindigkeitssteigerung um den Faktor 20 gebracht (Faktor!, nicht Prozent :-)

Ein wirklich guter Hash-Algorithmus ist in
http://www.isthe.com/chongo/tech/comp/fnv/
beschrieben. In VBS sieht das dann so aus

Code:
function make_hash(hash_str)
hash = 255
FNV_prime = 97
anz_zeichen = LenB(hash_str)
On Error goto 0
for i = 0 to (anz_zeichen / 2) - 1
hash = hash And &H800FFFFF
hash = hash Xor Asc(MidB(hash_str,2 * i +1 ,2))
hash = hash * FNV_prime
next
make_hash = hash
end function

Die verwendeten Priemzahlen sind zwar deutlich kleiner als im Original, waren aber für uns ausreichend.

Viel Erfolg

    Tapani

------------------
Don't take life so seriously....
it's not a permanent  condition

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