Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Methode TinSurface.Create einbau

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Methode TinSurface.Create einbau (870 mal gelesen)
cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Sep. 2015 15:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



Sehen Sie sich das Profil von CAD-Huebner an!   Senden Sie eine Private Message an CAD-Huebner  Schreiben Sie einen Gästebucheintrag für CAD-Huebner

Beiträge: 9732
Registriert: 01.12.2003

AutoCAD 20xx, Civil 3D 201x, Inventor Prof 201x usw.

erstellt am: 26. Sep. 2015 16:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für cadplayer 10 Unities + Antwort hilfreich

Hier ein Beispiel, wie man ein DGM erzeugen kann.
http://adndevblog.typepad.com/infrastructure/2014/01/creating-civil-3d-tin-surface-from-contours-polylines-using-net-api.html

Dein verlinkter Beitrag verweist auf ein Problem aus dem Jahr 2006. Lösung war damals, eine gültigee Style ID eines in der Zeichnung existierenden DGM Stils zu verwenden.

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Sep. 2015 17:59    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
Registriert: 28.04.2009

erstellt am: 26. Sep. 2015 18:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


2015-09-2617-49-37.png

 
Das kommt raus, wenn ich debugge. Alle TinSurface.Create-Parameter belegt. Dennoch wird keine SurfaceId erzeugt ?!

------------------
Gruss Dirk
Blog | Adolf Spende | Infra-Feed | ÅF AB

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadplayer
Ehrenmitglied
CADniker


Sehen Sie sich das Profil von cadplayer an!   Senden Sie eine Private Message an cadplayer  Schreiben Sie einen Gästebucheintrag für cadplayer

Beiträge: 1832
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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz