| |
| 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: Methode TinSurface.Create einbau (880 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 26. Sep. 2015 12:35 <-- editieren / zitieren --> Unities abgeben:
Code: [CommandMethod("create")] public void CreateTinSurfaceTest() { Document m_Doc = Application.DocumentManager.MdiActiveDocument; Database db = m_Doc.Database; Editor ed = m_Doc.Editor; using (Transaction m_Tr = db.TransactionManager.StartTransaction()) { try { m_SurfaceId = Autodesk.Civil.DatabaseServices.TinSurface.Create(db, "m_NewSurfaceName"); m_Surface = m_SurfaceId.GetObject(OpenMode.ForWrite) as TinSurface; ed.WriteMessage("Import succeeded: {0} \n {1}", m_SurfaceId.ToString(), db.Filename); } catch (System.Exception e) { ed.WriteMessage("Import failed: {0}", e.Message); } m_Tr.Commit(); } }
Diese Methode ermöglicht ein neues DGM in Civil zu erzeugen mit Namen "m_NewSurfaceName" Will ich die Methode jedoch in einem Objekt aufrufen, dann wird kein DGM erzeugt, es kommt nur zum Exception-Auswurf, obwohl die Parameter (database, string name) richtig übergeben werden. In der Dokumentation ist auch nichts nachzulesen. Gibt es vielleicht einen anderen Ansatz, ein DGM erzeugen zu können ? Also nach der Methodik wird nix erzeugt
Code: public NewSurface() { Surface newSurf = new Surface(); newSurf.CreateTinSurfaceTest(); }
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Sep. 2015 15:08 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 AutoCAD 20xx, Civil 3D 201x, Inventor Prof 201x usw.
|
erstellt am: 26. Sep. 2015 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Sep. 2015 17:59 <-- editieren / zitieren --> Unities abgeben:
Nach neustem Stand ist nicht zwingend erforderlich eine StyleId. Bei mir besteht jedoch das Problem, dass keine SurfaceId erstellt wird. Egal welche der beiden Methoden ich aufrufe m_SurfaceId = TinSurface.Create("TIN_Surface_From_Contours", m_SurfaceStyleId); oder m_SurfaceId = Autodesk.Civil.DatabaseServices.TinSurface.Create(db, m_NewSurfaceName); in beiden Fällen gibt es null zurück und demzufolge zum Programmabbruch Mich wundert halt nur, wenn ich die Methoden in die Commands-Klasse reinlege und dann mit entsprechendem Befehl aufrufe, geht es problemlos. Dein Beispiel kenne ich bereits und passt nicht richtig zu meiner Thematik, weil ich kein Surface von Contours anlege, sondern rein formell eine Instanz schaffe, die mit ein TinSurface mit beliebigen Namen anlegt. Vielleicht könntest du ja mehr auf diese Problematik eingehen ?! ------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 26. Sep. 2015 18:01 <-- editieren / zitieren --> Unities abgeben:
Das hier funktioniert problemlos!!! Code: [assembly: CommandClass(typeof(NVCreatePasteSurface.Commands))] namespace NVCreatePasteSurface { public class Commands { private NVCreatePasteSurface.WinformDialog m_Form; private ObjectId m_SurfaceId = ObjectId.Null; private ObjectId m_BaseSurfId = ObjectId.Null; private ObjectId m_SurfaceStyleId = ObjectId.Null; private TinSurface m_Surface = null; [CommandMethod("xx")] public void Start() { m_Form = new WinformDialog(); m_Form.FillData(); AcadApplication.ShowModelessDialog(AcadApplication.MainWindow.Handle, m_Form); } [CommandMethod("create")] public void CreateTinSurfaceTest() { Document m_Doc = Application.DocumentManager.MdiActiveDocument; Database db = m_Doc.Database; Editor ed = m_Doc.Editor; CivilDocument civilDoc = CivilApplication.ActiveDocument; using (Transaction m_Tr = db.TransactionManager.StartTransaction()) { try { //1. Variant: defintion styleproperties- and SurfaceName m_SurfaceStyleId = civilDoc.Styles.SurfaceStyles["Rutnät och gräns"]; m_SurfaceId = TinSurface.Create("TIN_Surface_From_Contours", m_SurfaceStyleId);
//2. Variant definition SurfaceName //m_SurfaceId = Autodesk.Civil.DatabaseServices.TinSurface.Create(db, "m_NewSurfaceName"); m_Surface = m_SurfaceId.GetObject(OpenMode.ForWrite) as TinSurface; ed.WriteMessage("Import succeeded: {0} \n {1}", m_SurfaceId.ToString(), db.Filename); } catch (System.Exception e) { ed.WriteMessage("Import failed: {0}", e.Message); } m_Tr.Commit(); } } } }
------------------ Gruss Dirk Blog | Adolf Spende | Infra-Feed | ÅF AB
[Diese Nachricht wurde von cadplayer am 26. Sep. 2015 editiert.] [Diese Nachricht wurde von cadplayer am 26. Sep. 2015 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009
|
erstellt am: 26. Sep. 2015 18:06 <-- editieren / zitieren --> Unities abgeben:
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 29. Sep. 2015 15:51 <-- editieren / zitieren --> Unities abgeben:
|