Перейти к содержанию

Рекомендуемые сообщения

Возвращаемся к вопросу соответствия форматов nanoCAD и AutoCAD с точки зрения полилиний.

Проверка проводилась в nanoCAD Plus 20 и AutoCAD 2015.
 

1.
Имеем 3 подтипа полилиний:

  • Старые полилинии типа "POLYLINE", которые в свою очередь могут поддерживать вершины с 2D и 3D координатами.
    В свойствах они отображаются как "2D-полилиния" и "3D-полилиния" соответственно.
  • Новые полилинии типа "LWPOLYLINE", которые поддерживают только вершины с 2D координатами.
    В свойствах они отображаются как "Полилиния"

 

Более подробно можно прочитать, например, вот здесь:
https://mikhailov-andrey-s.blogspot.com/2014/08/autocad-polyline-2D-3D-polyline.html

То какие именно полилинии будут созданы и как они будут преобразованы, если будут, при открытии файла чертежа, зависит от значения системной переменной PLINETYPE.
https://knowledge.autodesk.com/ru/support/autocad/learn-explore/caas/CloudHelp/cloudhelp/2018/RUS/AutoCAD-Core/files/GUID-F6027128-2707-4BBE-A0A4-C757435D4874-htm.html

 

Сразу же необходимо отметить, что преобразование выполняется только если открываются файлы формата R14 и ниже. Соответственно, в наших условиях преобразование типов полилиний практически никогда работать не будет.

 

2.
Однако, выяснилось, что типы полилиний в nanoCAD и AutoCAD создаются в этих режимах разные. При этом в справке nanoCAD утверждается, что значение переменной влияет на создание типа полилинии, но в отличие от AutoCAD это не так. 
 

Спойлер

image.png.8ca1a67536f055063b398547205b853a.png

 

В случае, если значение переменной  PLINETYPE=0 тип создаваемой полилинии в nanoCAD и AutoCAD отличается !

image.png.8081eff8fce0322c95e5be7d578e03ea.png

 

Результаты тестирования приведены в приложенном файле Excel.
Команды PL и PLINE проверялись для того, чтобы убедиться, что их функционал идентичен.
Тип объекта чертежа определялся командой > (entget (car (entsel)))

3.
Как я уже писал выше, преобразования типов полилинии с очень высокой степенью вероятности у вас не будет, а значит, если вы открываете файлы, созданные в AutoCAD, то можете получить вместе с ними полилинии типа "2D-полилиния", которые nanoCAD понимает, но не создает.

 

Все бы ничего, но, в случае программной обработки объектов чертежа, необходимо четко понимать с какими именно типами полилиний Вы имеет дело, так как их внутреннее описание и построение принципиально различаются ! С точки зрения программиста - это принципиально разные объекты.

Поскольку полилинии типа "2D POLYLINE" фактически не формируются, было бы неплохо при открытии чертежа иметь возможность все полилинии подобного типа преобразовывать к типу "LWPOLYLINE".
 

Подключать данный функционал к PLINETYPE=0, наверное, было бы неверно. Но его можно было бы прописать в основных настройках.

PLines.xlsx
nanoCAD_Create-PLine.dwg

autoCAD_Create-PLine.dwg

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, A.Kudrjashov сказал:

Однако, выяснилось, что типы полилиний в nanoCAD и AutoCAD создаются в этих режимах разные. При этом в справке nanoCAD утверждается, что значение переменной влияет на создание типа полилинии, но в отличие от AutoCAD это не так. 

Что интересно, на этапе  бета-тестирования в одной из промежуточных версий это, похоже, работало!

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

К сожалению, сам пример воспроизвести сейчас нет возможности, но осталась ремарка, что в ходе экспериментов удалось СОЗДАТЬ объект типа "POLYLINE" штатными средствами нанокада. В данный момент это не получается. 

 

1 час назад, A.Kudrjashov сказал:

Все бы ничего, но, в случае программной обработки объектов чертежа, необходимо четко понимать с какими именно типами полилиний Вы имеет дело, так как их внутреннее описание и построение принципиально различаются ! С точки зрения программиста - это принципиально разные объекты.

Собственно, в данном предложении и генеральная линия: программист должен четко понимать с каким объектом он может столкнуться! )))

И, соответственно, использовать разные алгоритмы обработки данных, исходя из НЕЗНАНИЯ пользователем этих душевных терзаний разработчика.

 

1 час назад, A.Kudrjashov сказал:

Поскольку полилинии типа "2D POLYLINE" фактически не формируются, было бы неплохо при открытии чертежа иметь возможность все полилинии подобного типа преобразовывать к типу "LWPOLYLINE".

Полностью исключать возможность работы с объектом  "POLYLINE", пожалуй, не стоит.

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

Ну и для совместимости с DWG на уровне формата.

Лучше добавить таким элементам утраченную (например, тип линии!) или редко используемую (та же касательная) функциональность.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, EdwardSt сказал:

К сожалению, сам пример воспроизвести сейчас нет возможности, но осталась ремарка, что в ходе экспериментов удалось СОЗДАТЬ объект типа "POLYLINE" штатными средствами нанокада. В данный момент это не получается.


Здесь, возможно терминологическая путаница.
Объект "POLYLINE" создается функцией "3DPOLY" в 3D варианте, который в свойствах выглядит как "3D-полилиния".
А вот объект "POLYLINE" в 2D варианте, который должен создаваться функцией "PL" при условии "PLINETYPE=0" и отображаться в свойствах, как "2D-полилиния" не создается, а вместо него создается "LWPLINE", который в свойствах именуется "Полилиния"

Я же говорю: "Сплошной Экзистенционализм". :)

добавлено через 4 минут
28 минут назад, EdwardSt сказал:

Собственно, в данном предложении и генеральная линия: программист должен четко понимать с каким объектом он может столкнуться! )))

И, соответственно, использовать разные алгоритмы обработки данных, исходя из НЕЗНАНИЯ пользователем этих душевных терзаний разработчика.


Я бы даже сказал, что основная проблема не в программистах, пишущих под платформу с нуля и осознающих вышеописанные проблемы.

Проблема в уже написанных программах, в которых не предполагались данные "недокументированные" коллизии. Тем более, что внешне, с точки зрения Справки, функционал выглядит подобным.

добавлено через 6 минут
32 минуты назад, EdwardSt сказал:

Полностью исключать возможность работы с объектом  "POLYLINE", пожалуй, не стоит.


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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
12 минут назад, A.Kudrjashov сказал:

Объект "POLYLINE" создается функцией "3DPOLY" в 3D варианте, который в свойствах выглядит как "3D-полилиния".
А вот объект "POLYLINE" в 2D варианте, который должен создаваться функцией "PL" при условии "PLINETYPE=0" и отображаться в свойствах, как "2D-полилиния" не создается, а вместо него создается "LWPLINE", который в свойствах именуется "Полилиния"

Я имел ввиду под "POLYLINE"  формат функции entget. Кстати, он выглядит одинаково для 3D и 2D-полилиний. Различие только в dxf-группе (70 . …) Причем, принудительное изменение этой группы в акаде приводит к фатальной ошибке, а в нанокаде просто игнорируется (что лучше падения!). А в свойствах - там да, эти возможные три вида полилиний отображаются только двумя в весьма причудливой комбинации

 

                                       image.png.b35a092b041e0b3e28827fae4a87989a.png

 

Возможно, такое отображение в нанокад - более честное и соответствующее сути объекта.

В принципе, все пошло от этого искусственного элемента "LWPOLYLINE", появившегося в DWG сильно позже изначального "POLYLINE".

В результате возникла неразбериха с потерей части функциональности (например, неотображение типа линии у "POLYLINE" ) и все эти танцы с бубнами, типа использования специальной переменной, которая почему-то в текущей версии нанокада не работает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...