Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  3D Polylinie

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:  3D Polylinie (1804 mal gelesen)
bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 24. Feb. 2014 09:32    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


Fehler.jpg

 
Hallo,

ich muss einen Bogen zeichnen der aus einzelnen Liniensegmenten besteht.
Also habe ich mir alle Koordinaten ausgerechnet und in eine Point3dCollection gepackt.
Wenn ich die Liste der 2D_Zeichenroutine übergebe macht es genau was es soll.
In der 3D_ Zeichenroutine kommt eine Fehlermeldung eNoDatabase (siehe Anhang)
Könnt ihr mir sagen was hier nicht stimmt ?

Mfg, Bernd

Code:

    Private Sub setplines_2D(liste As Point3dCollection)
        Dim doc As Document = _AcAp.Application.DocumentManager.MdiActiveDocument
        Dim db As Database = doc.Database
        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim bt As BlockTable = CType(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
            Dim btr As BlockTableRecord = CType(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
            Dim pline As Polyline = New Polyline
            For i As Integer = 0 To liste.Count - 1
                Dim p As Point2d = New Point2d(liste(i).X, liste(i).Y)
                pline.AddVertexAt(i, p, 0, 0, 0)
            Next i
            pline.Closed = False
            btr.AppendEntity(pline)
            tr.AddNewlyCreatedDBObject(pline, True)
            tr.Commit()
        End Using
    End Sub

    Private Sub setplines_3D(liste As Point3dCollection)
        Dim doc As Document = _AcAp.Application.DocumentManager.MdiActiveDocument
        Dim db As Database = doc.Database
        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim bt As BlockTable = CType(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
            Dim btr As BlockTableRecord = CType(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
            Dim pline As Polyline3d = New Polyline3d
            For Each pkt As Point3d In liste
                Dim ver As PolylineVertex3d = New PolylineVertex3d
                ver.Position = pkt
                pline.AppendVertex(ver)
            Next
            btr.AppendEntity(pline)
            tr.AddNewlyCreatedDBObject(pline, True)
            tr.Commit()
        End Using
    End Sub


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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 24. Feb. 2014 10:20    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 bccad 10 Unities + Antwort hilfreich

Hallo Bernd,

es wäre natürlich schön gewesen zu wissen, an welcher Stelle des Codes, der Fehler kommt. Die Meldung sagt eigentlich aus, dass du eine Operation erst dann ausführen kannst, wenn das Objekt schon der Database hinzugefügt wurde.

Nachfolgend mein c#Code, den ich zur Erzeugung der Polylines verwende.

Code:

internal static Polyline3d dtCreatePolyline3dBy(Point3dCollection _PointCollection, Boolean _Closing)
        {
            DoubleCollection _bulges = new DoubleCollection();
            foreach (Point3d _p in _PointCollection)
                _bulges.Add(0.0);
            return new Polyline3d(Poly3dType.SimplePoly, _PointCollection,_Closing);
        }
//.. danach dann das übliche : Anhängen an BlockTableRecord und Transaction.AddNewly..

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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

Karlovac
Mitglied



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

Beiträge: 54
Registriert: 12.09.2013

AutoCAD Mechanical 2012-2015
Windows 7 Enterprise X64
Visual Studio 2010/2013
Intel Xeon W3680
Nvidia Quadro 2000
16 GB RAM

erstellt am: 24. Feb. 2014 11:36    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 bccad 10 Unities + Antwort hilfreich

  Hallo,
 
  es sieht so aus als müsste die Polyline zuerst zur DB hinzugefügt werden, bevor Verticies hinzugefügt werden können.
  Weiters verlangt scheinbar auch der Vertex ein "AddNewlyCreatedDBObject"
 
 
Code:

  Private Sub setplines_3D(liste As Point3dCollection)
        Dim doc As Document = _AcAp.Application.DocumentManager.MdiActiveDocument
        Dim db As Database = doc.Database
        Using tr As Transaction = db.TransactionManager.StartTransaction()
            Dim bt As BlockTable = CType(tr.GetObject(db.BlockTableId, OpenMode.ForRead), BlockTable)
            Dim btr As BlockTableRecord = CType(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)
            Dim pline As Polyline3d = New Polyline3d
           
           
            btr.AppendEntity(pline)
            tr.AddNewlyCreatedDBObject(pline, True)
           

           
            For Each pkt As Point3d In liste
                Dim ver As PolylineVertex3d = New PolylineVertex3d
                ver.Position = pkt
                pline.AppendVertex(ver)
               
                tr.AddNewlyCreatedDBObject(ver, True)
               

            Next

            tr.Commit()
        End Using
    End Sub
   



   
   
    Ein Beispiel findt sich hier: (allerdings c#.net)

Gruß Karlovac

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

bccad
Mitglied



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

Beiträge: 57
Registriert: 02.11.2009

erstellt am: 24. Feb. 2014 14:20    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

Hallo Karlovac,

das war's. Ich wusste nicht das die Vertexe auch Bestandteil der Datenbank sind.
Polylinie zuerst anlegen hatte ich schon erfolglos probiert.   

Danke für die schnelle Hilfe.

Mfg Bernd

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

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