Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  array

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:  array (3185 mal gelesen)
makri
Mitglied
klötzchenbauer


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

Beiträge: 24
Registriert: 31.07.2007

C64
Datasette
350 KB Ram

erstellt am: 02. Jun. 2009 19:04    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

hi!
kleines problem, betrifft aber mehr vba als catia... egal
habe ein makro das eine riesen externe txt-file als array in speicher liesst, dann wird in catia etwas gemacht und mit dem array verglichen ect. ... alles oke. mein problem wenn der pc sich bei jedem start des makros die txt-file reinzieht dauerts etwa 15 sek. ladezeit. das ist beim 100stn start etwas nervig. gibts da irgendwie abhilfe, das die daten einfach im speicher bleiben? oder sonst n tip/trick?

mfG

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

DanielFr.
Moderator
Manager


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

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: 02. Jun. 2009 19:42    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 makri 10 Unities + Antwort hilfreich

Hallo,

meinst du jetzt zu Testzwecken oder später in der realen Umgebung.

Die Daten im Speicher halten geht IMHO nicht. Wenn du aber das auslesen der *.txt in eine eigene Sub schreibst und diese nur aus der MainSub aufrufst, kannst du die Zeile auskommentieren.

Zu Testzwecken kann ich dir auch empfehlen das du dir eine "kleiner" Version der *.txt Datei speicherst. Wenn das Einlesen der Datei in der realen Umgebung ca. 15 Sekunden dauert würde ich in meiner UserForm ein ProgressBar machen damit der Anwender sieht das sich noch etwas tut.

Die Datei in der Realumgebung im Speicher zu halten würde ich so und so als zu gefährlich ansehen. Was passiert wenn in der Zwischenzeit die Daten aus der *.txt signifikant geändert werden? Konstruierst du dann ein Flugzeug anstatt ein Auto weil du noch Altdaten im Speicher hattest die du nicht validiert hast 

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

makri
Mitglied
klötzchenbauer


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

Beiträge: 24
Registriert: 31.07.2007

C64
Datasette
350 KB Ram

erstellt am: 02. Jun. 2009 19:57    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

hey!
also, das makro ist schon im einsatz... sind alles fimen interne sachen. werden nur von ne hand voll leute genutzt. die txtfile (ca 17MB ; knapp array(100.000,8)) hat nur feste werte. ist daher unveränderlich. im speich zu halten wäre demnach ganz gut! ... ne UserForm mit ProgressBar wäre ne alternative, aber damit verarsch ich quasi mich selbst, weil ich das makro auch selbst nutze     ... es nervt nur wenn ich das prog nutze und bei jedem start die zeit weggeht. ...

[Diese Nachricht wurde von makri am 02. Jun. 2009 editiert.]

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

DanielFr.
Moderator
Manager


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

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: 03. Jun. 2009 07:41    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 makri 10 Unities + Antwort hilfreich

Hallo Makri,

also IMHO hast du da überhaupt keine Chance. Wo willst du die Daten hinspeichern das sie immer verfügbar bleiben? Arbeitsspeicher (da wirst du dich aber schwer tun an Windows vorbeizukommen  ). Selbst der Arbeitsspeicher wird geleert falls der Prozess (also CATIA) beendet wird. Das einzigste was mir dazu einfällt ist das Script nicht mit VBA zuschreiben sondern mit C++. Das ist um einiges schneller. Dann musst du zusätzlich den Code optimieren (also so klein wie möglich machen). Ev. kannst du dir so ein bisschen Zeit sparen. Wie oft lesst ihr den die Daten ein?

Wäre eine Konstruktionstabelle nicht sinnvoller?

------------------
MFG Daniel

Die KATJA ist halt doch nur ne zickige Französin

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

MICHLICK
Mitglied
CAD Methodik Entwickler (CATIA; NX)


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

Beiträge: 454
Registriert: 20.06.2001

Der Aufwand bei Änderungen ist groß, wenn die Finger schneller klicken als das Gehirn denkt.

erstellt am: 03. Jun. 2009 08:35    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 makri 10 Unities + Antwort hilfreich

Hallo makri,

wie schon von anderer Seite erwähnt hast Du mit CATIA Makros das Problem, dass nach dem Durchlauf des Makros der Speicher gelöscht wird. Da das Makro wohl nur Informationen prüft bzw. abgleicht sollte es auf einem anderen Weg möglich sein das mehrfache lesen der Datei zu verhindern.

Foldender Ansatz könnte da weiter helfen:
Das Makro unabhängig von CATIA schreiben. Für das Einlesen der Textdatei ist kein CATIA notwendig. Also nicht als catvba oder CATScript sondern mit vba, java, .net, c++ etc. programmieren. Mit einem kleinen Knopf dran für das Starten der Prüfung in CATIA.

Das Ganze funktioniert dann so:
Du startest Dein Prüfmakro (die Datei wird gelesen).
Du öffnest in CATIA ein Teil.
Du startest in Deinem Prüfmakro die Prüfung.
Das aktive Teil in CATIA wird geprüft (was auch immer in Deinem Makro da passiert).
Nach der Beendigung der Prüfung kannst Du jetzt ein anderes Teil laden.
Jetzt kannst Du wieder die Prüfung Deines aktiven Teils starten.
Das kannst Du so lange wiederholen, bis Du Dein Makro beendest.

Es gibt glaube ich ein paar Makros hier, die auf diese Weise Arbeiten z.B. Excel-Makros (Makro das aus Excel gestartet wird und dann in CATIA irgend was macht z.B. Punkte erzeugt). Da kannst Du ein wenig spicken.

------------------
Gruß Michael B.

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

Bertel
Mitglied



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

Beiträge: 300
Registriert: 03.04.2002

CATIA V5 R26SP3HF21
Win10
Lenovo P52
Intel Xenon 16GB Ram
NVIDIA Quadro P2000
EUKLID V14
ViCADo 2015

erstellt am: 03. Jun. 2009 09:01    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 makri 10 Unities + Antwort hilfreich

Hallo makri,

wie wäre es, wenn Du Deine Daten in eine Excel-Tabelle packst.
Dort kann man dann gezielt auf einzelne Zellen zugreifen.

Gruß
Bertel

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

makri
Mitglied
klötzchenbauer


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

Beiträge: 24
Registriert: 31.07.2007

C64
Datasette
350 KB Ram

erstellt am: 03. Jun. 2009 14:37    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! dank für Antworten.

Konstruktionstabelle wird nicht gehen da die daten nicht zum endkunden gehen dürfen.

Wie wär es denn wenn ich
1. eine vba starte die meine txt liesst
2. dann mit meinem fertigen makro die werte im catia auslese,
3. und zu der vba übergebe.
4. die vba checkt es und gibt die werte zurück ans catiamakro.

...geht sowas? wenn wie sprech ich ein speicherresitentes makro per makro an?
kann man direkt per arguments() oder nur über seperate tmp datei oder sowas?

thx

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

Bertel
Mitglied



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

Beiträge: 300
Registriert: 03.04.2002

CATIA V5 R26SP3HF21
Win10
Lenovo P52
Intel Xenon 16GB Ram
NVIDIA Quadro P2000
EUKLID V14
ViCADo 2015

erstellt am: 03. Jun. 2009 15:25    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 makri 10 Unities + Antwort hilfreich

Hallo makri,

ich denke auch nicht an eine Konstruktionstabelle, sondern an eine Excel-Tabelle, die unabhänig von CATIA irgendwo auf der Platte gespeichert ist.
Auf diese kann ein Makro zugreifen und die Werte für CATIA auslesen:

Code:
Dim EA As Object   
Set EA = GetObject(, "Excel.Application")

y = EA.Worksheets("Tabelle1").Cells(Zeile, Spalte).Value ' Zugriff auf Zelle mit Zeile und Spalte
x = EA.Worksheets("Tabelle1").Range("Zellenname").Value  ' Zugriff auf benannte Zelle



Das Excel-Dokument muß dazu geöffnet sein.

Gruß
Bertel

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

MarkusK
Mitglied



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

Beiträge: 130
Registriert: 09.08.2002

Dell Precision T5500
Intel Xenon X5560 4x 2,8 GHz
12 GB Ram
NVIDIA Quadro FX 3800
Win XP
Catia V5R19 SP3

erstellt am: 04. Jun. 2009 21:50    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 makri 10 Unities + Antwort hilfreich

Hallo Makri,

wenn ich mich recht entsinne, kann man in VBA (zumindest in VB), aus Dateien auch geziehlt Daten auslesen.
Kommt natürlich drauf an, wie die Datei aussieht.
Wenn eine Textdatei wie eine Tabelle aufgebaut ist, und
die Zeilen immer die gleiche Längen haben, kann man bestimmen, von wo gelesen werden soll.

Ist schon lange her, wo ich mit Text-Dateien befasst habe, aber müsste man mal in der Hilfe schauen.

Edit:

Aber eigentlich würde ich sagen, kann man sich einfach ein öffentliches Array machen, und dies dann füllen (initialisieren)
Auf diese Array kannst du dann eigentlich immer zugreifen.
Bei Fehler, also wenn der Code abgebrochen, gehen die Daten aus dem Array verloren.
Aber dafür kann man eine Kontroll-Variable abfragen, und bei bedarf die Initialisierung erneut aufrufen.

' in ein Modul

Public x(20) As Long
Public Initialisiert As Boolean


Private Sub init()
Dim i As Long
For i = 0 To 20
x(i) = i
Next i
Initialisiert = True
End Sub

Public Sub CATMain()
Dim i As Long
If Initialisiert = False Then init
Randomize Timer
wert1 = Int((20 * Rnd) + 1)
MsgBox x(wert1)
'wert1 = wert1 / 0
End Sub

Wenn du die Zeile Wert1=Wert1/0 nicht auskommentierts, entsteht ein Fehler. Wenn dieser nicht abgefangen wird, und
man den Code abbricht ist das Array und die Boolsche Variable wieder leer, und beim nächsten start des Makros Test wird die
Initialisierung wieder ausgeführt.

------------------
Gruss Markus

[Diese Nachricht wurde von MarkusK am 04. Jun. 2009 editiert.]

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