| | |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | | |  | Neue Web-Applikation: Cideon Sparify - Ersatzteilmanagement neu gedacht, eine Pressemitteilung
|
|
Autor
|
Thema: C# AddIn Schriftfeld tauschen (2622 mal gelesen)
|
lhiapgpeonk Mitglied
 Beiträge: 4 Registriert: 21.08.2012 Inventor 2011, Win 7 x64, Visual Studio 2008/2010
|
erstellt am: 30. Aug. 2012 14:14 <-- editieren / zitieren --> Unities abgeben:         
Hallöchen allerseits! Ich habe ein mittelgroßes Problem. Ich möchte mithilfe meines Addins das Schriftfeld der aktuellen Zeichnung durch ein neues ersetzen. Das alte zu löschen klappt. Ebenso klappt es, ein neues Schriftfeld einzufügen, welches KEINE Angeforderten Eingaben beinhaltet. Sobald ich aber Angeforderte eingaben habe verschluckt er sich. Es sind 6 Eingaben die Angefordert werden. private string[] GeforderteEingaben = new string[6]; //Geforderte Eingaben mit Wwerten füllen foreach (Sheet sh in ndDoc.Sheets) { sh.TitleBlock.Delete(); sh.AddTitleBlock(tBlockEngl,TitleBlockLocationEnum.kBottomRightPosition,GeforderteEingaben); } Bei der Erstellung des Codes habe ich mich an der API-Hilfe entlanggehangelt (die irgendwie nur VB.net zu kennen scheint *grr*). Als Fehler bekomme ich folgenden: Message = "Falscher Parameter. (Ausnahme von HRESULT: 0x80070057 (E_INVALIDARG))" Kann mir irgendjemand helfen? Ach ja: Dringend! ;-) ;-) ;-) Grüße Hagen Lippok [Diese Nachricht wurde von lhiapgpeonk am 30. Aug. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
lhiapgpeonk Mitglied
 Beiträge: 4 Registriert: 21.08.2012 Inventor 2011, Win 7 x64, Visual Studio 2008/2010
|
erstellt am: 30. Aug. 2012 15:21 <-- editieren / zitieren --> Unities abgeben:         
|
lhiapgpeonk Mitglied
 Beiträge: 4 Registriert: 21.08.2012 Inventor 2011, Win 7 x64, Visual Studio 2008/2010
|
erstellt am: 30. Aug. 2012 16:54 <-- editieren / zitieren --> Unities abgeben:         
|
invhp Ehrenmitglied V.I.P. h.c. MB Techniker, AE, WKZmacher

 Beiträge: 5552 Registriert: 16.05.2002 (fast) alles, was Autodesk im Mechanikbereich anbietet ;)
|
erstellt am: 30. Aug. 2012 17:00 <-- editieren / zitieren --> Unities abgeben:          Nur für lhiapgpeonk
|

| |
lhiapgpeonk Mitglied
 Beiträge: 4 Registriert: 21.08.2012 Inventor 2011, Win 7 x64, Visual Studio 2008/2010
|
erstellt am: 31. Aug. 2012 08:04 <-- editieren / zitieren --> Unities abgeben:         
Hallöchen! Ok, stimmt, hast du recht. (Immerhin scheint der Thread jetzt zu funktionieren ;-))
Code: private void Zeichnung_Uebersetzen() { string Pfad, Neuerpfad; DrawingDocument ndDoc; //Neues Zeichnungsdokument DrawingDocument vdDoc; //Zeichnungsvorlage TitleBlockDefinition tBlockEngl; //Titelblock pSetCustom["Bezeichnung_Englisch"].Value = txt_Bezeichnung.Text; //Englische Bezeichnung in benutzerdefinierte iProperty (Referenziertes Bauteil) GeforderteEingaben[0] = txt_Mass.Text; //Ausfüllen der angeforderten Eingaben GeforderteEingaben[1] = txt_Stk.Text; GeforderteEingaben[2] = txt_Norm.Text; GeforderteEingaben[3] = txt_Roh.Text; GeforderteEingaben[4] = txt_Bemerkung.Text; GeforderteEingaben[5] = txt_Mat.Text; //Material nur, wenn Exot, der nicht in den Stilen drin ist GeforderteEingaben[6] = "leer"; //Irgendwie muss ein leeres Feld dabeisein refdoc.Update(); //Referenziertes Bauteil (Baugruppe) updaten => iProperty refdoc.Save(); //Referenziertes Bauteil speichern Pfad = System.IO.Path.GetDirectoryName(dDoc.FullFileName); //Speicherort von deutscher Zeichnung Neuerpfad = Pfad + "\\Englisch"; //Speicherort für alle Englischen Zeichnungen eines Ordners if (System.IO.Directory.Exists(Neuerpfad) == false) { System.IO.Directory.CreateDirectory(Neuerpfad); //Ordner Englisch anlegen wenn noch nicht existent } Neuerpfad = Neuerpfad + "\\" + System.IO.Path.GetFileNameWithoutExtension(dDoc.FullFileName) + "_engl.idw"; //Neuer Dateiname dDoc.SaveAs(Neuerpfad,true); //Deutsche Zeichnung unter neuem Namen speichern ndDoc = (DrawingDocument)ThisApplication.Documents.Open(Neuerpfad, true); //und öffnen try { tBlockEngl = dDoc.TitleBlockDefinitions["Englisch"]; //Versuchen Titelblock aus Zeichnungsressourcen zu laden } catch (Exception e) //wenn er nicht vorhanden ist { vdDoc = (DrawingDocument)ThisApplication.Documents.Open(ThisApplication.FileLocations.TemplatesPath+"Norm1.idw",false); //Zeichnungsvorlage öffnen tBlockEngl = vdDoc.TitleBlockDefinitions["Englisch"].CopyTo((_DrawingDocument)ndDoc,true); //Titleblock in Englisches Dokument kopieren vdDoc.Close(true); //Vorlage wieder schließen } foreach (Sheet sh in ndDoc.Sheets) //Auf jedem Zeichnungsblatt { sh.TitleBlock.Delete(); //Bestehendes Schriftfeld löschen sh.AddTitleBlock(ndDoc.TitleBlockDefinitions["Englisch"],System.Reflection.Missing.Value,GeforderteEingaben); //Englisches Schriftfeld hinzufügen } ndDoc.Save(); //Englische Zeichnung speichern }
War eigentlich ein dummer Fehler meinerseits. Ich habe versucht den Titleblock aus einer Variablen hinzuzufügen und nicht aus den Zeichnungsressourcen. Außerdem machen mich diese angeforderten Eingaben Kirre. Der Will irgendwie ein Array haben, was ein Feld größer ist als nötig ?! Ich hoffe, ihr könnt mit der Lösung was anfangen! Grüße Hagen Lippok Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |