| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Screenshot vom Bauteil - AddIn mit C# (1909 mal gelesen)
|
elbardoni Mitglied
Beiträge: 8 Registriert: 30.12.2014
|
erstellt am: 23. Feb. 2015 15:52 <-- editieren / zitieren --> Unities abgeben:
Guten Tag liebe Gemeinde, mir geht es heute darum einen Screenshot vom Bauteil zu machen und diese dann zu speichern. Es funktioniert beim ersten mal wunderbar , aber beim zweiten Mal kommt leider eine Fehlermeldung. Code: private void btnScreenshot_Click(object sender, EventArgs e) { Application app = AddinGlobal.InventorApp; var oDoc = app.ActiveDocument; if (oDoc == null) {} else { try { // Datei wird als PNG gespeichert. oDoc.SaveAs("C:\\Temp\\Test.png", true); _mmHc.ShareFileWithRoom(_room, "C:\\Temp\\Test.png", rTBEingabe.Text); rTBEingabe.Text = ""; var imagelist = new ImageList(); String[] imageFiles = {"C:\\Temp\\Test.png"}; pBScreenshot.Image = Image.FromFile("C:\\Temp\\Test.png"); foreach (var file in imageFiles) { //Screenshot wird zur Imagelist hinzugefügt imagelist.Images.Add(Image.FromFile(file)); } } catch (Exception exception) { MessageBox.Show(Resources.FormChat_SaveAsBmp_Bitte_öffnen_bzw__erstellen_Sie_ein_Dokument_ + exception); } } }
C# meckert bei dieser Zeile
Code: oDoc.SaveAs("C:\\Temp\\Test.png", true);
Dann kommt diese Fehlermeldung: Zitat: System.Runtime.InteropServices.COMException (0x80004005): Unbekannter Fehler (Ausnahme von HRESULT: 0x80004005 (E_FAIL)) bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData) bei Inventor._DocumentClass.SaveAs(String FileName, Boolean SaveCopyAs) bei InvAddIn.FormChat.btnScreenshot_Click(Object sender, EventArgs e) in c:\Users\elbardoni\Desktop\Hassan daten\HTW\Programmieren\svn\Klu-Pro-El\Hassan El-Bardan\Prototyp\InventorAddIn2\InventorAddIn2\FormChat.cs:Zeile 135.
Bitte um Rat. Vielen Dank schon mal für die Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9732 Registriert: 01.12.2003 Inventor 20xx, Visual Studio Express
|
erstellt am: 23. Feb. 2015 17:22 <-- editieren / zitieren --> Unities abgeben: Nur für elbardoni
|
elbardoni Mitglied
Beiträge: 8 Registriert: 30.12.2014
|
erstellt am: 23. Feb. 2015 17:49 <-- editieren / zitieren --> Unities abgeben:
Danke erstmal für die Antwort. Ich habe es auch mit dem Code versucht:
Code: Public Sub SaveAsBMP() ' Get the active document. Dim oDoc As Document Set oDoc = ThisApplication.activeDocument ' Save a copy as a BMP file. Call oDoc.SaveAs("C:\Temp\Test.bmp", True) End Sub
auch mit:
Code: Public Sub SaveAsJPG() ' Get the active view. Dim oView as View Set oView = ThisApplication.ActiveView ' Save the view as a jpg file. Call oView.SaveAsBitmap("C:\Temp\Test.jpg", 700, 500) End Sub
Aber leider kommt immer die gleiche Fehlermeldung. Auch die Tipps au der Webseite : http://modthemachine.typepad.com/my_weblog/2009/02/saving-image-files.html waren leider nicht hilfreich.
Haben Sie noch eine Idee.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 23. Feb. 2015 21:44 <-- editieren / zitieren --> Unities abgeben: Nur für elbardoni
|
elbardoni Mitglied
Beiträge: 8 Registriert: 30.12.2014
|
erstellt am: 23. Feb. 2015 22:09 <-- editieren / zitieren --> Unities abgeben:
wenn ich das Dokument lösche über: Code: File.Delete("C:\\Temp\\Test.png");
kommt die Fehlermeldung: Zitat: Der Prozess kann nicht auf die Datei "C:\Temp\Test.png" zugreifen, da sie von einem anderen Prozess verwendet wird.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Puschner Ehrenmitglied V.I.P. h.c. Rentner
Beiträge: 12982 Registriert: 29.08.2003 Toshiba Encore mit MS Office<P>Ein Programm sollte nicht nur Hand und Fuß, sondern auch Herz und Hirn haben. (Michael Anton)
|
erstellt am: 24. Feb. 2015 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für elbardoni
|
Chris 31 Mitglied Konstrukteur und Mädchen für alles
Beiträge: 575 Registriert: 23.04.2013 Inventor 2015 Professional Windows 7 64 bit 16GB RAM nVidia Quadro 600
|
erstellt am: 24. Feb. 2015 09:30 <-- editieren / zitieren --> Unities abgeben: Nur für elbardoni
Wenn ich mich nicht ganz täusche, legst du deine Bilddatei doch in einer Imagelist ab. Das dürfte dann der Prozess sein, der die Datei belegt. Zur Not könntest du das Bild als COM-Objekt zum Ende hin auch noch freigeben.
------------------ MFG Chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
elbardoni Mitglied
Beiträge: 8 Registriert: 30.12.2014
|
erstellt am: 24. Feb. 2015 12:58 <-- editieren / zitieren --> Unities abgeben:
Hallo Chris, danke erstmal für die Hilfe. Dennoch es tritt immer noch der gleiche Fehler auf.
Code: private void btnScreenshot_Click(object sender, EventArgs e) { Application app = AddinGlobal.InventorApp; var oDoc = app.ActiveDocument; if (oDoc == null) {} else { try { // Datei wird als PNG gespeichert. oDoc.SaveAs("C:\\Temp\\Test.png", true); //| || Hier tritt der Fehler auf | ||\\ _mmHc.ShareFileWithRoom(_room, "C:\\Temp\\Test.png", rTBEingabe.Text); rTBEingabe.Text = ""; pBScreenshot.Image = Image.FromFile("C:\\Temp\\Test.png"); } catch (Exception exception) { MessageBox.Show(Resources.FormChat_SaveAsBmp_Bitte_öffnen_bzw__erstellen_Sie_ein_Dokument_ + exception); } } }
Ich glaube eher, dass es an Inventor selbst liegt. Den ich habe bemerkt, dass auch beim ersten Versuch die Bilddatei zu speichern, der gleiche Fehler auf tritt (siehe Anhang). Aber Inventor führt trotz allem den Befehl aus. Erst beim zweiten Versuch mekert er mit der Fehlermeldung. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |