| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Interaktion während Filedialog (2098 mal gelesen)
|
Lexxus Mitglied Masch.Ing. ETH
Beiträge: 4 Registriert: 18.04.2008
|
erstellt am: 18. Apr. 2008 17:41 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum Ich bin schon seit längerem eifriger Leser dieses Forums.Ich find es absolut genial, wie man durch die einzenen Beiträge immer wieder einen Hinwies bekommt, wie man wieter kommt im Inventor-VBA. Hab auch schon einige VBA-Anwendungen für Inventor programmiert. Jetzt hab ich aber ein Problem, wo ich nicht mehr weiter komme: In einem VBA-Sub rufe ich den Filedialog von Inventor auf, schön nach Schulbuch (gem. Sampel in der Hilfe). Jetzt möchte ich aber folgendes tun: Wenn im Browserfenster des Filedialogs ein File selektiert wird, soll dies abgefangen werden und auf eine bestimmte Art umgewandelt werden (z.B. falls den Name eine Nummer enthält, diese um eins erhöhen). Im Feld "Dateiname" soll dann der abgewandelte Dateiname erscheinen. Wie kriege ich das hin? Ich meine den Event abfangen und Namen des selektierten Files erhalten? Ich hab schon ein bisschen geforscht: mit irgendwie CommandManager und OnSelect sollte das gehen, oder liege ich völlig falsch? Kann mir hier jemand ein Beispiel geben. Mit Beispielen verstehe ich es am besten. Gruss aus der Schweiz Lexxus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
PaulSchuepbach Moderator Programmierer
Beiträge: 1005 Registriert: 01.10.2003
|
erstellt am: 18. Apr. 2008 23:11 <-- editieren / zitieren --> Unities abgeben: Nur für Lexxus
|
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 19. Apr. 2008 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für Lexxus
Hallo, also ohne jetzt nachgeschaut zu haben, du kannst den Dateinamen in dem Dialog beeinflussen, jedoch gibt es keine Events für die Selektion. OnSelect ist schon ein Event, bezieht sich jedoch auf die Änderungen des SelectSets (von Inventor Objekten). Aber ich glaube zu wissen was du machen willst, denn so etwas haben wir schon mal gemacht. Eine Client-Server Applikation, die in einer Firma immer die Nummer nach bestimmten Schema vergibt (also fortlaufend, dass keine Doppelnamen entstehen). Aber wenn du so etwas stabil und zuverlässig realisieren möchtest, würde ich dir von VBA abraten.
------------------ Grüße Igor FX64 Software Solutions Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lexxus Mitglied Masch.Ing. ETH
Beiträge: 4 Registriert: 18.04.2008
|
erstellt am: 21. Apr. 2008 10:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Sorry, wenn ich mich etwas undeutlich ausgedrückt haben sollte. Also, ich hab folgende Zeilen in einem VBA-Programm: Dim oFileDlg As FileDialog Call ThisApplication.CreateFileDialog(oFileDlg) oFileDlg.FilterIndex = 1 oFileDlg.InitialDirectory = asPaths(i) oFileDlg.Filter = "*.ipt" '"Inventor Files (*.iam;*.ipt)|*.iam;*.ipt|All Files (*.*)|*.*" '"*.ipt" oFileDlg.DialogTitle = "Teil speichern mit nächster verfügbarer Nummer" oFileDlg.FileName = FileName oFileDlg.CancelError = True On Error Resume Next oFileDlg.ShowSave Darin wird "schulbuchmässig" der Filedialog von Inventor aufgerufen. Soweit so gut. Den Filename, den ich an den Dialog übergebe ("oFileDlg.FileName = FileName") habe ich schon vorher durch einen Suchalgorithmus bestimmt. Wie, ist in diesem Zusammenhang nicht wichtig. Was ich jetzt nun möchte (daywa1k3r hat es schon richtig erahnt) ist folgendes: Während des Dialogfenster offen ist, steht unten neben "Dateiname" der oben erwähnte Filename. Darüber ist ja ein Bereich sichtbar, worin eine Auswahl von Files zu sehen ist. Sobald ein File angeklickt wird, wird ja der untenstehende Dateiname ersetzt durch den soeben angeklickten. Das möchte ich abfangen. Es soll nicht der soeben angeklickte Filename erscheinen, sondern der nächsthöhere verfügbare Filename (Bei unserem Nummernsystem, die nächste verfügbare Nummer). Dabei ist der Suchalgorithmus nicht das Problem sondern das Abfangen. daywa1k3r hat schon recht, über alle CAD-Files dies zumachen ( Wir haben so um die 100'000), ist etwas unsinnig über VBA zu realisiern, dazu sollte man eher ein PDM-System benutzen. Der Algorithmus sucht auch nur im gerade offenen Pfad, und wir haben Hunderterblöcke vom Nummernsystem her. Es soll nur eine Eingabehilfe sein, die Verantwortung, dass keine Doppelnamen entstehen liegt beim jeweiligen CAD-User. Sachdienliche Hinweise nimmt jeder CAD-User entgegen, oder wenden Sie sich an die nächste CAD-Stelle. Nein, Spass bei Seite Ich wäre froh, wenn Ihr mir trotzdem einen Rat geben könnt. Gruss Lexxus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manfred Zirk Mitglied
Beiträge: 513 Registriert: 01.11.2002 IV2008 SP1 MDT2008 WIN XP SP2, Vista x64 Asus A8N-SLI, AMD Opteron 180 , 4GB, Quadro FX 3400
|
erstellt am: 21. Apr. 2008 11:18 <-- editieren / zitieren --> Unities abgeben: Nur für Lexxus
Hallo Lexxus, wenn die Inventor-Dialogbox nicht alle gewünschten Möglichkeiten bietet, dann könnte man vielleicht alternativ den Standard-Filedialog aus VBA verwenden. Grüße Manfred [Diese Nachricht wurde von Manfred Zirk am 21. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lexxus Mitglied Masch.Ing. ETH
Beiträge: 4 Registriert: 18.04.2008
|
erstellt am: 22. Apr. 2008 17:28 <-- editieren / zitieren --> Unities abgeben:
|
Manfred Zirk Mitglied
Beiträge: 513 Registriert: 01.11.2002 IV2008 SP1 MDT2008 WIN XP SP2, Vista x64 Asus A8N-SLI, AMD Opteron 180 , 4GB, Quadro FX 3400
|
erstellt am: 22. Apr. 2008 20:38 <-- editieren / zitieren --> Unities abgeben: Nur für Lexxus
Hallo Lexxus, anbei ein VBA-Modul mit dem Code für den Aufruf des Windows-Filedialogs in Inventor 2008 VBA. Ich habe den Code ausprobiert, die Dialogbox geht auf und nimmt eine Auswahl entgegen. Ich habe lediglich die Anpassung, damit der Code in Inventor VBA gestartet werden kann, hinzugefügt. Die Prozedur "StartDialog" sollte in Inventor als Makro sichtbar sein und dient zum Starten Prozedur "TestIt" Im VBA-Editor kann man die Prozedur "TestIt" direkt starten. Du musst nur das Modul Modul2.bas in deine VBA-Projektdatei importieren. Vorher bitte die Dateierweiterung .txt vom Dateinamen entfernen. Ich denke, wenn man den Code etwas unter die Lupe nimmt und sich anschaut, wie der Programmierer mit der MsgBox das Ergebnis eingefangen hat, sollte man die Dialogbox schon anpassen können. Weiter Infos zur Dialogbox und zur Win-API findest du bei Google oder MSDN. Grüße Manfred [Diese Nachricht wurde von Manfred Zirk am 23. Apr. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|