Сообщество программистов Autodesk в СНГ
ADN Club => AutoCAD .NET API => Тема начата: Дмитрий Загорулькин от 15-09-2017, 16:33:33
-
Из описания (https://knowledge.autodesk.com/search-result/caas/CloudHelp/cloudhelp/2015/ENU/AutoCAD-NET/files/GUID-80D106A9-A16F-4F32-BDE2-5C5B1F7C2C84-htm.html):
In some cases it may be necessary for the offset result to be several curves.
Я никак не могу представить, что это могут быть за случаи. Больше всего интересует, возможен ли хотя бы в теории такой вариант для полилинии, которая AcDbPolyline (DXF: LWPOLYLINE)?
-
Ответ нашёлся сам собой при тестировании. Если полилиния сама себя пересекает образуя петли, то оффсет "вовнутрь" выдаст внутри петель замкнутые контуры, которые будут отдельными объектами. Возможно, могут быть и другие варианты. Придётся предусматривать, прохалявить не получилось в этот раз :D
-
Если полилиния сама себя пересекает образуя петли...
Эти "self-intersecting curves" часто являются причинами порождения всевозможных глюков в работе. Наиболее отчётливо это заметно при попытках осуществить экструзию, револвинг и т.п. операции. На мой взгляд для таких примитивов необходимо выполнять предварительную оптимизацию.
-
В моём случае полилиния - это трасса трубопроводной сети. Для неё самопересечение допустимо (хотя встречается крайне редко).
-
В моём случае полилиния - это трасса трубопроводной сети...
А как на счёт такого "ломаного" оффсета в данном случае? ДопустИм ли он?
-
Да, допустим. Оффсет нужен для получения контура вокруг участка сети. Контур нужен для визуальной идентификации участка сети. Это дальнейшее развитие вот этой темы: http://adn-cis.org/forum/index.php?topic=8011.0
Получается вполне симпатично:
-
Контур нужен для визуальной идентификации участка сети
Ну теперь понятно.....
-
Ответ нашёлся сам собой при тестировании. Если полилиния сама себя пересекает образуя петли, то оффсет "вовнутрь" выдаст внутри петель замкнутые контуры, которые будут отдельными объектами. Возможно, могут быть и другие варианты. Придётся предусматривать, прохалявить не получилось в этот раз :D
Интересно. Я у себя проверил на нескольких примерах и получал по одной петле для таких полилиний. Правда проверял в какой-то из старых версий AutoCAD.
-
Хм. А это интересно. Я проверял только в 2016. Надо будет проверить в версиях постарше.
-
Правда проверял в какой-то из старых версий AutoCAD
Тестировал на 2012. Итог: оффсет "ломает" результирующую полилинию (сплайн). Впрочем термин "старая версия" несколько пространен. Интересно, что Вы подразумеваете под ним?
-
Впрочем термин "старая версия" несколько пространен. Интересно, что Вы подразумеваете под ним?
2008-ую. Причем проверял при помощи ARXDBG - там есть Curve test. Впрочем я не посмотрел её код. Может она рисует только первую из добавленных в массив кривых.
P.S.: Код пересмотрел - добавляет все полученные кривые.
-
2008-ую...
У меня нет возможности проверить на этой версии, но что-то подсказывает, что:
... она рисует только первую из добавленных в массив кривых ...
-
P.S.: Код пересмотрел - добавляет все полученные кривые.
А каков результат работы команды _OFFSET на данной версии AutoCAD? Тот же?
-
А каков результат работы команды _OFFSET на данной версии AutoCAD? Тот же?
Вот результат команды _OFFSET:
(https://farm5.staticflickr.com/4423/37056877516_b0bc53c10b_o.png)
GetOffsetCurves даёт в точности такой же результат.
-
Тестовая кривая во вложении.
-
Поставьте дистанцию смещения раз в 5 меньше. Картинка должна получиться веселей.
-
Вот результат команды _OFFSET:
Мудрёная кривая на мой взгляд, да и шаг смещения велик. Более показательным был бы пример с видео (http://adn-cis.org/forum/index.php?topic=8030.msg28134#msg28134) Дмитрия Загорулькина.
-
С меньшим шагом:
(https://farm5.staticflickr.com/4430/36433099153_a50d840702_o.png)
Т.е. оффсетится только одна из петель самопересекающейся кривой (с шагом еще в 10 раз меньше аналогично).
-
Т.е. оффсетится только одна из петель самопересекающейся кривой (с шагом еще в 10 раз меньше аналогично).
Похоже проблема в замкнутости объекта. Если разорвать, то получается вполне корректный вариант:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F372429%2F105409719.8%2F0_1755d1_b4a9a1d0_orig.png&hash=87539b196c18771dc1466915cd9341d8)
-
С замкнутыми самопересекающимися полилиниями офсет довольно весёлым получается... Возможно, это какой-то баг.
Попробуйте сделать несколько петель и поофсетить в разные стороны.
-
Ага. Кажется понял в чем проблема. Если кривая замкнутая (фактически), то получается одна петля, а если её разомкнуть, то вот так (три отдельных сегмента):
(https://farm5.staticflickr.com/4398/37075677222_a0ea5b8391_o.png)
-
Debalance, Дмитрий Загорулькин
Пришли к одному результату.
-
С замкнутыми самопересекающимися полилиниями офсет довольно весёлым получается...
Я раньше говорил что нужна предварительная оптимизация... а то возможна куча всяческих глючных вариантов.
Возможно, это какой-то баг
Это не баг, это фирменная "фича" от Autodesk ;D
-
Да и пусть. В моём случае вероятность появления объекта такой конфигурации нулевая. Это невероятно, чтобы трубопровод сам себя пересёк, да ещё и замкнулся ;D
-
Это не баг, это фирменная "фича" от Autodesk
В качестве интереса протестировал тот же чертёж на BricsCAD вот что получается:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F770612%2F105409719.8%2F0_1755d8_2c0e983f_orig.png&hash=0e3de3c9f0ae96cce084baeb1d192e07)
-
Да и пусть...
Не могу согласиться.
В моём случае ...
Мне кажется полезнее смотреть дальше и шире, думая о насущных проблемах всего сообщества на этом сайте...
-
думая о насущных проблемах всего сообщества на этом сайте...
Думаю ненно и нощно. Ключевое слово: "насущных" ;)
Есть подозрение, что можно по шапке получить за вопрос, но жутко интересно:
В качестве интереса протестировал тот же чертёж на BricsCAD вот что получается:
А при оффсете в другую сторону какой результат?
-
Ну теперь понятно.....
Лучше один раз увидеть...
-
А при оффсете в другую сторону какой результат?
А вот такой - идеальный результат (кривая синего цвета):
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F508505%2F105409719.8%2F0_17581e_c71a501d_orig.png&hash=fd27a6021670dda8d2bef1fe1268f789)
Более того усложнил задачу, нарисовав сложную "лессажу" из сплайна. И тут отработка на пять баллов:
(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F762837%2F105409719.8%2F0_17581f_6f1cdf77_orig.png&hash=706bc1c3b397b85945cb949a0c977732)
Всё строится в два клика как говорится без "проблем и без систем". В общем Автокаду такое и не снилось.
-
Лучше один раз увидеть...
Поздравляю - весьма достойно!