Быстро выделить полигон

Статус
Закрыто для дальнейших ответов.

-=CMYK=-

Забанен
Топикстартер
Сообщения
3 320
Реакции
2
Иногда требуется выделить тот или иной полигон, или несколько полигонов в сложной кривой. Приходится выделять все узлы вручную, что не всегда получается быстро если полигон имеет сложную форму и множество узлов. Я попробовал решить эту задачу с помощью скрипта, но оказалось что объекты типа узла и суб-пути не имеют свойства Selected (Selection). Опыта найти обход самостоятельно не хватило. Обратившись к Вакуленке я получил решение. http://www.oberonplace.com/forum/viewtopic.php?p=1928#1928

Код:
Sub SelectSubpaths()
    Dim nr As New NodeRange
    Dim n As Node
    
    If ActiveShape Is Nothing Then
        MsgBox "Nothing selected", vbCritical
        Exit Sub
    End If
    
    If ActiveShape.Type <> cdrCurveShape Then
        MsgBox "Please select a curve", vbCritical
        Exit Sub
    End If
    
    If ActiveShape.Curve.Selection.Count = 0 Then
        MsgBox "Please select one or mode nodes and try again", vbCritical
        Exit Sub
    End If
    
    ' Go through each selected node, determine which subpath it is on,
    ' get all the nodes from the subpath and add them to the range.
    ' If a subpath's nodes are already in the range, nr.AddRange will no nothing
    For Each n In ActiveShape.Curve.Selection
        nr.AddRange n.SubPath.Nodes.All
    Next n
    
    ' Now create selection of all selected subpaths
    nr.Move 0, 0
End Sub

Обход заключается в том, что можно собрать в объектную переменную все узлы суб-пути (суб-путей) и затем выполнить над ними какую-то операцию не приводящую к реальным изменениям, например перемещение по 0, 0. После чего все узлы пути (путей) окажутся выделенными.

Для того чтобы скрипт работал, следует выбрать инструмент Shaper, и выделить любой узел на нужном суб-пути (или на каждом суб-пути узлы которых необходимо выделить), после чего выполнить этот скрипт.

Команду выполнения скрипта можно записать в меню.
 

Koteyich

Быдлофилл и Умнофоб
15 лет на форуме
Сообщения
71
Реакции
0
Very КлЁвый скрипт - давно нехватало!!!

Спасибо!
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Быстро выделить полигон

Если нужно выделить все точки в ОДНОМ подпути, то можно просто кликнуть по точке удерживая Shift+Ctrl
 
Статус
Закрыто для дальнейших ответов.