21.06.2024, 22:37
Hallo Asterix,
Das habe ich in Beitrag 11 erklärt:
Noch genauer: Kürzer als die Umrissbreite.
Falls Du das ändern willst, gib Bescheid.
Ich nehme an, mit Griff-Länge meinst Du die Steuerpunkt-Länge.
Ich hole ein wenig aus:
Eine Kurve besteht aus einem oder mehreren Pfaden:
![[Bild: Pfadelemente.jpg]](https://i.postimg.cc/L5W8wP8h/Pfadelemente.jpg)
Er gehört nicht zum Knoten. Der Knoten ist sein Ursprung.
Eine normale Steuerpunkt-Länge gibt es nicht.
Was Du mit einem „normalen“ Knoten meinst, weiß ich nicht.
Auf dem Lineal könntest Du die Länge nur sehen wenn der Steuerpunkt Parallel dazu verläuft.
Bei X7 kann man es in der Statusleiste unter „Entfernung“ sehen,
wenn man den Steuerpunkt bewegt.
Der folgende Code enthält eine Prozedur und eine Funktion.
Falls Du doch noch eine Nachfrage willst, setze die Varible „Frage“ in der Funktion auf „True“.
Gruß
Koter
(21.06.2024, 20:03)asterix schrieb: ...Denn das habe ich mich auch bei deinem anderen Makro gefragt, also bis zu welcher Griff-Länge werden die "kurzen" Griffe da markiert? (nur um es zu verstehen)...
Das habe ich in Beitrag 11 erklärt:
(13.06.2024, 16:24)koter schrieb: ...der folgende Code markiert Steuerpunkte die kürzer sind als die Linienbreite...
Noch genauer: Kürzer als die Umrissbreite.
Falls Du das ändern willst, gib Bescheid.
(21.06.2024, 20:03)asterix schrieb: Was sind denn überhaupt Griff-Längen von einem "normalen" Knoten? Ist das die Länge, die man auch auf dem Lineal dann sieht?...
Ich nehme an, mit Griff-Länge meinst Du die Steuerpunkt-Länge.
Ich hole ein wenig aus:
Eine Kurve besteht aus einem oder mehreren Pfaden:
![[Bild: Pfadelemente.jpg]](https://i.postimg.cc/L5W8wP8h/Pfadelemente.jpg)
- Ein Pfad besteht aus einem oder mehreren Segmenten.
- Ein Segment verläuft zwischen zwei Knoten.
- Ein Segment hat zwei Steuerpunkte.
Ein gerades Segment hat keine Steuerpunkte.
- Der Abstand vom Knoten zum Steuerpunkt ist die Steuerpunktlänge.
Er gehört nicht zum Knoten. Der Knoten ist sein Ursprung.
Eine normale Steuerpunkt-Länge gibt es nicht.
Was Du mit einem „normalen“ Knoten meinst, weiß ich nicht.
Auf dem Lineal könntest Du die Länge nur sehen wenn der Steuerpunkt Parallel dazu verläuft.
Bei X7 kann man es in der Statusleiste unter „Entfernung“ sehen,
wenn man den Steuerpunkt bewegt.
(21.06.2024, 20:03)asterix schrieb: Ja, das Makro kann gerne den Griff automatisch verlängern und dann den Knoten direkt drehen, also ohne Nachfrage.
Der folgende Code enthält eine Prozedur und eine Funktion.
Falls Du doch noch eine Nachfrage willst, setze die Varible „Frage“ in der Funktion auf „True“.
Code:
Sub KnotenWenden()
Dim s As Shape
Dim C As Curve
Dim sp As SubPath
Dim seg As Segment
Dim KR As NodeRange
Dim KAnz As Double
If ActiveSelectionRange.Count <> 1 Then Exit Sub
Set s = ActiveShape
Set C = s.Curve
Set KR = s.Curve.Selection
If KR.Count <> 1 Then Exit Sub
KAnz = s.Curve.Nodes.Count
For Each sp In C.SubPaths
For Each seg In sp.Segments
If seg.EndNode.Selected Then
If LCheck(seg, False) Then Exit Sub
seg.EndingControlPointAngle = seg.EndingControlPointAngle + 180
seg.EndNode.CreateSelection
Refresh
Exit For
End If
If seg.StartNode.Selected Then
If LCheck(seg, True) Then Exit Sub
seg.StartingControlPointAngle = seg.StartingControlPointAngle + 180
seg.StartNode.CreateSelection
Refresh
Exit For
End If
Next
Next
End Sub
Function LCheck(seg As Segment, startN As Boolean) As Boolean
Dim antwort
Dim Fragen As Boolean
Dim mld As String
Fragen = False
mld = "Die Steuerpunktlänge beträgt Null" & vbCrLf & "Steuerpunkt verlängern?"
LCheck = True
If startN Then
If seg.StartingControlPointLength = 0 Then
antwort = vbYes
If Fragen Then antwort = MsgBox(mld, vbYesNo + vbQuestion, "Steuerpunktlänge")
If antwort = vbYes Then
seg.StartingControlPointLength = 0.001
LCheck = False
End If
Else
LCheck = False
End If
Else
If seg.EndingControlPointLength = 0 Then
antwort = vbYes
If Fragen Then antwort = MsgBox(mld, vbYesNo + vbQuestion, "Steuerpunktlänge")
If antwort = vbYes Then
seg.EndingControlPointLength = 0.001
LCheck = False
End If
Else
LCheck = False
End If
End If
End Function
Gruß
Koter