Как объединить отрезки в полилинию ?

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

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Уже давно бьюсь над этим вопросом, долго и мучительно пытался найти на него ответ, но... увы.
Произвожу экспорт документа из SolidWorks'a в dxf формате, затем загружаю данный dxf в corel, но вот беда, в импортируемом файле все объекты представленны в виде набора отрезков и кривых, начало/концы которых не соединены друг с другом. Затем мне приходится ручками объединять все элементы относящиеся к одному объекту в контур и для каждой вершины этого контура производить операцию слияния двух смежных вершин (Join Two Nodes), таким образом, чтобы объект состоял из единой замкнутой полилинии.
Подскажите пожалуйста, может есть к-либо способы решения данной задачи кроме как делать это вручную ?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

Combine-Close path?
 

iddqd

12 лет на форуме
Сообщения
75
Реакции
52
Ответ: Как объединить отрезки в полилинию ?

А кнопка "Сокращать число узлов" (Auto-reduce nodes) вообще результата не дает? Она же там есть при импорте.
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

А кнопка "Сокращать число узлов" (Auto-reduce nodes) вообще результата не дает? Тогда только макросом наверное.
Нет, этот номер не проходит.
Вообще в идеале конечно проделать все на автомате, т.е. произвести объединение всех смежных вершин во всем файле. И такое скорее всего возможно, но уже через скрипт.
На тему VBA скриптов вообще как то очень мало информации: для начала мне бы получить список всех объектов, находящихся в документе, но как это оформляется на VBA - для меня тёмный лес.
Извиняюсь за нубские вопросы, но я в основном занимаюсь программированием на С/С++, и в моем понимании должен существовать некий стандартный интерфейс (примерно как это делается при разработке интерфейсов плагинов поставляемых в dll файлах), но как этот интерфейс выглядит в VBA ??? ведь как то должно производится взаимодействие приложения CorelDraw и скрипта и данные приложения должны как то передаваться в скрипт.
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

Хе, рано я радовался - на выходе лажа получается, Corel берет соединяет две вершины с помощью линии нулевой длинны - получается чушь полнейшая. Хотелось бы, чтобы он выполнял операцию Join Two Nodes применительно ко всем смежным вершинам.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

А чем совет 4 плох? Выделяете все и делаете сократить число узлов до нужного - все нулевые линии уберет.
 

lev

Модератор
20 лет на форуме
Сообщения
2 147
Реакции
2 072
Ответ: Как объединить отрезки в полилинию ?

Arrange - Join Curves
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

Простите, а это где такое находится ?
capturecorel.png

Я что то у себя таких вещей не наблюдаю.
Corel - 11 версия.
Более новые пробовал, но там экспорт/импорт из/в dxf - тихий ужос: почему то при импорте dxf файла вместо одной прямой линии я получаю штук 40 наложенных одна на другую и такую же кучу линий нулевой длины, расположенных в вершинах фигуры. Естественно, если такое пропустить, то башка лазерного CNC гравера будет по 40 раз ездить по одному и тому же месту. Посему, пришел к выводу, что самой рабочей версией является - 11.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

Join - в версии X5. Для 11 был аналогичный макрос. Но на мой взгляд, проще делать как я говорю - комбинировать, замыкать а потом Reduce nodes делать.
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

Большое спасибо за подсказу, но, увы это не помогает. Линии нулевой длинны все равно остаются после операции Reduce Nodes, ну и плюс ко всему замыкание портит всю картину, т.к. в файле присутствуют кроме всего и незамкнутые контура.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

Странно, я сколько ни пробовал с разными объектами, когда выставляешь в окошке максимальное количество узлов и жмешь Reduced node то оставляет только нужные узлы, нулевых линий нет. Корел X3. Или попробуйте этот макрос найти на обероне.
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

Спасибо, именно то что нужно, эх, вот бы оно еще работало - цены бы ему не было :) сразу же выявил небольшой кусок картинки на котором этот скрипт сбоит.
Посмотреть вложение fail_part.zip
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

Зато Join curves в X5 на этом примере работает корректно.
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

Всем огромное спасибо.
Вобщем, нашел решение чтобы макрос не глючил:
1. делаем Select нужных нам объектов
2. Combine (Ctrl+L)
3. ShapeTool (F10) , Select All Nodes
4. BreakCurve
5. Break Curve Apart (Ctrl+K)
6. Join Curves (Oberon plugin)

Ура, пойду тестить :) посмотрю как будет выпиливаться...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

Возьмите эту последовательность в макрос допишите, чтобы руками не делать, а правленый макрос сюда выложите, может, кому еще понадобится.
 

Exception13

Участник
Топикстартер
Сообщения
10
Реакции
0
Ответ: Как объединить отрезки в полилинию ?

Да не вопрос, а точнее куча вопросов но уже по скриптам: как сделать combine - я сообразил, как выделить все вершины полученного Shape'a - представления не имею, собственно так же представления не имею как вызвать плагин обероновский. С VBA знаком всего в течении одного дня, бесит полное отсутствие документации с нормальным описанием иерархии объектов дабы хоть какое то представление иметь у кого откуда ноги растут...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 231
Реакции
10 852
Ответ: Как объединить отрезки в полилинию ?

Открываете Visual Basic Editor, наводите на объект или метод и жмете F1. По-моему обероновский скрипт позволяет свои исходники редактировать, гляньте как сделано там и подправьте. А вообще, этот вопрос уже перерастает в оффтопик - его, наверное надо в Автоматизацию перенести?
 
Статус
Закрыто для дальнейших ответов.