Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  AutoCAD ObjectARX und .NET
  Polylinie auswählen, prüfen und Punktzugriff

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
Autor Thema:   Polylinie auswählen, prüfen und Punktzugriff (472 mal gelesen)
tappenbeck
Mitglied
Vermessungsingenieur


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

Beiträge: 1152
Registriert: 30.05.2002

AutoCAD (Map)2015, Topobase, Lisp, .vb.net (Einsteiger)

erstellt am: 23. Aug. 2016 14:28    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

Moin!

ich bin einmal wieder in der AutoCAD-Welt (nicht TB) und versuche an die Stützpunkte einer LW-Polylinie zu gelangen.

Als Grundlage habe ich mir http://through-the-interface.typepad.com/through_the_interface/2007/04/iterating_throu.html rausgesucht und versucht den C# in vb.net zu übersetzen.

Das ist dabei herausgekommen bis jetzt:

Code:

        Private _Editor As Autodesk.AutoCAD.EditorInput.Editor
        Private _Database As Autodesk.AutoCAD.DatabaseServices.Database
...
        Dim PromptEntRes As PromptEntityResult = Nothing
        Dim TransAc As Autodesk.AutoCAD.DatabaseServices.Transaction = _Database.TransactionManager.StartTransaction
...
        _Editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor
        _Database = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Database

...
PromptEntRes = _Editor.GetEntity("wählen Sie eine Polylinie")

                            If Not (PromptEntRes.Status = PromptStatus.Cancel Or IsNothing(PromptEntRes)) Then
                                Using (TransAc)


                                    '' Open the Block table for read
                                    Dim PolyLineObj As DBObject
                                    PolyLineObj = TransAc.GetObject(PromptEntRes.ObjectId, _
                                                                Autodesk.AutoCAD.DatabaseServices.OpenMode.ForRead)

                                    Dim acPoly As Polyline = New Polyline
                                    acPoly = PolyLineObj
                                End Using
                            Else
                                Return Rückgabe_Exit

                            End If


Bei dem Punkt, wo geprüft wird, ob eine LW-Polylinie vorliegt bin ich gescheitert!

Kann mir einer von Euch weiterhelfen ?

Gruß Jan

------------------
jan :-)

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: 4136
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools

erstellt am: 23. Aug. 2016 15:09    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 tappenbeck 10 Unities + Antwort hilfreich

typeoff(Polyline) == dboject.GetType();

so kann man in c# Objecttypen vergleichen.

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

Stelli1
Ehrenmitglied
Verm.-Ing.


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

Beiträge: 1510
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign
MapGuide
autodesk Topobase 2-2014
VS6, VS.net 2010

erstellt am: 29. Aug. 2016 17:09    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 tappenbeck 10 Unities + Antwort hilfreich

Hallo Jan,

ich glaube du suchst so was:

Code:
                If TypeOf (acEntity) Is Autodesk.AutoCAD.DatabaseServices.Polyline Then
                    acPolyline = acEntity
                    EntityName = "POLYLINE"
                    AnzahlPunkte = acPolyline.NumberOfVertices
                    ' Logische Punkte
                    Dim AnzahlLogPunkte As Integer = AnzahlPunkte
                    If acPolyline.Closed Then
                        ' Wenn geschlossen, dann einen dran hängen
                        AnzahlLogPunkte = AnzahlLogPunkte + 1
                    End If

                    ' Neue Linien anlegen
                    TBLine = New Autodesk.Map.IM.Graphic.LineString

                    ' Alle Punkte durchlaufen
                    For PunktZeiger = 1 To AnzahlLogPunkte
                        ' Lese Punkt
                        If PunktZeiger <= AnzahlPunkte Then
                            acPoint3D = acPolyline.GetPoint3dAt(PunktZeiger - 1)
                        Else
                            'Wenn fiktiver Endpunkt-> dann ist es der Startpunkt
                            acPoint3D = acAnfangspunkt
                        End If

                        ' Neuer Punkt mit Koordinaten
                        TBLinienPunkt = New Autodesk.Map.IM.Graphic.LinePoint
                        TBLinienPunkt.Y = acPoint3D.Y
                        TBLinienPunkt.X = acPoint3D.X

                        ' Ersten Punkt merken wenn Linie geschlossen ist
                        If PunktZeiger = 1 Then
                            TBAnfangspunkt = TBLinienPunkt
                            acAnfangspunkt = acPoint3D
                        End If
...



Wilfried Stelberg

------------------
Warum lisp'eln wenn's auch anders geht.
www.ib-stelberg.de

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)2020 CAD.de | Impressum | Datenschutz