Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  AutoCAD VBA
  Koordinaten auslesen

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
  
PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
Autor Thema:  Koordinaten auslesen (7578 mal gelesen)
Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 28. Apr. 2009 12:03    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 Zusammen,

ich habe einige Probleme mit dem Example von VBA eventuell könnt ihr mir ja helfen:

Sub Example_Coordinates()
    ' This example creates a polyline. It then uses the Coordinates
    ' property to return all the coordinates  in the polyline. It then
    ' resets one of the vertices using the Coordinates property.
   
    Dim plineObj As AcadPolyline

    ' Create Polyline
    Dim points(5) As Double
    points(0) = 3: points(1) = 7: points(2) = 0
    points(3) = 9: points(4) = 2: points(5) = 0
    Set plineObj = ThisDrawing.ModelSpace.AddPolyline(points)
    ThisDrawing.Regen True

    ' Return all the coordinates of the polyline
    Dim retCoord As Variant
    retCoord = plineObj.Coordinates

    ' Display current coordinates for the second vertex
    MsgBox "The current coordinates of the second vertex are: " & points(3) & ", " & points(4) & ", " & points(5), vbInformation, "Coordinates Example"

Das war das Example

Meine Fragen:

Wieso werden nur Werte von points ausgegeben bzw. wie kann ich retCoord ausgeben?

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 28. Apr. 2009 12:17    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 Silvan01 10 Unities + Antwort hilfreich

Hi und Willkommen,

In dem Variant "retCoord" sind alle Coordinaten der Polylinie gespeichert: Punkt1X,Punkt1Y,Punkt1Z,Punkt2X,Punkt2Y,Punkt2Z,Punkt3X... und so weiter.
Bei dem Beispiel werden dann halt die X-, Y- und Z-Koordinaten über die Points(Nummer im Variant) wieder gegeben.

Wie willst du die Koordinaten denn ausgeben?! Sollen die in eine Datei geschrieben werden oder was hast du vor?!

Gruß, Carsten

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 28. Apr. 2009 12:27    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

Mein Hauptproblem ist, dass ich Koordinaten auslesen möchte, ohne eine neue Polylinie erstellen zu müssen.
Wenn möglich für einen blutigen Anfänger erklären 

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

Carsten1210
Mitglied
staatl. geprüfter Holztechniker


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

Beiträge: 1360
Registriert: 24.07.2002

erstellt am: 28. Apr. 2009 12:54    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 Silvan01 10 Unities + Antwort hilfreich

Hi,

Probier mal dies:

Code:
Option Explicit
Public Sub test()
Dim Object As Object
Dim promt As String
Dim Pickedpoint As Variant
Dim retval As Variant
On Local Error Resume Next
promt = "Objekt wählen:"
Utility.GetEntity Object, Pickedpoint, promt
If TypeName(Object) = "IAcadLWPolyline" Then
    retval = Object.Coordinates
End If
End Sub

Gruß, Carsten

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 28. Apr. 2009 13:12    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 Silvan01 10 Unities + Antwort hilfreich

Hallo,

da war Carsten wieder mal schneller.

Ich hatte es gerade rausgesucht und schicke das Beispiel trotzdem noch.

Code:
Option Explicit

Dim sset As AcadSelectionSet
Dim Punktanzahl As Long

Dim Punkte() As Punkttyp

Private Sub CommandButton1_Click()
    Dim LWPoly As AcadLWPolyline
    Dim Punkt2D(0 To 1) As Double
    Dim Koord As Variant
    Dim i As Long
   
    ' Selectionset bilden
    On Error Resume Next
    Set sset = ThisDrawing.SelectionSets("MySel")
    If Err.Number Then
      Set sset = ThisDrawing.SelectionSets.Add("MySel")
    End If
   
    On Error GoTo 0

    ' LW Polylinie wählen
    sset.Clear
    ThisDrawing.Utility.Prompt Chr$(10) & "Umring wählen ...."
    Me.Hide
    sset.SelectOnScreen
    Me.Show
   
    ' Koordinaten auslesen
    If sset.Count = 1 Then
      Set LWPoly = sset(0)
      Koord = LWPoly.Coordinates
      Punktanzahl = UBound(Koord)
      Punktanzahl = (Punktanzahl + 1) / 2
      Punktanzahl = Punktanzahl + 1
      ReDim Punkte(Punktanzahl)
      Me.lstUmring.Clear
      For i = 1 To Punktanzahl - 1
            Punkte(i).Rechtswert = Koord((i - 1) * 2)
            Punkte(i).Hochwert = Koord((i - 1) * 2 + 1)
            Me.lstUmring.AddItem Format(Punkte(i).Rechtswert, "0.000") & " / " & Format(Punkte(i).Hochwert, "0.000")
      Next i
      ' Endpunkt= Startpunkt an Liste anhängen
      Punkte(Punktanzahl).Rechtswert = Koord(0)
      Punkte(Punktanzahl).Hochwert = Koord(1)
     
    End If
End Sub



Zu beachten ist, dass du je nach Entitytyp verschiedene Koordinaten bekommst.
LWPolylinie -> 2D Koordinaten
Polylinie -> 3D Koordinaten

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 28. Apr. 2009 13:49    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 Stelli bei der Zeile

Me.lstUmring.Clear

kommt der Fehler (Bei .lstUmring) Methode oder Datenobjekt nicht gefunden.

[Diese Nachricht wurde von Silvan01 am 28. Apr. 2009 editiert.]

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 28. Apr. 2009 15:37    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 Silvan01 10 Unities + Antwort hilfreich

Hallo,

das ist ein Steuerelement aus einem Formular.

Einen Thread weiter unten wird auf das Beispiel verwiesen. Kannst dir ja mal die DVB laden und schauen.

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 29. Apr. 2009 09:38    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

Habe jetzt mal die DVB angeschaut und muss mich bedanken  !
Genau so etwas habe ich gesucht.
Also danke für eure Hilfe!
Falls ich weitere Fragen habe melde ich mich nochmal

Grüße

Silvan

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 30. Apr. 2009 15:49    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

Ich habe doch noch eine Frage.
Ich wollte jetzt mal eine Abfrage machen ob (in meinem Beispiel ein Rechteck) in dem Umkreis liegt.
Das Problem dabei ist, dass die einzige Abfrage die mir einfällt ist zu schauen ob die einzelnen Eckpunkte des Rechtecks in dem Umkreis liegen und kein Punkt des Umkreises in dem Rechteck.
Gibts da eine bessere Methode?

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 30. Apr. 2009 17: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 Nur für Silvan01 10 Unities + Antwort hilfreich

Hallo,

es kommt immer auf den einzelnen Fall den man prüfen will.
Es gibt die Möglichkeit ein Selectionset mit der Option byPolygon zu erstellen. Damit wird geprüft welche Objekte innerhalb eines Umrings liegen.
Hierbei ist der Kreis jedoch kein Umring. DEr müsste erst in ein Polygon gewandelt werden.
In deinem speziellen Fall kannst du für die Eckpunkte prüfen ob sie innerhalb liegen. Am einfachsten wäre die Entfernung der einzelnen Punkte zum Zentrum des Kreises zu prüfen.
> Radius = ausserhalb
< Radius = innerhalb

Es gibt auch noch die Methode AutoCAD Methode IntersecWith. Damit kann man prüfen ob und wo sich Elemente schneiden.

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 05. Mai. 2009 10:04    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 ich bins nochmal 

Ich habe noch eine Frage auf die ich keine Antwort habe.
Hier ist ein Stück von Stelli's Code den ich ein bisschen verändert habe:

    Dim sset As AcadSelectionSet
    Dim Poly As AcadPolyline

    On Error Resume Next
    Set sset = ThisDrawing.SelectionSets("MySel")
   
    If Err.Number Then
        Set sset = ThisDrawing.SelectionSets.Add("MySel")
    End If
   
    On Error GoTo 0
    sset.Clear
    ThisDrawing.Utility.Prompt Chr$(10) & "Umring wählen ...."
   
    'Fenster ausblenden
    Me.Hide
    'Auswahl
    sset.SelectOnScreen
    'Fenster einblenden
    Me.Show
   
    If sset.Count = 1 Then
        Set Poly = sset(0)

Bei dem Fett markierten kommt allerdings ein Fehler "Typen unverträglich".
Ich wähle allerdings eine Polylinie aus!

@stelli: ich meinte mit "umkreis" nicht umbedingt einen Kreis sondern eine Polylinie - sorry fehler von mir. Geht der Befehl byPolygon auch mit einer Polylinie?

Grüße

Silvan

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

ManuelKuhn
Mitglied
Techniker und DvD :-)


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

Beiträge: 100
Registriert: 23.03.2005

Intel XEON W3503 @ 2.4GHz
8 GB DDR3
NVIDIA QUADRO FX3800
WinXP Prof SP3 x64
ACAD 2007 + ProSteel 17.2/ 18
ACAD 2010 + ProSteel V8i S3
Rhino 3D V4
Autodesk VIZ-2006 ( bald vielleicht Max2011 :-D )

erstellt am: 05. Mai. 2009 11: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 Nur für Silvan01 10 Unities + Antwort hilfreich

Zitat:

....
    Dim sset As AcadSelectionSet
    Dim Poly As AcadPolyline
....
        Set Poly = sset(0)
....

MAHLZEIT ;-)

Ich bin zwar auch noch ein VBA Anfänger, aber was hast du da genau vor, so wie ich das sehe, kann das ja auch net klappen... du versuchst hier ja zu sagen, dass die "Poly" das "SelectionSet" sein soll?  willst du eigentlich ausdrücken, dass die Polylinie dann ein "Item" des Sets sein soll?

Grüße aus Wü 

------------------
Etwaige Rechtschreibfehler sind gewollt und dienen der allgemeinen Belustigung 

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 05. Mai. 2009 11:41    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,
das Beispiel hab ich von Stelli.
Und wenn ichs richtig interpretiert habe dann sagst du damit das die Poly dein erstes Objekt vom sset ist.
Diese Funktion ging ja schon, als sie noch mit ner LWPoly war aber jetzt tut sie nicht mehr.

Grüße

Silvan

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 05. Mai. 2009 12:10    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 Silvan01 10 Unities + Antwort hilfreich

Hallo Silvan,

das Beispiel ist natürlich nur eine "Testumgebung" aus der "Recyler Box".
Im realen Programm musst du deine Auswahl vielleicht anders machen und eine Typprüfung einbauen.
z.b.
-Auswahle mehrerer Objekte mit SelectOnScreen und eventuell mit zusätzlichen Filter.
-Auswahl eines Objektes mit Thisdrawing.Utility.GetEntity

Wurde ein Entity gewählt sollest du eine Typprüfung machen.
Ein LWPolyline hat 2D Koordinaten und eine Polyline hat 3D Koordinaten.
Somit musst du in deinem Proggi je nach Typ die Koordinaten des Umrings unterschiedlich auswerten.

Code:
Sub Auswahl()
    Dim i As Integer
    Dim Inspkt As Variant
    Dim Ent As AcadEntity
    Dim LWPolyline As AcadLWPolyline
    Dim Polyline As AcadPolyline
    Dim Fertig As Boolean
    Dim Vertex() As Double
    Dim Coord As Variant
   
    While Not Fertig
        On Error Resume Next
        ThisDrawing.Utility.GetEntity Ent, Inspkt, Chr(10) & "Polylinie wählen: "
        If Err.Number Then
            Exit Sub
        End If
        Debug.Print Ent.ObjectName
        Select Case Ent.ObjectName
            Case "AcDb3dPolyline"
                Set Polyline = Ent
                If Polyline.Closed = False Then
                    MsgBox "Polyline muss geschlossen sein"
                Else
                    Fertig = True
                    Coord = Polyline.Coordinates
                    '.....
                End If
            Case "AcDbPolyline"
                Set LWPolyline = Ent
                If LWPolyline.Closed = False Then
                    MsgBox "Polyline muss geschlossen sein"
                Else
                    Fertig = True
                    Coord = LWPolyline.Coordinates
                    ' .....
                End If
            Case Else
                MsgBox "Kein passenendes Entity gefunden", vbCritical
        End Select
    Wend
    ' Programm macht die Auswertung
End Sub

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 05. Mai. 2009 12:25    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,

Okey ich probier jetzt mal eine Typprüfung rein zu bauen.
Das die Koordinaten unterschiedlich sind weiß ich aber ich hätte nicht gedacht, dass
an dieser Stelle dann eine Fehlermeldung kommt.

Grüße

Silvan

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 07. Mai. 2009 10:44    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 ich bins wieder 

wollte mal fragen ob jemand ein Beispiel für das byPolygon hat?

Grüße

Silvan

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 07. Mai. 2009 19:30    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 Silvan01 10 Unities + Antwort hilfreich

Hallo Silvan,

hast du schon mal hier oder in der AutoCAD Hilfe (VBA) geschaut ? In der Hilfe gibt es auch ein Beispiel.

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 08. Mai. 2009 07: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

Ja ich habs schon gesucht auch im Internet.
Danke für den link!
Mit der Hilfe zu dem Selectionset in VBA konnte ich leider nichts anfangen.
Danke

Grüße

Silvan

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 04. Jun. 2009 10:05    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,

ich bin bei meiner Programmierarbeit noch auf ein Problem gekommen.
Ich habe meine LWPolylinie und will diese nach einem Punkt durchsuchen. Der Y-Wert des Punktes ist gegeben und der X-Wert sollte so klein wie möglich sein.
Kann mir jemand helfen?

Grüße
Silvan

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 04. Jun. 2009 10:26    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 Silvan01 10 Unities + Antwort hilfreich

Hallo Silvan,

du durchläufst in einer Schleife alle Koordinaten deiner Linie.
Voerher definierst du eine Variable zb. MIN_X und setzt die auf den fiktiven Wert 999999999.
In einer If Abfrage vergleichst du die Koordinaten.
Wenn der passende Wert gefunden wurde fragst du ab ob der zugehörige X-Wert kleiner als der MIN_X Wert ist. Wenn ja merkst du dir den Index des Punktes und speicherst diesen X-Wert in MIN_X.
Am Ende der Schleife hast du dann den Index des Punktes mit dem gewünschten Y-Wert und minimalen X-Wert.

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 04. Jun. 2009 10:30    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 Stelli,

und woher bekomme ich den meine kompletten Koordinaten?
Bei .Coordinates bekomme ich doch blos die einzelnen Eckpunkte der Polylinie oder?
Grüße
Silvan

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 04. Jun. 2009 10:42    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 Silvan01 10 Unities + Antwort hilfreich

Hallo Silvan,
Zitat:
Original erstellt von Silvan01:
Hallo Stelli,

und woher bekomme ich den meine kompletten Koordinaten?
Bei .Coordinates bekomme ich doch blos die einzelnen Eckpunkte der Polylinie oder?
Grüße
Silvan



Was sind komplette Koordinaten ? 

Ich habe es so verstanden das du die Knickpunkte der Linie meinst.

Vielleicht erklärst du mal die Aufgabenstellung genauer.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13530
Registriert: 30.11.2003

ACAD 2008 Mechanical

erstellt am: 04. Jun. 2009 10:48    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 Silvan01 10 Unities + Antwort hilfreich

wie ist es mit ner (Hilfs)Linie mit der Y-Koordinate und Test auf Schnittpunkte mit der Polylinie? .. da dann den mit dem kleinsten X-Wert ..?

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 04. Jun. 2009 10:57    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


Polylinie.JPG

 
Hallo nochmal,

ich habe meine Polylinie und will testen ob es irgend eine Koordinate auf der Polylinie mit dem gegebenen Y-Wert gibt.
Hab mal ein Bsp. gezeichnet

@CADmium: ja und wie bekomme ich den Schnittpunkt?

Grüße
Silvan

[Diese Nachricht wurde von Silvan01 am 04. Jun. 2009 editiert.]

[Diese Nachricht wurde von Silvan01 am 04. Jun. 2009 editiert.]

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

Stelli1
Moderator
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: 1526
Registriert: 17.08.2005

Map 2000-2014, Rasterdesign,
MapGuide, Autodesk Topobase,
VS6, VS.net 2013

erstellt am: 04. Jun. 2009 11: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 Silvan01 10 Unities + Antwort hilfreich

Hallo Silvan,

die Fragestellung ist doch schon besser.
Du erzeugst wie Cadmium schon vorgeschlagen eine Hilfslinie (2. Punkt mit Offset zum ersten) und ermittelts mit der Methode IntersecWith die Schnittpunkte.

varSchnittpunkte=Polylinie.IntersectWith(Hilfslinie,acExtendBoth)

Es gibt noch einen anderen Parameter für acExtendBoth denn ich aber aus dem Kopf nicht kenne. Eigentlich braucht ja nur die Gerade gedehnt werden.

Dann hast du deine Schnittpunkte. Dann wieder nach dem kleinsten Wert sortieren und fertig.

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

Silvan01
Mitglied



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

Beiträge: 128
Registriert: 28.04.2009

AutoCAD Civil 2009

erstellt am: 04. Jun. 2009 11:24    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,

Danke euch beiden ich werde das jetzt so einbauen 

Grüße
Silvan

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

aima
Mitglied
Bautechniker


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

Beiträge: 17
Registriert: 29.09.2009

Autocad 2008

erstellt am: 24. Nov. 2009 13:47    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 Silvan01 10 Unities + Antwort hilfreich

Hallo

Habe mir diesen Code mal näher angesehen und wollte ihn bei mir mal laufen lassen.
Bei punkte() As punkttyp
krieg ich schon die erste Fehlermeldung.
Nun habe ich alle erdenklichen Objektbibliotheken verbunden, aber es geht immer noch nicht.
Welche Objektbibliothek muß ich noch darauf verweisen?


Zitat:
Original erstellt von Stelli1:
Hallo,

da war Carsten wieder mal schneller.

Ich hatte es gerade rausgesucht und schicke das Beispiel trotzdem noch.

Code:
Option Explicit

Dim sset As AcadSelectionSet
Dim Punktanzahl As Long

Dim Punkte() As Punkttyp

Private Sub CommandButton1_Click()
    Dim LWPoly As AcadLWPolyline
    Dim Punkt2D(0 To 1) As Double
    Dim Koord As Variant
    Dim i As Long
   
    ' Selectionset bilden
    On Error Resume Next
    Set sset = ThisDrawing.SelectionSets("MySel")
    If Err.Number Then
       Set sset = ThisDrawing.SelectionSets.Add("MySel")
    End If
   
    On Error GoTo 0

    ' LW Polylinie wählen
    sset.Clear
    ThisDrawing.Utility.Prompt Chr$(10) & "Umring wählen ...."
    Me.Hide
    sset.SelectOnScreen
    Me.Show
   
    ' Koordinaten auslesen
    If sset.Count = 1 Then
       Set LWPoly = sset(0)
       Koord = LWPoly.Coordinates
       Punktanzahl = UBound(Koord)
       Punktanzahl = (Punktanzahl + 1) / 2
       Punktanzahl = Punktanzahl + 1
       ReDim Punkte(Punktanzahl)
       Me.lstUmring.Clear
       For i = 1 To Punktanzahl - 1
            Punkte(i).Rechtswert = Koord((i - 1) * 2)
            Punkte(i).Hochwert = Koord((i - 1) * 2 + 1)
            Me.lstUmring.AddItem Format(Punkte(i).Rechtswert, "0.000") & " / " & Format(Punkte(i).Hochwert, "0.000")
       Next i
       ' Endpunkt= Startpunkt an Liste anhängen
       Punkte(Punktanzahl).Rechtswert = Koord(0)
       Punkte(Punktanzahl).Hochwert = Koord(1)
      
    End If
End Sub



Zu beachten ist, dass du je nach Entitytyp verschiedene Koordinaten bekommst.
LWPolylinie -> 2D Koordinaten
Polylinie -> 3D Koordinaten

Wilfried Stelberg



Weiss jemand einen Rat?

gruß Mario

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


Ex-Mitglied

erstellt am: 24. Nov. 2009 14:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi Mario,

da musst Du entweder aus dem Code schliessen, wie die Definition 'Punkttyp' aufgebaut ist oder beim Ersteller des Codes nachfragen. Die Definition könnte z.B. so aussehen (nicht probiert, nur geraten ):

Code:
Public Type Punkttyp
  Rechtswert As Double
  Hochwert As Double
End Type

- alfred -

------------------
www.hollaus.at

aima
Mitglied
Bautechniker


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

Beiträge: 17
Registriert: 29.09.2009

Autocad 2008

erstellt am: 24. Nov. 2009 14:50    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 Silvan01 10 Unities + Antwort hilfreich

Hallo

Vielleicht könnt ihr mir ja helfen. Ich bin auf der Suche nach einem Makro das mir die
Koordinaten einer LWPolylinie in eine Excle Tabelle speichert.
Leider bin ich mit VBA mit Autocad nicht so bewandt.
Ich hab schon ein paar Codes ausprobiert, aber keiner läuft bei mir. Ich danke mir geht
eine best. Objektbibliothek ab.

Habt Ihr eine Ahnung wie ich das realisieren könnte?

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


Ex-Mitglied

erstellt am: 24. Nov. 2009 15:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

hast Du probiert, was ich oben hingeschrieben habe?

Oder müssen wir jetzt was neues schreiben, was schon mehrfach hier im Forum existiert?

- alfred -

------------------
www.hollaus.at

aima
Mitglied
Bautechniker


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

Beiträge: 17
Registriert: 29.09.2009

Autocad 2008

erstellt am: 24. Nov. 2009 15: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 Silvan01 10 Unities + Antwort hilfreich

hallo

Ja habe ich probiert, funkz auch bis
Me.Hide
Dann wieder Fehlermeldung " Methode oder Datenobjekt nicht gefunden"

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



Anzeige:Infos zum Werbeplatz >>

CP-Symbols Suite CAD APP für Mechanik, Elektro, Heizung, Lüftung und Klimatisierung (HLK)


Ex-Mitglied

erstellt am: 24. Nov. 2009 22:49    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> funkz auch bis Me.Hide

Startest Du diesen Code aus einem Form oder direkt in VBA durch 'play'? Wenn Du's nicht aus einen Form startest, dann hilft auch das Hide des Forms nicht, denn es ist kein Form da! Also nimm in diesem Fall die Zeilen mit 'Me.Hide' und 'Me.Show' raus.


>> Dann wieder Fehlermeldung " Methode oder Datenobjekt nicht gefunden"

Und an welcher Zeile kam diese Fehlermeldung? Bitte um vollständige Angaben, wenn wir Dir helfen sollen/können/dürfen.


Es ist schon erforderlich, Code aus Foren oder Beispielen nicht irgendwie mit Copy&Paste in das eigene Projekt hineinzustopfen, es sollte (eigentlich muss) dieser Code auch verstanden werden.

Würde ich den abgekupferten Code nicht verstehen, müsste ich laufend davor Angst haben, dass mal irgendwo ein Fehler auftritt (der vielleicht nichtmal sofort ersichtlich sein muss, z.B. berechnete Werte liefern falsche Ergebnisse und Du rechnest damit weiter!). Ich müsste auch Angst haben davor, dass ich ev. mal in diesem Code etwas modifizieren müsste. Weiss ich nicht, was der Code tut, kann ich diesen auch nicht meinen Wünschen entsprechend anpassen.

Viel Erfolg, - alfred -

------------------
www.hollaus.at

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