Autor
|
Thema: Fileselection Box mit Vorauswahl (2036 mal gelesen)
|
Parametricks Mitglied Konstrukteur / CAD Trainer
Beiträge: 91 Registriert: 29.04.2008 V5 R16 SP 5 Hotfix 70 V5 R17 V5 R19 ProE WF4 Cimatron XP Pro 2002 SP3 Dell Precision T5400 Intel Xeon X5260 @ 3.33GHz 3.25 GB NVIDIA Quadro FX 3700
|
erstellt am: 17. Jun. 2009 16:46 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich habe in meinem Code verschiedene Usereingaben mit denen ich den Zielordner festlege. Später möchte ich mit FileselectionBox eine Datei öffnen und muss mich blöderweise zu dem Quellordner hangeln. Über die Usereingaben kann ich jedoch auch den Quellpfad herauskriegen. Jetzt die Frage wie sage ich der FileselectionBox spring in den Ordner XYZ? Danke schon mal für die Hilfe... ------------------ Chaotische Anwendung trotz imenser Anstrengungen 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: 17. Jun. 2009 19:02 <-- editieren / zitieren --> Unities abgeben: Nur für Parametricks
Hallo, warte ich schau mal in meine Glaskugel...hmmmm...die muss kaputt sein! Mit was ist das Script denn geschrieben? *catvba, *.catvbs, *.catscript? ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Parametricks Mitglied Konstrukteur / CAD Trainer
Beiträge: 91 Registriert: 29.04.2008 V5 R16 SP 5 Hotfix 70 V5 R17 V5 R19 ProE WF4 Cimatron XP Pro 2002 SP3 Dell Precision T5400 Intel Xeon X5260 @ 3.33GHz 3.25 GB NVIDIA Quadro FX 3700
|
erstellt am: 17. Jun. 2009 19:32 <-- editieren / zitieren --> Unities abgeben:
|
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: 17. Jun. 2009 20:46 <-- editieren / zitieren --> Unities abgeben: Nur für Parametricks
Hallo Marco, ok mit *.catscript hast du keine Chance auf einen grünen Zweig zu kommen. Des ist AFAIK überhaupt nicht möglich einen anderen Pfad als "Eigene Dateien" aufzurufen. Mit einem *.catvba hättest du schon größere Chancen wobei das CATIA.FileSelection Objekt hier auch keinen anderen Pfad unterstützt. Hier könntest du dir aber zumindesten einen BrowseForFolder Dialog mit einem Shell Objekt erzeugen (dann könntest du dir zumindestens die Windows Spezial Folders (Arbeitsplatz, Desktop, etc.) aufrufen) Um aber einen eigenen Pfad eingeben (bzw. aufrufen) zu können brauchst du erstens ein *.catvba und zweitens musst du dir eine FileSelection-Box als Steuerelement selber bauen. Eine Anleitung dazu findest du in folgendem Link ftp://ftp.fernuni-hagen.de/pub/pdf/urz-broschueren/broschueren/b009.pdf Ansonsten sehe ich nur die Möglichkeit auf VB.NET umzusteigen. Dort gibt es eine FolderBrowser Dialog in dem du einen beliebigen Pfad öffnen kannst. Ich weiß das die Antwort leider nicht die ist die du hören wolltest aber mit einem *.catscript geht es einfach nicht ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Parametricks Mitglied Konstrukteur / CAD Trainer
Beiträge: 91 Registriert: 29.04.2008 V5 R16 SP 5 Hotfix 70 V5 R17 V5 R19 ProE WF4 Cimatron XP Pro 2002 SP3 Dell Precision T5400 Intel Xeon X5260 @ 3.33GHz 3.25 GB NVIDIA Quadro FX 3700
|
erstellt am: 18. Jun. 2009 00:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, ich habe soeben die 82 Seiten überflogen. Na prima. Habe mir vor nen Monat was über VB Express2006 angesehen. Ich glaub das geht wirklich besser, wenn ich bedenke was der Code zum Schluß noch alles können soll. Kann man VB und Catscipt kombinieren? Zum Beispiel Usereingaben über VB und damit Catia ansprechen? Gruß Marco ------------------ Chaotische Anwendung trotz imenser Anstrengungen 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. Jun. 2009 06:24 <-- editieren / zitieren --> Unities abgeben: Nur für Parametricks
Hallo, kann man schon. Du kannst dir ja in VB eine CATIA Instanz erzeugen und in der CATIA Instanz gibt es die Methode ExecuteScript. Innerhalb dieser kann einem *.catscript beim Aufrufen Startparamter mitgegeben werden. Würde ich persönlich aber auf keinen Fall so machen und zwar aus folgenden Gründen: 1. VB.Net 2008 Express hat ein deutlich besseres Entwicklungsinterface als CATIA-interne Editor (bei komplexen Programmen wichtig) 2. Wenn du ständig von VB ins *.catscript springt kennst du dich irgendwann nicht mehr aus (vergleichbar mit On Error Goto ErrHandler Anweisungen) 3. Wenn du das CATIA Objekt erzeugst und die entsprechenden Verweise setzt kann VB.NET genau das selbe wie ein *.catscript (ACHTUNG es läuft natürlich nicht unter UNIX da du eine *.exe bekommst) 4. Das UnserInterface deiners Programms wird deutlich professioneller aussehen und die Steuerelemente in VB.NET haben eine deutliche höhere Funktionalität (siehe FileSelection Box) ANMERKUNG:
1. VB.NET Express 2008 arbeitet mit Microsoft .NET 3.5. Da das standardmäßig noch nicht auf allen Rechner installiert ist, wird der Endanwender beim installieren deines Programm´s auch das .NET 3.5 mitinstallieren. Da solltest du aber auf jeden Fall abklären ob dies zu Problemen mit anderen System führen kann (ggf. muss eine Testumgebung aufgebaut werden und das Program dann ausgiebig getestet werden) 2. VB.NET Express 2005 arbeitet zwar mir .NET 2,5 was auf fast allen Rechner installiert ist, wird aber ab Ende 2009 nicht mehr offiziel durch Microsoft supported
------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 18. Jun. 2009 07:53 <-- editieren / zitieren --> Unities abgeben: Nur für Parametricks
Hallo Daniel, ein kleiner Einwand an dieser Stelle: es gibt ein paar Methoden, die mit nur mit .CATScript richtig laufen und unter VB(6 oder .NET) entweder gleich einen Error erzeugen oder nicht so arbeiten wie eigentlich gedacht. Das zeigt mir zumindest meine Erfahrung und die jeweilige Antwort von IBM/Dassault auf die betreffenden APARs/PMRS, z.B. den hier: http://ww3.cad.de/foren/ubb/Forum137/HTML/001402.shtml (aktueller Stand diesbezogen: unter R19 immer noch so) Des weiteren verhält sich CATIA unterschiedlich je nachdem ob du mit VB oder CATScript arbeitest, da das eine ein (CATIA) interner und das andere eine externer Prozeß ist. Festzustellen z.B. beim Verhalten einer simplen Msgbox (siehe weiter unten). Meine Erfahrung ist: den stabilsten (und fehlerfreisten) Prozeß (bei richtig umfangreichen Scripten) erhält man indem man genau das umsetzt, was Parametricks weiter oben vorgeschlagen hat: - alles was nix mit CATIA zu tun hat in VB (UserInterface, Dateien etc) - alles was CATIA selbst betrifft mit CATScript, vom VB-Prozeß erzeugt und ausgeführt (das "Schreiben" und Ausführen eines .CATScripts mit 1000 Zeilen in "Echtzeit" - soll heißen während des laufens des VB-Scriptes - dauert ca. 1 sec.) Von Dassault selbst gibts eine ganz anschauliche Beschreibung zum Unterschied zwischen VB und CATScript ********************* Running a Script inside the V5 process and running a VB macro outside the V5 process (from Microsoft Visual Basic for example) is not the same thing and do not have then the same behavior: - when you run a Script inside the V5 process, we know exactly when the script starts and when the script is over - when you run VB macro outside the V5 process, we cannot know when the script is over. The outprocess mechanism is based on the Microsoft COM message mechanism : each VB method call is done via an event fired to the V5 application but once the V5 application has handled this event, it is not considering itself as being under macro running and it then keeps on doing its own stuff (like refreshing its display on idle, waiting for user interactions, ...). You can see this difference when the MsgBox is displayed : - when you run a Script inside the V5 process, the MsgBox is blocking the display of the V5 application - when you run VB macro outside the V5 process, the MsgBox is NOT blocking the display of the V5 application since this is 2 different processes with their own message loop ************************ Gruß TomTom ------------------ tomtom1972 [Diese Nachricht wurde von tomtom1972 am 18. Jun. 2009 editiert.] [Diese Nachricht wurde von tomtom1972 am 18. Jun. 2009 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: 18. Jun. 2009 08:42 <-- editieren / zitieren --> Unities abgeben: Nur für Parametricks
Hallo Tom, ok ich geb dir ja recht. Ich sehe halt nur ein Problem beim Debuggen des Programms und bei der Übersichtlichkeit. Des weiteren führt das hin- und "hergespringe" immer dazu das du abfragen musst ob die Scripte übetrhaupt noch an der installierten Stelle sind, sonst bekommst du Laufzeitfehler. Die beiden Sachen von Dassault sind zwar richtig geben für mich aber keinen gewichtigen Grund. Erstens ich kann eine MsgBox in VB auch so implementieren das das CATIA Fenster gesperrt ist und zweitens kann ich meine Scripte auch so ausführen das CATIA gar nicht wissen muss ob ein Script fertig ist oder nicht weil ich dies selber im Code abfangen kann. Trotzdem ist es ein guten und berechtiger Einwand ------------------ MFG Daniel Die KATJA ist halt doch nur ne zickige Französin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 18. Jun. 2009 09:11 <-- editieren / zitieren --> Unities abgeben: Nur für Parametricks
Hallo Daniel, das Debuggen ist unschön, da geb' ich dir recht. Das benötige ich aber auch nur beim Entwickeln eines Scriptes. Und das mache ich ganz bestimmt nicht im CATScript. Die Msgbox sollte nur ein einfaches Beispiel sein um den Unterschied darzustellen. Das das dann in der Realität kein Grund ist um etwas im CATScript umzusetzten ist klar. en gravierenden Unterschied wirst du z.B. merken wenn du den Diplay.Refresh aus haben willst: mit VB kannst du das vergessen (auch von Dassault bestätigt, das Display wird trotzdem refreshed). Im CATScript hingegen funktioniert das. Ich habe schon rekursive Kollisionsuntersuchungen mit Scipt ausgeführt wo das "einpacken" von 50 Zeilen Quellcode in ein .CATScript (statt VB) die Laufzeit von 5 auf 2 Stunden heruntergesetzt hat (wegen den Refresh). Der Refresh soll auch nur ein Bsp. sein. Kann ja jeder so umsetzen wie er will. Ich wollte nur anmerken, das es grundsätzliche (und manchmal eben gravierende) Unterschiede zwischen dem Ausführen im CATScript und in VB gibt. Nicht mehr und nicht weniger. Gruß TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Parametricks Mitglied Konstrukteur / CAD Trainer
Beiträge: 91 Registriert: 29.04.2008 V5 R16 SP 5 Hotfix 70 V5 R17 V5 R19 ProE WF4 Cimatron XP Pro 2002 SP3 Dell Precision T5400 Intel Xeon X5260 @ 3.33GHz 3.25 GB NVIDIA Quadro FX 3700
|
erstellt am: 18. Jun. 2009 11:48 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, hallo Tom, das sind ja schon mal viele Info´s herzlichen Dank. ----------------------- Zitat: Meine Erfahrung ist: den stabilsten (und fehlerfreisten) Prozeß (bei richtig umfangreichen Scripten) erhält man indem man genau das umsetzt, was Parametricks weiter oben vorgeschlagen hat: - alles was nix mit CATIA zu tun hat in VB (UserInterface, Dateien etc) - alles was CATIA selbst betrifft mit CATScript, vom VB-Prozeß erzeugt und ausgeführt (das "Schreiben" und Ausführen eines .CATScripts mit 1000 Zeilen in "Echtzeit" - soll heißen während des laufens des VB-Scriptes - dauert ca. 1 sec.) ---------------- Das hört sich doch ganz gut an. Ich werde mich mal an die Variante herantasten. Dazu muss ich aber erst mal VB auf die Reihe kriegen. Ist auch praktisch da ich so nicht das gesamte Catscript einstampfen muss. Also nochmal Danke für Eure Denkanstösse, ich werde mich sicher noch mal zu dem Thema melden. Bis dahin Gruß Marco ------------------ Chaotische Anwendung trotz imenser Anstrengungen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |