Jump to content

Корректно ли работает команда explode для полилиний?


Recommended Posts

В настоящий момент в версии 3,7 НаноКада команда explode, применённая к полилинии, превращает её в линию. Т.е. теряется толщина. Моё мнение - так быть не должно, ведь полилиния - такой же примитив, как и линия...

 

Хотелось бы знать мнение сообщества на эту тему...?

 

В частности у нас данное поведение команды "разбить" вызывает следующие проблемы: Нам передают dxf-файл из PCADа для разработки сборочных чертежей. Файл содержит большое количество блоков различных степеней вложенности (до 4-х). Так вот, корректно разбить блоки с сохранением толщин проводников невозможно.

Link to comment
Share on other sites

В настоящий момент в версии 3,7 НаноКада команда explode, применённая к полилинии, превращает её в линию. Т.е. теряется толщина. Моё мнение - так быть не должно, ведь полилиния - такой же примитив, как и линия...

 

Хотелось бы знать мнение сообщества на эту тему...?

 

В частности у нас данное поведение команды "разбить" вызывает следующие проблемы: Нам передают dxf-файл из PCADа для разработки сборочных чертежей. Файл содержит большое количество блоков различных степеней вложенности (до 4-х). Так вот, корректно разбить блоки с сохранением толщин проводников невозможно.

А что имеется в виду под толщиной? ситуация примерно такова : при explode полилайна сохраняется вес линий (lineweight). если же имеется в виду именно ширина (width - глобальная или посегментная) - то она сохраняться не может в принципе, у линии просто нет такого свойства. то есть вообще. тут надо заметить, что "широкая" полилиния - она вообще не совсем линия, она отчасти площадной объект. и, соответственно, в принципе не может быть разбита на линейные\дуговые сегменты с сохранением визуального отображения. так что команда explode ведет себя вполне корректно. кстати, надо заметить, что автокад ведет себя на полилиниях ровно так же. :)

Link to comment
Share on other sites

В частности у нас данное поведение команды "разбить" вызывает следующие проблемы: Нам передают dxf-файл из PCADа для разработки сборочных чертежей. Файл содержит большое количество блоков различных степеней вложенности (до 4-х). Так вот, корректно разбить блоки с сохранением толщин проводников невозможно.

А если разбивать только блоки? Не разбивая полилинии?

Например так:

1- Выбрать все

2- В строке "Объекты" окна "Свойства" выбрать "Блок"

3- Нажать кнопку "Оставить в выборе" (под заголовком окна "Свойства")

4- Запустить команду Разбивка (Explode)

Повторить процедуру для следующих уровней вложенности блоков.

Link to comment
Share on other sites

А что имеется в виду под толщиной? ситуация примерно такова : при explode полилайна сохраняется вес линий (lineweight). если же имеется в виду именно ширина (width - глобальная или посегментная)...

Да, Вы правы, я неточно выразился - имелась в виду именно ширина линий.

 

...у линии просто нет такого свойства. то есть вообще. тут надо заметить, что "широкая" полилиния - она вообще не совсем линия, она отчасти площадной объект....

А вот тут не знаю - зависит от точки зрения: полилиния - это примитив или нет? Если примитив, то она имеет параметр ширины и он должен сохраняться и не должен разэксплодироваться до другого примитива - обычной линии.

 

...в принципе не может быть разбита на линейные\дуговые сегменты с сохранением визуального отображения....

А здесь совсем не так: попробуйте сделать обрезку полилинии - она сохранит ширину (как раз несохранение ширины полилиний при обрезке было одним из серьёзных глюков версии 3.0). Правда, обрезка - это не эксплодирование.

 

надо заметить, что автокад ведет себя на полилиниях ровно так же. :)

Да, есть такое, но, например, в ZWCadе меню "Экспресс/Блоки/Расчленить с преобразованием атрибутов в текст" позволяет сделать разэксплодирование именно так, как мне нужно - с сохранением толщины полилиний.

 

В этом плане мне понравилась идея oVal'a. Я пробовал немного по другому - с замораживанием "ненужных" объектов. Частично получалось, но не всё. Так что попробую - отпишусь.

Link to comment
Share on other sites

А если разбивать только блоки? Не разбивая полилинии?

Например так:

1- Выбрать все

2- В строке "Объекты" окна "Свойства" выбрать "Блок"

3- Нажать кнопку "Оставить в выборе" (под заголовком окна "Свойства")

4- Запустить команду Разбивка (Explode)

Повторить процедуру для следующих уровней вложенности блоков.

 

Проверил.

Получилось.

СПАСИБО!

К своему стыду - я не знал такого способа выделения объектов.

Похоже, описанная мной команда ZWCad'a "Экспресс/Блоки/Расчленить с преобразованием атрибутов в текст"

работает именно так.

 

Всем спасибо. Тему можно бы закрывать. Решение найдено. Хотя сомнения в правомочности разбиения полилинии остались... :-)

Link to comment
Share on other sites

...у линии просто нет такого свойства. то есть вообще. тут надо заметить, что "широкая" полилиния - она вообще не совсем линия, она отчасти площадной объект....

А вот тут не знаю - зависит от точки зрения: полилиния - это примитив или нет? Если примитив, то она имеет параметр ширины и он должен сохраняться и не должен разэксплодироваться до другого примитива - обычной линии.

 

...в принципе не может быть разбита на линейные\дуговые сегменты с сохранением визуального отображения....

А здесь совсем не так: попробуйте сделать обрезку полилинии - она сохранит ширину (как раз несохранение ширины полилиний при обрезке было одним из серьёзных глюков версии 3.0). Правда, обрезка - это не эксплодирование.

 

надо заметить, что автокад ведет себя на полилиниях ровно так же. :)

Да, есть такое, но, например, в ZWCadе меню "Экспресс/Блоки/Расчленить с преобразованием атрибутов в текст" позволяет сделать разэксплодирование именно так, как мне нужно - с сохранением толщины полилиний.

 

В этом плане мне понравилась идея oVal'a. Я пробовал немного по другому - с замораживанием "ненужных" объектов. Частично получалось, но не всё. Так что попробую - отпишусь.

 

От точки зрения, безусловно, зависит много чего. :)

На самом деле, полилиния - это НЕ примитив. Это достаточно сложный по своей внутренней логике объект - по крайней мере так исторически сложилось. И то, что она эксплодируется на линейные\дуговые сегменты - вообще говоря довольно логично. ну, по крайней мере мне так представляется. и не только мне :)

суть команды explode как раз такова, что вместо сложного объекта мы получаем набор простых. при этом, естественно, возможна потеря тех или иных свойств. если мы считаем полилинию сложным объектом - то ее разбиение вполне корректно. если считать ее примитивом - то разбивать ее не надо вообще. тем не менее, основная масса пользователей как раз хочет, чтобы полилиния разбивалась на сегменты, ничего с этим не поделаешь :) так что проще всего в таком случае просто исключить полилинии из множества разбиваемых объектов.

 

что касается обрезки... обрезка, как правило, не меняет ТИП объекта. из исключений сходу придумывается только окружность, из которой получается дуга, xline из которого получается ray (один или два) и ray из которого может получиься отрезок. в случае полилинии - тип объекта сохраняется, соответственно сохраняются и характеристики. команда же explode, как говорилось, меняет типы объектов по самой сути своей. мало того, даже если вдруг возникнет идея разбивать полилинию не на line\arc, а на маленькие полилинии из одного сегмента, то хотя мы и сохраним ширину визуальное представление все равно изменится - хотя бы за счет сопряжения сегментов - при разбиении оно просто пропадет.

 

в общем, основная мыль всего этого примерно такая - не стоит менять отработанную годами логику explode. если же стоит какая-то специфическая задача - то ее, скорее всего, можно решить таким же специфическим средством - например, сочинить супер-пупер-мега-команду "explode до маразма" с развесистыми настройками - глубина разбиений, фильтры по типам объектов и вообще со всеми бантиками и рюшечками, какие могут прийти в голову. :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...