Hallo Christian,
Die Punkte (Vertex) der Polyline findest Du doch unter .Coordinates
Je nach Art der Polyline haben die Punkte zwei oder drei Elemente, das muß man bei der Erstellung / Veränderung berücksichtigen.
Diese Elemente hast Du ja schon für Deinen Vergleich herausgelesen.
Für solche Fälle habe ich eine globale Abfrage, damit braucht man für Bearbeitungsfunktionen nur eine Variante.
Code:
Dim P1 As AcadObject ' Polylinie
Dim p1_Arr as Integer ' Feldlänge Punkte
Dim P1Coord As Variant ' Koordinaten der Stützpunkte
Dim P1_Count As Long ' Anzahl der Stützpunkte P1Coord = P1.Coordinates ' Das Koordinatenfeld der Polyline
Select Case P1.EntityName
Case "AcDb3dPolyline":
p1_Arr = 3
Case "AcDbLWPolyline":
p1_Arr = 3
Case "AcDbPolyline":
p1_Arr = 2
End Select
P1_Count = (UBound(P1Coord) - p1_Arr + 1) / p1_Arr 'Anzahl der Punkte beginnend bei 0
' Alternativ:
' P1_Count = (UBound(P1Coord) + 1) / p1_Arr 'Anzahl der Punkte beginnend bei 1
Wenn Du jetzt um zwei Elemente kürzen möchtest, machst Du ein neues Array in der entsprechenden Größe
Code:
Dim PLNeu_Coord As Variant
DIM PLNeu_Count As Long
PLNeu_Count = (P1_Count + 1 - 2) * p1_Arr - 1 ' P1_Count beginnt bei 0, deshalb Erhöhung um 1
' und dann Abzug des Kürzungsbetrages (hier 2 Elemente)
' Alternativ :
' PLNeu_Count = (P1_Count - 2) * p1_Arr - 1
ReDim PLNeu_Coord(0 To PLNeu_Count) As Double
Kopierst die bisherigen Werte zum Beispiel ab dem 3. Punkt (kürzen am Anfang) oder vom 1. bis drittletzten Punkt in das neue Array und ordnest das Array dem PL.Coordinates zu. Den neuen Anfangs- oder Endpunkt mußt Du natürlich auch noch entsprechend Deiner gewünschten Länge korrigieren.
Code:
P1.Coordinates = PLNeu_Coord
Noch ein P1.Update - fertig
Hoffe es hilft 
Grüße
Klaus
[Diese Nachricht wurde von KlaK am 01. Apr. 2022 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP