| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Fehlermeldung nach nach Regel/Makro (2455 mal gelesen)
|
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014
|
erstellt am: 15. Okt. 2014 15:28 <-- editieren / zitieren --> Unities abgeben:         
Hallo miteinander, Ich habe eine Bauteil und Zeichnung erstellt. Das Bauteil ist parametrisch steuerbar und die Teichnung passt sich dann an. Ich möchte dazu jetzt ein Makro, das mir die Datei & Zeichnung seichern in einem Verzeichniss nach Wahl und danach soll die Modellreferenz der Zeichnung ersetzt werden. -> das klappt super danach soll das ausgangsmodell geschlossen werden. Fehlermeldungen: 1.: Fehler in Regel: Regel0 in Dokument: Unbekanntes Dokument Unterbrechung durch Benutzer. 2.: Ausnahmefehler in einer Kompnente der Anwendung. Wenn sie auf "Weiter" Klicken, ignoriert die Anwendung den und setzt den Vorgang fort. Schwerwiegender Fehler(Ausnahme von HRESULT: 0x8000FFFF(E_UNEXPECTED)). Wenn ich diese beiden Meldungen wegclicke geht es wieter und fertig. Wieso kommen diese Meldungen? (Was sollen die mir sagen?) Wo liegt mein Fehler? Bzw. kann man irgendwas machen das die nicht Angezeigt werden oder man die automatisch gegeschalten werden? Und noch ein Hinweis: Der Fehler tritt nur auf wenn ich das Makro mit einer Regel aufrufe. D.h. wenn ich mit VBA_Editor bin und dort starte kommen keine Meldungen. Hier noch meine Codes: Regel: InventorVb.RunMacro("Dokumentprojekt", "blabla_speichern_unter", "speichern_Datei") VBA: Sub Speichern_Datei() Dim oDoc As Document Dim fs As Object Dim odocname As String Dim Pfad As String Dim DateiName As String Set oDoc = ThisApplication.ActiveDocument odocname = oDoc.FullFileName If odocname = "" Then MsgBox "Bitte Modell erst speichern!" Exit Sub End If Pfad = Left(oDoc.FullFileName, InStrRev(odocname, "\")) DateiName = Mid(odocname, InStrRev(odocname, "\") + 1) DateiName = Left(DateiName, Len(DateiName) - 4) DateiName = Pfad & DateiName & ".idw" Set fs = CreateObject("Scripting.FileSystemObject") If fs.fileexists(DateiName) = True Then ThisApplication.Documents.Open (DateiName) Dim dDoc As DrawingDocument Set dDoc = ThisApplication.ActiveDocument End If ' Create a new FileDialog object. Dim oFileDlg As FileDialog Call ThisApplication.CreateFileDialog(oFileDlg) ' Define the filter to select part and assembly files or any file. oFileDlg.Filter = "Inventor Files (*.idw)|*.idw|All Files (*.*)|*.*" ' Define the part and assembly files filter to be the default filter. oFileDlg.FilterIndex = 1 ' Set the title for the dialog. oFileDlg.DialogTitle = "Zeichnung Speichern unter..." ' Set the initial directory that will be displayed in the dialog. oFileDlg.InitialDirectory = oFileDlg.FileName oFileDlg.FileName = DateiName ' Set the flag so an error will be raised if the user clicks the Cancel button. oFileDlg.CancelError = True ' Show the Save dialog. On Error Resume Next oFileDlg.ShowSave 'If an error was raised, the user clicked cancel, otherwise display the filename. If Err Then Exit Sub ElseIf oFileDlg.FileName <> "" Then Dim sFilePath As String sFilePath = oFileDlg.FileName ' Save and close the part. Call dDoc.SaveAs(sFilePath, True) End If DateiNameneu = Left(sFilePath, Len(sFilePath) - 4) & ".ipt" Call oDoc.SaveAs(DateiNameneu, True) oDoc.Activate dDoc.Close (True) ThisApplication.Documents.Open (sFilePath) Referenz = Left(oFileDlg.FileName, Len(oFileDlg.FileName) - 4) & ".ipt" Set oDrawDoc = ThisApplication.ActiveDocument Dim oFile As File Set oFile = oDrawDoc.File Dim oFD As FileDescriptor Set oFD = oFile.ReferencedFileDescriptors.Item(1) Call oFD.ReplaceReference(Referenz) ThisApplication.Documents.Open (DateiNameneu) oDoc.Activate oDoc.Close (True) End Sub MfG Felix Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014 Autodesk Inventor 2025 AutoCAD Mechanical 2025 Microsoft Visual Basic 2022
|
erstellt am: 15. Okt. 2014 15:45 <-- editieren / zitieren --> Unities abgeben:         
Und mein 2. Problem: Das Makro soll automatisch ausgeführt werden, wenn man auf speichern drück. Das geht ja über ein Ereignisauslöser -> "vor speichern des Dokuments" Im Grundmodell sollen allerdngs keine änderungen gespeichert werden (deswegen ja die ganze speichern unter Sache) Aber nach änderung und anschließendem betätigen des Speichernbuttons wird das Makro ausgeführt aber das Grundmodell trotzdem gespeichert.... Wie kann ich das umgehen? Kann man in der Regel festlegen, das es nicht gespeichert werden soll? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 16. Okt. 2014 19:23 <-- editieren / zitieren --> Unities abgeben:          Nur für Fiedel93felix
Hallo Zwar OT, aber trotzdem gut gemeint. Schmeiß iLogic und VBA weg und wechsel mit deinem Code jetzt zu .Net. Aufgrund der ähnlichen Syntax und weil die meisten Beispiele in VB sind, empfehle ich VB.Net. VisualStudio Express ist kostenlos verfügbar und als Student könnte es auch eine gesponsorte höhere Version geben. Das Gestückel von hier ein bißchen iLogic, da ein bißchen VBA, alles durcheinander und dreimal umgerührt - den Code verstehst du in 3 Monaten selbst nicht mehr. Vom fehlenden Debugging mal ganz zu schweigen. So'ne super Fehlermeldungen wie deine sind weitestgehend für die Tonne. Da steht nichtmal wo genau der Fehler auftritt. Auch wenn's im ersten Moment ein mehr an Arbeit ist, das rentiert sich nach der Migration zigfach.
------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014
|
erstellt am: 17. Okt. 2014 07:27 <-- editieren / zitieren --> Unities abgeben:         
Also sind die fehler nicht zu vermeiden oder zu umgehen mit normalen vba im IV? Was heißt hier durcheinander mit iLogic und VBA....iLogic ruft bloß das Makro auf für mehr nutze ich es nicht....der Rest geschieht nur in VBA! und das müsste man dann bei vb.net doch bestimmt gleich machen oder? Weil irgendwie brauch ich ja mein Automatismus drin... VB.Net also...aber da muss ich wieder was installieren --> darf ich nicht nur student! Ich gucks mir mal an bei gelegenheit....trotzdem wäre es cool wenn ich das hier erstmal ohne vb.net lösen könnte Wo der Fehler auftritt kann ich mittlerweile sagen... Der fehler tritt auf wenn ich das Grundbauteil schließe: (Vorletztes Zeile) oDoc.Close(true) Wenn ich das rauslasse kommt keine Fehlermeldung... Wenn ich es drin lasse und in der Regel ON ERROR RESUME NEXT vor dem öffnen des Makros setzte kommt nur noch die 2. Fehlermeldung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014 Autodesk Inventor 2025 AutoCAD Mechanical 2025 Microsoft Visual Basic 2022
|
erstellt am: 17. Okt. 2014 07:38 <-- editieren / zitieren --> Unities abgeben:         
Vielleicht geht es ja wenn ich das Bauteil nicht aus VBA schließe... Aber ich bekommkein Code hin der überhaupt was Schließt in iLogic Weiß jemand ein Code womit ich das aktuelle Bauteil, oder noch besser ein beliebiges (Durch Pfad oder Name) schließen kann??? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014
|
erstellt am: 17. Okt. 2014 08:49 <-- editieren / zitieren --> Unities abgeben:         
Also ich hab jetzt die Fehlermeldungen umgangen... war wiedermal zu einfach deswegen findet man es nicht... hab einfach Call oDoc.SaveAs(DateiNameneu, True) mit Call oDoc.SaveAs(DateiNameneu, False) ersetzt. Allerdings hab ich noch ein Problem was ich auch nach Tagelangen suchen und probieren nicht lösen konnte... Das Grundbauteil wird auch gespeichert das Grundbauteil soll ungespeichert bleiben Jemand ne idee woran das liegen könnte?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
  
 Beiträge: 559 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 17. Okt. 2014 09:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Fiedel93felix
Zitat: das Grundbauteil soll ungespeichert bleiben Jemand ne Idee woran das liegen könnte?
Du musst die Datei schließen ohne speichern: oDoc.Close (True) ' Quell-IPT bzw. IAM schließen ohne speichern
------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014
|
erstellt am: 17. Okt. 2014 09:20 <-- editieren / zitieren --> Unities abgeben:         
naja in meinem Code ist kein Befehl drin das das das Bauteil gespeichert werden soll... es ist nur speichern unter drin...aber speichern unter heist für mich: -Bauteil unter anderem Namen speichern -Grundmodell nicht speichern oder liege ich da Falsch oDoc.Close (True) war ja in meinem code drin am anfang, da hat es aber trotzdem das Bauteil gespeichert, außerdem kamen die erwähnten Fehlermeldungen dadurch... anderer Vorschlag?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
      

 Beiträge: 2788 Registriert: 15.11.2006 Windows 10 x64, AIP 2020-2025
|
erstellt am: 17. Okt. 2014 10:00 <-- editieren / zitieren --> Unities abgeben:          Nur für Fiedel93felix
Moin 1. Das du in iLogic nur den Regelauslöser nutzt steht nirgends. 2. .Net beherrscht natürlich die Möglichkeit auf Events von Inventor zu reagieren. Und noch besser, man kann eigene Handler bauen und somit beim Speichern durch den User seinen eigenen Kram erledigen lassen und dann das Speichern abbrechen. .Net benötigt nicht im Ansatz den iLogic-Kram. 3. .Net als AddIn bleibt sauber getrennt von irgendwelchen Inventordateien. Da muß ich keinen Code in eine Bauteildatei einpflanzen. Aber das ist meine persönliche Meinung/Einstellung dazu. 4. VBA ist als obsolet gekennzeichnet. OK, der Ausstieg wurde schon mehrfach angedroht und bisher doch nicht umgesetzt. Langfristig ist es in meinen Augen trotzdem ein schönes, aber totes Pferd. 5. Das du als Student in einer Firma nix installieren darfst wuße ich nicht, klingt aber plausibel. Die Entwicklungsumgebung wäre aber ein erforderliches Arbeitsmittel. War nicht dein Auslöser im iLogic? Kein Wunder das dein Ursprungsteil gespeichert wird, du löst das Speichern doch selbst aus. ------------------ MfG Ralf  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014
|
erstellt am: 17. Okt. 2014 10:25 <-- editieren / zitieren --> Unities abgeben:         
Okay klingt erstmal recht cool das ganze! Aber du sagst ich kann Befehle für bestimmte Inventoraktionen erstellen und das es von von jeglichen Bauteilen getrennt bleibt...hab ich das richtig verstanden? Aber dann greift das Programm doch immer wenn is Bsp. speichere oder? Es soll ja nur bei bestimmten Programmen greifen... Das ich es erstmal zum testen installieren kann bekomme ich bestimmte durch beim chef und wenn es dann ordentlisch finktioniert wird es ja evt. auch für alle installiert.(Oder brauch man das Programm nur zum Schreiben solcher Programme?) Ja ich mach es eigentlich über den Ereignisaulöser, aber auch wenn ich es so händisch ausführe wird das Bauteil gespeichert was nicht passieren sollte...
MfG Felix
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RolandD Mitglied
  
 Beiträge: 559 Registriert: 07.01.2005 i7-9700k 32GB DDR4-RAM Nvidia RTX 2060 SSD 970 m.2 Win10-64 (21H2) AIP 2020.3 Dell U3417W
|
erstellt am: 17. Okt. 2014 11:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Fiedel93felix
Hallo Felix, ja, du brauchst VB Express 2010 nur zum Schreiben des Addins oder Plugins. Du kannst es natürlich auf deinem Notebook zusammen mit deiner Studentenversion betreiben. Die erzeugten Plugins dann auf andere PCs verteilen. Ralf hat Recht, dass eigentlich VBA seit einiger Zeit nicht mehr unterstützt werden sollte, aber totgesagte leben länger... Ich würde dir deshalb folgende Vorgehensweise empfehlen: Mach dir eine Makro in VBA und dazu ein Icon in die Multifunktionsleiste. Dann kannst du die gesamte Funktion bewusst über das Icon aufrufen. Alles, was automatisch irgend etwas erledigt, da der Code im Bauteil ist - oder vielleicht auch nicht - und beim Speichern ausgelöst wird, kann keiner später nachvollziehen. Den Vorteil von VBA sehe ich in der detaillierten Hilfe und im direkten Zugriff auf die Überwachungsfunktionen (Debugging) Wenn der Code funktioniert, kannst du es immer noch nach VB umsetzen. Grundsätzlich würde ich: 1. Das Teil unter der neuen Nummer speichern und das Original ohne speichern schließen 2. Zugehörige IDW zum Teil öffnen, unter neuer Nummer speichern und ohne speichern schließen 3. die neue IDW öffnen und die Referenz auf das neue Teil ersetzen 4. das neue Teil öffnen, bearbeiten und speichern
------------------ Gruß Roland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014
|
erstellt am: 17. Okt. 2014 12:22 <-- editieren / zitieren --> Unities abgeben:         
Okay Danke für die Info ich werde mir vb.Net mal anschauen. Aber das mit deinem Button zum starten der einzelnen Aktionen find ich ganz gut aber mein Chef will natürlich nicht immer aufm Button clicken, er will das alles automatisch geht.... D.H. er will: -> Vorlage öffnen -> autom. öffnen Einer Auswahl -> wahl was wil er haben für ein Bauteil -> übernehmen( Button auf Auswahl ) -> autom. öffnen des Grundmodells -> autom. "speicherun unter" mit Referenz ersetzen -> autom. öffnen einer Eingabemaske zum ändern des Bauteils öffnen -> button in Eingabemaske übernehmen -> Modell ändern -> speichern betätigen ->Zeichnung autom. öffnen und anpassen ->speichern betätigen ->PDF's erstellen Es klappt auch fast alles genau so wie er es will kommen halt hier und da noch paar Fehler und so aber das bekomm ich hin... Aber wenn ihr sagt das VB evt. bald aus IV rausfliegt dann wäre meine Arbeit dann umsonst gewesen wenn sie nicht mehr geht!!! MfG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Fiedel93felix Mitglied Konstrukteur
 
 Beiträge: 488 Registriert: 19.02.2014 Autodesk Inventor 2025 AutoCAD Mechanical 2025 Microsoft Visual Basic 2022
|
erstellt am: 30. Okt. 2014 08:54 <-- editieren / zitieren --> Unities abgeben:         
|
daywa1k3r Ehrenmitglied V.I.P. h.c. Softwareentwickler

 Beiträge: 3497 Registriert: 01.08.2002 Alienware m17x, Win7, Inventor2012
|
erstellt am: 30. Okt. 2014 09:43 <-- editieren / zitieren --> Unities abgeben:          Nur für Fiedel93felix
Zitat: Mal noch ne Frage....Ich hab gehört Inventor hat vor VBA aus dem Programm zu nehmen...
Inventor ist das Produkt, Autodesk ist der Firmenname. Zitat: Wo finde ich denn diese Information?
In diesem Thread, ein paar Beiträge weiter oben, gepostet von Ralf. Du kannst auch nach „VBA obsolete“ googeln. Zitat: Oder stimmt die Info garnicht?
Diese Info stimmt nicht, es läuft eine Verschwörung gegen dich. Würde mit VBA / iLogic weiter machen – ist absolut zukunftssicher. Zitat: Aber das mit deinem Button zum starten der einzelnen Aktionen find ich ganz gut aber mein Chef will natürlich nicht immer aufm Button clicken, er will das alles automatisch geht....
Es interessiert hier absolut niemanden was dein Chef will. Komme lieber zukünftig mit konkreten Programmierfragen!
------------------ Grüße Igor FX64 Software Solutions - Inventor Tools FX64 LambdaSpect - Lichtsimulation mit Autodesk Inventor Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |