【CorelDraw VBA 002例】 断开节点 随机填充颜色([example 002 of CorelDRAW VBA] random fill color of disconnected nodes)

Sub BreakApartNode()
    '##断开节点 随机填充颜色
    Dim s As Shape, sr As ShapeRange, sp As SubPath, nr As NodeRange
    Set sr = ActivePage.Shapes.FindShapes()
    Dim srBrokenCurves As New ShapeRange
    Dim n As Long, num As Long
    'loop thru shapes
    For Each s In sr
        s.Curve.SubPaths.First.AddNodeAt 0.333, cdrRelativeSegmentOffset
        s.Curve.SubPaths.First.AddNodeAt 0.666, cdrRelativeSegmentOffset
        'break nodes and curve
        Set nr = s.Curve.Nodes.All
        nr.BreakApart
        nr.RemoveAll
        srBrokenCurves.AddRange s.BreakApartEx
    Next s
    num = ActivePalette.ColorCount
    For Each s In srBrokenCurves
        n = CLng(Fix(Rnd() * num)) + 1
        s.Outline.Color = ActivePalette.Color(n)
    Next s
End Sub
————————
Sub BreakApartNode()
    '##断开节点 随机填充颜色
    Dim s As Shape, sr As ShapeRange, sp As SubPath, nr As NodeRange
    Set sr = ActivePage.Shapes.FindShapes()
    Dim srBrokenCurves As New ShapeRange
    Dim n As Long, num As Long
    'loop thru shapes
    For Each s In sr
        s.Curve.SubPaths.First.AddNodeAt 0.333, cdrRelativeSegmentOffset
        s.Curve.SubPaths.First.AddNodeAt 0.666, cdrRelativeSegmentOffset
        'break nodes and curve
        Set nr = s.Curve.Nodes.All
        nr.BreakApart
        nr.RemoveAll
        srBrokenCurves.AddRange s.BreakApartEx
    Next s
    num = ActivePalette.ColorCount
    For Each s In srBrokenCurves
        n = CLng(Fix(Rnd() * num)) + 1
        s.Outline.Color = ActivePalette.Color(n)
    Next s
End Sub