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