Autor
|
Thema: Prameterliste ahand der elegant Anfangsnamen ermitteln (1690 mal gelesen)
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 17. Aug. 2012 16:17 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe mal wieder eine Frage a la, wie kann mans besser / eleganter gestalten. Und zwar muss ich eine Liste von Parametern verarbeiten. Dabei muss ich deren Inhalt und ihren Namen ermitteln. Den Stamm des Namens kenne ich. Nun wäre es für mich super, wenn ich eine Funktion hätte, die anhand einer Parameterliste (Parameters) und dem Wortstamm mir meine Teilliste zurückgibt. Und zwar ist es so, dass meine Parameter sprachspezifisch sind, ich aber vorher nicht weiß welche Sprachen verwendet wurden, aber weiß welche Sprachen möglich sind. Nehmen wir als Beispiel an es gibt die Parameter
Code:
ABC ZZZ BLUBB BLA AAA_XYZ_001_de AAA_XYZ_001_en AAA_XXX_002_de AAA_XXX_002_cs AAA_YYY_003_es
Die Liste besitze ich nun in einer Parameters-Collection. Ich weiß dass es die Sprachen de, en, cs und es gibt und ich weiß wie meine dazugehörigen Objekte heißen. Meine Suchobjekte sind also
Code:
AAA_XYZ_001_* AAA_XXX_002_* AAA_YYY_003_*
Über ein Selection.Search möchte ich es nicht lösen, da ich sehr viel zu verarbeiten habe, die Selection sehr langsam ist und ich kein Display habe. Ich würde also gern mit meiner Parameters-Collection weiterarbeiten. Leider hat sie kein Search. Ich muss jedes der Objekte (in dme Fall 3) einzeln verarbeiten, da ich die Inhalte wieder zuordnen muss und die gewählten Sprachen sowie ihren Inhalt ermitteln muss. Nun habe ich mir folgende 2 Möglichkeiten überlegt: Ich schreibe eine extra Funktion, der ich einen Suchstring übergeben kann und die die komplette Parameters-Liste durchgeht aber nur die relevanten zurück gibt. Oder, was ich derzeit mache: Ich setze mir die jeweils möglichen Namen zusammen und nutze die item-Methode der Collection. Kleines Beispiel für die Durchläufe: Methode 1 bei der Annahme es sind noch 200 Parameter in der Liste und es sind etwa 50 verschiedene AAA_*-Objekte vorhanden, dann muss ich 50x die 200 Parameter durchgehen, also 10000 mal. Methode 2 bei der Annahme ich habe etwa 50 verschiedene AAA_*-Objekte und 6 verschiedene Sprachen, hätte ich 50x 6 Varianten = 300 Mal Item() aufrufen und damit rechnen, dass es fehlschlägt. Beide Varianten gefallen mir jedoch nicht und wirken nicht gerade effizient / elegant auf mich. Ich gehe davon aus, dass sich die Sprachvarianten <10 bewegen werden, die AAA_* Objekte jedoch >50 und etwa 1/2 bis 2/3 der Parameter für die Verarbeitung relevant sein werden. Des weiteren ist die Anzahl der relevanten Parameter immer mindestens doppelt so groß wie die Anzahl meiner AAA_* Objekte. Eventuell habt ihr noch eine gute Idee. Also es geht mir auch nicht darum, dass ihr eine Lösung für mich findet, die habe ich, wie beschrieben, es geht mir um Denkanstöße um es eventuell besser gestalten zu können. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 17. Aug. 2012 16:25 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Zitat: Original erstellt von HoBLila: Methode 1 bei der Annahme es sind noch 200 Parameter in der Liste und es sind etwa 50 verschiedene AAA_*-Objekte vorhanden, dann muss ich 50x die 200 Parameter durchgehen, also 10000 mal.
Hallo Henry, das verstehe ich nicht... Du musst doch nur einmal komplett durchlaufen und sammelst jedes Objekt, welches dem Suchkriterium entspricht, in einer neuen Collection und gibst diese als ergebnis zurück. Quasy...
Code:
Function GetSearchedItems(Col1 as Collection)as Collection Dim i as Integer Dim Col2 as Collection For i = 1 to Col1.count if instr(Col1.Item(i).name, "AAA_") > 0 then Col2.add(Col1.Item(i)) endif next return Col2 End Function
Hinweis: Ich bin mir durchaus bewusst, dass die Methoden nicht ganz stimmen, aber es soll ja nur der Veranschaulichung dienen. Zumindest würde ich es wahrscheinlich so machen oder ich hab dich noch nicht ganz verstanden ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 17. Aug. 2012 18:01 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, so leid es mir tut, aber umso öfter ich deine Vorgabe durchlese, desto weniger verstehe ich, was du genau machen möchtest. Versuche mal etwas mehr vom Hintergrund zu erläutern, denn der Groschen ist noch nicht ganz gefallen. Entweder war dir zu warm oder ich hab schon nen Schuss Ansonsten schonmal ein schönes Wochenende! BTW Wenn du wissen willst, wieviele Varianten du hast, dann würde ich die Collection sortieren und dann von oben nach unten durchgehen. Ach keine Ahnung mir fehlt einfach der Hintergrund, was genau du machen möchtest und wovon die Ausgangsparameter abhängig sind. ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
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: 18. Aug. 2012 12:24 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 19. Aug. 2012 21:37 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 20. Aug. 2012 09:34 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, danke für die Tipps. Ja hier ist es auch sehr warm (Ü30), drum habe ich sicher auch Probleme mich gekonnt auszudrücken. :-) Den Vorschlag zum Reduzieren der Liste vor der Verarbeitung werde ich umsetzen. Sorry, dass ich noch etwas diffus schreibe, aber ich muss mich mit konkreten Details immer vor der Veröffentlichung zurückhalten. Meine Anwendung selbst ist zwar nicht geheim (weshalb ich ja auch die Teilklassen, wie Dictionary und XMLParser veröffentliche), aber das was sie verarbeiten muss. :-) Nochmals zur Anschauung: Ich habe die Aufgabe eine vorübergehende Lösung zu schaffen, bis die CAA-Applikation fertig ist, die es besser verarbeitet. Diese Lösung muss in CATVBS sein. Dabei verarbeite ich eigene Features aus unserem Prozess. Zu diesen Features existieren sprachabhängige Parameter im Part. Nun muss ich, wenn ich ein solches Feature verarbeite mir zusätzlich anhand des Namens des Features die entsprechenden Sprachinformationen suchen, welche sich in den Parametern befinden. Es kann also sein, dass ich ein Feature mit dem Namen XYZ_001 finde und brauch nun die weiteren Informationen dazu, welche über Parameter eingestreut sind. Ich weiß welche Namen von Parametern zu jedem Feature theoretisch existieren können, ich weiß jedoch nicht welche wirklich existieren und wie viele. XYZ ist dabei der Typ des Features und 001 eine fortlaufende Nummer. Es gibt etwa 10 verschiedene Typen (derzeit) und die Nummern sind bis 999 nach oben offen. Es wird also in der weiteren Verarbeitung vorkommen, dass ich ein Feature mit dem Namen XYZ_089 finde, welchem auch wieder Sprachinformationen zugeordnet sein können. Was ich jetzt also tun werde: Ich schreibe alle Parameter, die mit AAA beginnen in mein eigenes Dictionary (siehe anderer Thread – gibt allerdings schon wieder eine neue Version) und habe so wiederum eine reduzierte Liste. Dann werde ich alle möglichen Kombinationen gegen diese Liste ausprobieren. Sprich: Ich finde das Feature mit dem Namen XYZ_055, also bilde ich die Strings AAA_XYZ_055_de, AAA_XYZ_055_en, AAA_XYZ_055_es, etc. und schau ob sich diese im Dictionary befinden. Oder ich bau selbst eine Suchfunktion in mein Dictionary. Edit: Das Dictionary wird um eine Suchfunktion erweitert, das bringt auf lange Sicht mehr. Edit2: Ich werde auch eine Sortierfunktion in das Dictionary einbauen um die Suchfunktion beschleunigen zu können Eure Tipps waren echt hilfreich und die Dictionary-Klasse wird so ja fast noch besser als das Original! :-D ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 20. Aug. 2012 editiert.] [Diese Nachricht wurde von HoBLila am 20. Aug. 2012 editiert.] 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: 20. Aug. 2012 09:39 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
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: 20. Aug. 2012 09:44 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 20. Aug. 2012 11:20 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, ist natürlich ein Gedanke den man zwangsläufig haben muss. Aber leider nein. Je nachdem was für welches Land relevant ist wird dies von den jeweiligen Designern eingetragen. Ich habe also eine Mischform in meinen Baugruppen. Es wird ja auch nicht jedes Teil der Baugruppe nur in einem Land gefertigt. Es ist sogar eine Mischform in einem einzigen Bauteil möglich. Ich kann also 4 Features haben, welche Deutsch/Englisch sind, 8 die Deutsch/Spanisch sind, 8 die Deutsch/Englisch/Russisch sind. Auch für die anderen Applikationen, welche diese Daten an meinen Prozessteil liefern ist dies nicht klar geregelt. Ich weiß nur, dass die Wahrscheinlichkeit, dass es sich um eine 2er oder 0er Sprachkombination, je Feature, handelt, derzeit, sehr hoch (>90%) ist. Ohne Regelung kann sich dies aber auch schnell ändern, zumal es sinnvoller wäre jedes Feature in allen Sprachen anzubieten, nur die anderen Applikationen und Methodiken sind noch nicht so weit. :-) Ich weiß zusätzlich dass die Sprachen nach ISO 639-1 codiert werden. Ihre Anzahl ist also überschaubar. Mein Beispiel war jetzt wohl doch zu stark vereinfacht dargestellt. :-) Find's aber klasse, dass ihr so gut über die Thematik nachdenkt! ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing 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: 20. Aug. 2012 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Hallo Henry, Ah ok das gib Sinn. Naja dennoch sollte man dann die Wahrscheinlichkeit einrechnen (zumindestens im finalen CAA-Code). Man müsste sich aus der Stochastik einen sehr performanten Algorithmus entwicklen können welche über die Wahrscheinlichkeit geht (ähnlich einer Schwarmsimulation in dem jedes Teilchen einen Anfangsvektor und einen Radius zugewiesen bekommt und sich dann in Folge eine Funktion des Weges beschreiben lässt welcher durch zufällige Wahrscheinlichkeiten geändert werden kann). Hier ist die Fage ob dies vom Kunden (intern / extern) getragen wird. Es würde aber sicherlich extrem performant sein (siehe Schwarmsimulationen auf "kleinen" Rechnerarchitekturen wie z.B. Die PlayStation 3) ------------------ 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 |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 20. Aug. 2012 12:56 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
Zitat: Original erstellt von DanielFr.: Ah ok das gib Sinn. Naja dennoch sollte man dann die Wahrscheinlichkeit einrechnen (zumindestens im finalen CAA-Code). Man müsste sich aus der Stochastik einen sehr performanten Algorithmus entwicklen können welche über die Wahrscheinlichkeit geht (ähnlich einer Schwarmsimulation in dem jedes Teilchen einen Anfangsvektor und einen Radius zugewiesen bekommt und sich dann in Folge eine Funktion des Weges beschreiben lässt welcher durch zufällige Wahrscheinlichkeiten geändert werden kann). Hier ist die Fage ob dies vom Kunden (intern / extern) getragen wird. Es würde aber sicherlich extrem performant sein (siehe Schwarmsimulationen auf "kleinen" Rechnerarchitekturen wie z.B. Die PlayStation 3)
Ja genau lass uns eine Wissenschaft daraus machen und eigene Hardware entwickeln, mit der wir dann auf Daumengröße die Workstations ablösen. Danach entwickeln wir noch ein eigenes Konstruktionsprogramm was alles kann und vermieten dieses zu kundenfreundlichen Konditionen. Das ganze System nennen wir dann die K-Box Ing 6000 und werden reich ... Ich bin dabei! BTW bei Schwarmsimulation denke ich eher gerade an Starcraft: Heart of the Swarm. ...und ja mein Beitrag ist gerade nicht ganz ernst zu nehmen, aber bei weit über 30°C im Büro fällt das nachdenken gerade eh schwer. Boah ich glaub ich klebe am Tisch fest... ------------------ MFG Rick Schulz Nettiquette (CAD.de) - Was ist die Systeminfo? - Wie man Fragen richtig stellt. - Unities
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: 20. Aug. 2012 13:54 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 20. Aug. 2012 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
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: 20. Aug. 2012 20:06 <-- editieren / zitieren --> Unities abgeben: Nur für HoBLila
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|