RUS  ENG 

VBScript преобразование в полигон

Страницы: 1
RSS
VBScript преобразование в полигон, Помогите преобразовать линию в полигон
 
Здравствуйте. Пробую написать макрос для преобразования замкнутой линии в полигон (контур), используя VBScript. Примеров на сайте не нашёл. Как применить метод SetContour - не совсем понял. Подскажите, как это сделать или приведите пример. ZuluGis 8.0.
Изменено: Павел Макаров - 11.01.2021 14:50:38
 
Цитата
Павел Макаров написал:
Здравствуйте. Пробую написать макрос для преобразования замкнутой линии в полигон (контур), используя VBScript. Примеров на сайте не нашёл. Как применить метод SetContour - не совсем понял. Подскажите, как это сделать или приведите пример. ZuluGis 8.0.
Добрый день.

Метода, который, как в редакторе, преобразует замкнутую линию в полигон сейчас нет. Можем добавить.

Сейчас только длинный путь: получить у объекта PolyLine, по ее точкам заполнить Contour, удалить исходный объект, записать новый, и у него поменять ID на прежний (ChangeElemID ).

Путь довольно кривой, так что лучше мы методы добавим. Преобразовать линию в полигон и наоборот.


SetContour заменяет одну геометрию полигона на другую.
https://www.politerm.com/zuludoc/zuluax/index.html#Element_SetContour.html
 
Цитата
Алексей Аширов написал:
Цитата
Павел Макаров написал:
Здравствуйте. Пробую написать макрос для преобразования замкнутой линии в полигон (контур), используя VBScript. Примеров на сайте не нашёл. Как применить метод SetContour - не совсем понял. Подскажите, как это сделать или приведите пример. ZuluGis 8.0.
Добрый день.

Метода, который, как в редакторе, преобразует замкнутую линию в полигон сейчас нет. Можем добавить.

Сейчас только длинный путь: получить у объекта PolyLine, по ее точкам заполнить Contour, удалить исходный объект, записать новый, и у него поменять ID на прежний (ChangeElemID ).

Путь довольно кривой, так что лучше мы методы добавим. Преобразовать линию в полигон и наоборот.


SetContour заменяет одну геометрию полигона на другую.
https://www.politerm.com/zuludoc/zuluax/index.html#Element_SetContour.html
Спасибо. Было бы здорово, если вы добавите такой метод. Уж очень не хочется городить околесицу с отрисовкой нового полигона по вершинам заданной ломанной.
 
Цитата
Павел Макаров написал:
Цитата
...лучше мы методы добавим. Преобразовать линию в полигон и наоборот.
Спасибо. Было бы здорово, если вы добавите такой метод. Уж очень не хочется городить околесицу с отрисовкой нового полигона по вершинам заданной ломанной.
Добавили методы:

для группы:
Layer.Selection.ConvertToPolylines(Style As ElemStyle, ElemType As Long, ElemMode As Long, Delta As Double) As Long
Layer.Selection.ConvertToPolygons(Style As ElemStyle, ElemType As Long, ElemMode As Long, Delta As Double) As Long

для конкретного объекта:
Element.ConvertToPolyline(Style As ElemStyle, ElemType As Long, ElemMode As Long) As Long
Element.ConvertToPolygon(Style As ElemStyle, ElemType As Long, ElemMode As Long, Delta As Double) As Long

Описания пока нет.
ElemStyle может быть Nothing
ElemType и ElemMode пока не задействованы (преобразуют в примитивы, ставить -1)
Delta - окрестность для замыкания концов ломаной в метрах
 
Цитата
Алексей Аширов написал:
Добавили методы:для группы: Layer.Selection.ConvertToPolylines(Style As ElemStyle, ElemType As Long, ElemMode As Long, Delta As Double) As Long Layer.Selection.ConvertToPolygons(Style As ElemStyle, ElemType As Long, ElemMode As Long, Delta As Double) As Longдля конкретного объекта: Element.ConvertToPolyline(Style As ElemStyle, ElemType As Long, ElemMode As Long) As Long Element.ConvertToPolygon(Style As ElemStyle, ElemType As Long, ElemMode As Long, Delta As Double) As LongОписания пока нет.ElemStyle может быть NothingElemType и ElemMode пока не задействованы (преобразуют в примитивы, ставить -1)Delta - окрестность для замыкания концов ломаной в метрах
Спасибо! Опробую методы в работе и, если будут какие-то вопросы/корректировка, напишу здесь.
 
При работе выявился странный баг: все выделенные линии при отработке макроса пропадают. При преобразовании через меню всё нормально. Прилагаю тестовый файл DXF, с которым работаю.

Текст макроса, который использую для теста (предварительно выделив все объекты слоя):
Код
Sub Test()
    
    Set Map = Zulu.ActiveMapDoc

    Set L = Map.Layers.Active
    
    L.Selection.ConvertToPolygons Nothing, -1, -1, 0.3

End sub
 
Цитата
~
Изменено: Павел Макаров - 14.01.2021 13:55:40
 
Цитата
Павел Макаров написал:
При работе выявился странный баг: все выделенные линии при отработке макроса пропадают. При преобразовании через меню всё нормально.
Да. Для группы > 128 объектов. Завтра исправленная версия будет.
Страницы: 1