Jump to content

привязка "перпендикуляр" между сегментами полилинии


Recommended Posts

39 минут назад, Kreator сказал:

Блин, вы издеваетесь? Человек хочет построить полилинию ABC так, чтобы сегмент BC был перпендикулярен двум другим сегментам.

Да кто же мешает хотеть?

 

Просто NC подошел к вопросу, строго исходя из правил геометрии, а АС творчески и установил по своему усмотрению, что нужно понимать под нормалью.

 

Пример-загадка.

Сколько точек укажет АС в качестве подходящих к понятию нормаль?

Спойлер

image.png.c918d7aecea7a4fdce0a6cbc1abb6ab0.pngimage.png.9c5e9350f93a885202123b965a16cf42.pngimage.png.3fe3a5ddbc8bc1174c2197a2d3b256c8.png

1 и 3 точки - нормали из смежных вершин (расширенная трактовка), 2 - из текущей (геометрически корректное решение)

 

Спойлер

image.png.7543ad7759f38502914903d40f02b2f6.png

С чего бы это? Почему только 1 точка (соответствующая геометрическому смыслу), а не 3 (как в примере выше) и не 5 (сколько выделено вершин)?

 

Я, конечно, понимаю, что АС в своем праве и может сам устанавливать правила, как трактовать то или иное понятие.

По-видимому, NC в конкретно данном вопросе подошел к решению более математически строго.

И в качестве одной единственной точки использует ту, за которую схватились.

Link to comment
Share on other sites

27 минут назад, EdwardSt сказал:

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

Так нам строить-то не нужно перпендикуляр из исходной точки. Перпендикуляром должен стать существующий сегмент полилинии. Тут геометрия замутнена изначально, т.к. речь про изменении существующей полилинии, а не построение новых сегментов. (если не считать, изменение длины сегмента и углов новым построением)

  • Thanks 1
Link to comment
Share on other sites

Спойлер
58 минут назад, EdwardSt сказал:

По порядку:

  1.  "Что мы получили этой привязкой?" -  получили перемещение конечной точки полилинии, за которую дернули, по перпендикуляру (желтый пунктир) к отрезку до пересечения с этим отрезком. Т.е, опустили перпендикуляр на отрезок.
  2. "Для чего она нужна?" Такой вид привязки нужен для нахождения точки, полученной путем проведения перпендикуляра из некоей исходной точки по перпендикуляру к объекту до пересечения с этим объектом.
  3. "Что это за углы?" Углы на рисунке 2 - это значок перпендикуляра (зеленый, маркер найденной точки, соответствующей критерию "нормальности")  и угол и расстояние текущего смещения положения курсора от смежных вершин полилинии (в вашем случае это конец полилинии, поэтому вершина одна; убирается это безобразие отключением дин ввода). Углы на рисунке 3 - это то, что получилось в результате применения привязки по нормали (оно никакого отношения к перпендикуляром не имеет, т.к. целью является не установка каких-то углов, а привязка точки к некоей другой точке)
  4. "Зачем они? Ну даже допустим, что нужен." оставлю без ответа, т.к. понимание первых трех ответов такой вопрос делает неактуальным

 

 

27 минут назад, EdwardSt сказал:

Пример-загадка.

Сколько точек укажет АС в качестве подходящих к понятию нормаль?

2 нормальных перпендикуляра и что-то из "чистой незамутнённой геометрии")

 

Не понятно, что вы пытаетесь доказать. Что это нормально работает? Что так и надо оставить? Что Автокад не прав, сделав удобно и для людей, а Нана молодцы, что стоят на геометрическом пуризме? А зачем это доказывать?

 

Часто ли вы в работе на практике используете полилинии, привязки с нормалью?

Edited by CSpace
Link to comment
Share on other sites

27 минут назад, CSpace сказал:
  Душно чот стало, но так и не понятно, на кой это нужно в реальном проектировании (Показать контент)
1 час назад, EdwardSt сказал:

По порядку:

  1.  "Что мы получили этой привязкой?" -  получили перемещение конечной точки полилинии, за которую дернули, по перпендикуляру (желтый пунктир) к отрезку до пересечения с этим отрезком. Т.е, опустили перпендикуляр на отрезок.
  2. "Для чего она нужна?" Такой вид привязки нужен для нахождения точки, полученной путем проведения перпендикуляра из некоей исходной точки по перпендикуляру к объекту до пересечения с этим объектом.
  3. "Что это за углы?" Углы на рисунке 2 - это значок перпендикуляра (зеленый, маркер найденной точки, соответствующей критерию "нормальности")  и угол и расстояние текущего смещения положения курсора от смежных вершин полилинии (в вашем случае это конец полилинии, поэтому вершина одна; убирается это безобразие отключением дин ввода). Углы на рисунке 3 - это то, что получилось в результате применения привязки по нормали (оно никакого отношения к перпендикуляром не имеет, т.к. целью является не установка каких-то углов, а привязка точки к некоей другой точке)
  4. "Зачем они? Ну даже допустим, что нужен." оставлю без ответа, т.к. понимание первых трех ответов такой вопрос делает неактуальным

 

 

Упрощенно, это способ получения проекции точки на какой-то объект.

Практическое применение? Пикет какого-либо знака относительно оси дороги и миллион других аналогичных задач.

Но коль уж стало душно - тут только на воздух, в сад...

 

17 минут назад, CSpace сказал:

Не понятно, что вы пытаетесь доказать.

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

Из этого пояснения становится понятным, что никаких рандомных углов (ваше утверждение?) нет, никакие точки не пропадают.

 

Также стало очевидно, что нормаль из смежных точек полилинии очень "зашла" пользователям  АС и это хотелось бы иметь и в NC тоже.

Но это не косяк, а хотелка. Весьма полезная. Возможно, уважаемая @yum оформит это, как пожелание.

Link to comment
Share on other sites

1 час назад, Михаил_ЛМГТ сказал:

Перпендикуляром должен стать существующий сегмент полилинии.

Ну с какого перепугу то?

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

И то, что сегменты становятся перпендикулярными, - это побочный эффект своеобразной реализации от АС.

Потому, что он использует еще и смежные вершины (кстати, а почему не все?).

 

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

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

Link to comment
Share on other sites

9 минут назад, EdwardSt сказал:

Упрощенно, это способ получения проекции точки на какой-то объект.

Практическое применение? Пикет какого-либо знака относительно оси дороги и миллион других аналогичных задач.

чем это лучше построения новой вершины? новая вершина и будет как раз проекцией, а эта чистая незамутнённая геометрия создаст нечто с непрямыми углами, причём (а мы же перетаскиваем существующую вершину) с линией от нормали пикета к оси (точки, куда мы перетащили вершину после редактирования) и диагональю к предыдущему пикету. Мб я не совсем понимаю, нарисуйте мне, пожалуйста, комикс, как это должно выйти на практике и чтоб это реально было удобно. Это так, не по теме, чисто любопытно.

 

9 минут назад, EdwardSt сказал:

Из этого пояснения становится понятным, что никаких рандомных углов (ваше утверждение?) нет, никакие точки не пропадают.

рандомные углы из того поста - если уж вы продолжаете делать это...), - это любые не прямые, то есть не перпендикулярные, которые образовались после этой  "нормали". 23 градуса там будет или 67 - не важно. Это те, которые, цитирую, "получилось в результате применения привязки (в нашем случае - при редактировании полилинии) по нормали (оно никакого отношения к перпендикуляром не имеет)".

 

Логика при создании нового сегмента полилинии - правильная. Тут мы все согласны.

Логика при редактировании существующей вершины - нет, она должна отталкиваться от смежной вершины - ведь мы редактируем объект, а не создаём новый сегмент.

Допустим:

-создаём сегмент полилинии, случайно цепляемся неверной привязкой не туда;

-хотим исправить, начинаем редактировать, но нужную нормаль уже не найти, создаётся нормаль от новосозданной неверной точки;

-остаётся только удалить вершину и создать заново (ну или  проекцией, но это в плотном чертеже сложно сделать иногда).

 

Редактирование - не создание нового участка. И именно из-за этого возникает проблема, что послужила началом темы, в том примере привязки "нормаль" нет. Или в другом примере образуются вот эти ваши чистые незамутнённые углы.

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

 

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

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

да, это решило бы один из вопросов. Например, кликая на вершину угла по ПКМ.

Link to comment
Share on other sites

7 минут назад, EdwardSt сказал:

Ну с какого перепугу то?

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

8 минут назад, EdwardSt сказал:

Т.е., целью является получение точки, а не изменение свойств объекта.

вот, я и говорю, что объект существующий.

10 минут назад, EdwardSt сказал:

И то, что сегменты становятся перпендикулярными, - это побочный эффект своеобразной реализации от АС.

в АС работает и тот и другой вариант. Пользователь может выбрать, что ему нужно.

 

14 минут назад, EdwardSt сказал:

кстати, а почему не все?

а зачем все? так же как и зачем нормаль из исходной точки вершины.

 

Хорошо, если посмотреть с другой стороны. Вполне логично, что если мы хватаем крайнюю вершину полилинии с целью ее перемещения, то это по сути новое построение и исходной точкой является предыдущая вершина, из которой выходит сегмент (прямолинейный)? 

Link to comment
Share on other sites

23 минуты назад, CSpace сказал:

Логика при редактировании существующей вершины - нет, она должна отталкиваться от смежной вершины - ведь мы редактируем объект, а не создаём новый сегмент.

Ну неверно это!

 

Спойлер

image.png.0c1eac16cdf0827015c76ea477fc165f.png

 

Спойлер

image.png.7a571c9212910e92c48f73d35f5dd23b.png

 

В обеих системах это способ получения точки, относящейся к объекту, если курсор наведен на этот объект.

Не позиционируется это как средство изменения геометрии объекта!!!!!

 

Просто вы используете лайфхак - побочный эффект своеобразной реализации от АС.

добавлено через 2 минуты
9 минут назад, Михаил_ЛМГТ сказал:

Хорошо, если посмотреть с другой стороны. Вполне логично, что если мы хватаем крайнюю вершину полилинии с целью ее перемещения, то это по сути новое построение и исходной точкой является предыдущая вершина, из которой выходит сегмент (прямолинейный)? 

Во всех случаях исходной точкой является та, которую указал, а не та, которая перед/после (старина Задорнов был провидцем!).

Иначе должен быть конкретный запрос типа "укажите первую точку"

Edited by EdwardSt
Link to comment
Share on other sites

3 минуты назад, EdwardSt сказал:

В обеих системах это способ получения точки, относящейся к объекту, если курсор наведен на этот объект.

Не позиционируется это как средство изменения геометрии объекта!!!!!

дык всё верно. При создании нового объекта - работает. 

При редактировании существующего - работать должно от смежной вершины, будто мы заново пересоздаём этот сегмент)

Link to comment
Share on other sites

14 минут назад, EdwardSt сказал:

Иначе должен быть конкретный запрос типа "укажите первую точку"

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

Edited by Михаил_ЛМГТ
Link to comment
Share on other sites

10 минут назад, EdwardSt сказал:

Нет разделения на создание и редактирование объектов.

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

Точка.

:)

 

33 минуты назад, CSpace сказал:

Логика при редактировании существующей вершины - нет, она должна отталкиваться от смежной вершины - ведь мы редактируем объект, а не создаём новый сегмент.

Допустим:

-создаём сегмент полилинии, случайно цепляемся неверной привязкой не туда;

-хотим исправить, начинаем редактировать, но нужную нормаль уже не найти, создаётся нормаль от новосозданной неверной точки;

-остаётся только удалить вершину и создать заново (ну или  проекцией, но это в плотном чертеже сложно сделать иногда).

 

Редактирование - не создание нового участка. И именно из-за этого возникает проблема, что послужила началом темы, в том примере привязки "нормаль" нет. Или в другом примере образуются вот эти ваши чистые незамутнённые углы.

решите вопрос по этому алгоритму)

 

и кстати

1 час назад, CSpace сказал:

Часто ли вы в работе на практике используете полилинии, привязки с нормалью?

?)

Link to comment
Share on other sites

Допустим:

-создаём сегмент полилинии, случайно цепляемся неверной привязкой не туда;

бывает. И очень часто

-хотим исправить, начинаем редактировать, но нужную нормаль уже не найти, создаётся нормаль от новосозданной неверной точки;

фарш назад не провернуть. Система отработала свое на предыдущем шаге, выполненного пользователем с ошибкой. 

Для этих целей есть команда UNDO со времен царя Гороха

Спойлер

image.png.7da6c2a7fd18d34125580f4c227727a1.png

-остаётся только удалить вершину и создать заново (ну или  проекцией, но это в плотном чертеже сложно сделать иногда).

а что делать? нечего было спешить на шаге 1

Спойлер

image.png.6a5152ca643e6fccdf592185a4f6c585.png image.png.48ca9d82f628d76afb2b61f19464c50c.png image.png.1cecd518f704faa50639b51c1d845117.png image.png.e94dd3e6cfd07ebf3ad25e4df7aa7703.png

 

 

ЗЫ. А чего это так термин "незамутненный" взбодрил? 

 

ЗЫ2. А как вы поступаете с тупыми углами? Вроде, с ними и АС не справляется

 

ЗЫ3. До сегодняшнего дня вашего способа вообще не знал. А так нормалью пользуюсь постоянно. Но именно., как способом нахождения точки на объекте

Edited by EdwardSt
Link to comment
Share on other sites

2 минуты назад, EdwardSt сказал:

Допустим:

-создаём сегмент полилинии, случайно цепляемся неверной привязкой не туда;

бывает. И очень часто

-хотим исправить, начинаем редактировать, но нужную нормаль уже не найти, создаётся нормаль от новосозданной неверной точки;

фарш назад не провернуть. Система отработала свое на предыдущем шаге, выполненного пользователем с ошибкой. 

Для этих целей есть команда UNDO со времен царя Гороха

  или "Отменить" непосредственно при создании (Показать контент)

image.png.7da6c2a7fd18d34125580f4c227727a1.png

-остаётся только удалить вершину и создать заново (ну или  проекцией, но это в плотном чертеже сложно сделать иногда).

а что делать? нечего было спешить на шаге 1

  Хотя можно иногда (не всегда) и так (Показать контент)

image.png.6a5152ca643e6fccdf592185a4f6c585.png image.png.48ca9d82f628d76afb2b61f19464c50c.png image.png.1cecd518f704faa50639b51c1d845117.png image.png.e94dd3e6cfd07ebf3ad25e4df7aa7703.png

 

 

ЗЫ. А чего это так термин "незамутненный" взбодрил? 

Колхоз, одним словом.

Про усложнение, например редактировании проекта после смежника (а то и не дай Боже, субподрядчика), который про орто не знает десятков кабельных трасс и вовсе молчу. 

При том, что нормально можно решить адекватными привязками, а не бодрящими незамутнёными:)

Link to comment
Share on other sites

14 минут назад, CSpace сказал:

Колхоз, одним словом.

Каков пример, таково и решение. Как просили.

 

И что там с тупыми углами, кстати? Какие привязки будут адекватными?

 

49 минут назад, Михаил_ЛМГТ сказал:

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

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

И это повод запросить такую же реализацию  в нане. Хотя интереснее было бы сделать отдельную функцию типа "выравнивание углов" с разными параметрами, чтоб можно было и тупые углы обрабатывать и, может быть, чонить еще.

 

ЗЫ. Интересно, если захватить не за вершину, а за середину сегмента, то используется только одна точка - точка захвата, а не еще дополнительно концы сегмента.

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

Link to comment
Share on other sites

14 часов назад, EdwardSt сказал:

Каков пример, таково и решение. Как просили.

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

15 часов назад, EdwardSt сказал:

ЗЫ2. А как вы поступаете с тупыми углами? Вроде, с ними и АС не справляется

к сожалению да, тут и автокад не справляется, я бы распространил нормаль на проекцию секции редактируемой полилинии (это относится к первому примеру в топике)

14 часов назад, EdwardSt сказал:

И это повод запросить такую же реализацию  в нане. Хотя интереснее было бы сделать отдельную функцию типа "выравнивание углов" с разными параметрами, чтоб можно было и тупые углы обрабатывать и, может быть, чонить еще.

это решит проблему тупого угла, но не решит проблему нормали к другому объекту

15 часов назад, EdwardSt сказал:

ЗЫ3. До сегодняшнего дня вашего способа вообще не знал. А так нормалью пользуюсь постоянно. Но именно., как способом нахождения точки на объекте

ну то есть в работе в не сталкиваетесь, просто флудите на форуме теоретизируя)

15 часов назад, EdwardSt сказал:

А так нормалью пользуюсь постоянно. Но именно., как способом нахождения точки на объекте

не понял. как редактирование полилинии помогает находить точку на объекте? Это же не создание новой секции, нового объекта

Link to comment
Share on other sites

15 часов назад, EdwardSt сказал:

то используется только одна точка - точка захвата, а не еще дополнительно концы сегмента.

так а зачем в этом случае дополнительно концы сегмента? что с ними делать-то. 

15 часов назад, EdwardSt сказал:

Хотя интереснее было бы сделать отдельную функцию типа "выравнивание углов"

Отдельная функция потребует больше телодвижений для получения результата как мне кажется. 

 

Что касается полилинии, я бы лучше добавил растягивание вдоль сегмента.

Link to comment
Share on other sites

1 час назад, CSpace сказал:

не понял. как редактирование полилинии помогает находить точку на объекте? Это же не создание новой секции, нового объекта

С такой упертостью никогда и не удастся понять.

Привязка - это не средство редактирования полилинии.

Это средство преобразования тычка на экране в районе объекта в точку с координатами, характерными для этого объекта(ов).

Вот когда дойдет это, тогда и не будет нелепых выводов о неработающих привязках, рандомных углах и прочей ереси.:poka:

 

43 минуты назад, Михаил_ЛМГТ сказал:

так а зачем в этом случае дополнительно концы сегмента? что с ними делать-то.

то же, что и в случае захвата вершины, - получение нормали из самой точки захвата и из смежных вершин.

Зачем несколько точек? Не знаю. Можно чонить придумать.

До вчерашнего дня не знал, что захват вершины в АС почему-то включает и смежные вершины в рассмотрение.

(Офф. Знал, что есть микроскопы, знал, что есть гвозди, теперь узнал, что иногда очень сподручно эти вещи увязываются)

 

Тут поэкспериментировал с привязкой типа "касательная". С ней еще похлеще.

При захвате вершины полилинии с помощью нормали можно получить 3 точки на объекте, а с помощью касательной уже 6. 

Причем, визуально определить, какая из них тебе подходит

Спойлер

image.png.80f2fb9ff11575f494fb09b0b25408d3.png

 

1 час назад, Михаил_ЛМГТ сказал:

Отдельная функция потребует больше телодвижений для получения результата как мне кажется. 

Согласен. Но результат будет универсальным.

Можно попробовать добавить контекстное меню для сегмента пунктом (названия рабочие) 

Спойлер

image.png.616662b559961d447022f876a548e20d.png

 

или контекстное меню вершины пунктом

Спойлер

image.png.4c78eeccd0e9a46bf389397e0882e65f.png

 

Link to comment
Share on other sites

38 минут назад, EdwardSt сказал:

С такой упертостью никогда и не удастся понять.

Привязка - это не средство редактирования полилинии.

Это средство преобразования тычка на экране в районе объекта в точку с координатами, характерными для этого объекта(ов).

Вот когда дойдет это, тогда и не будет нелепых выводов о неработающих привязках, рандомных углах и прочей ереси.:poka:

так предлагал вам, сделайте комикс понятный.

Мы рассматриваем ситуацию редактирование полилинии, смещение её существующей вершины. В этой теме нет других ситуаций. 

Только редактирование полилинии, с нормалью по отношению к себе (другому сегменту)(1) или нормалью по отношению к другому объекту (2).

 

Практическое применение (их же миллион, как вы говорили) данной ситуации. Без вашего словофлудия, реальные практики. 

 

38 минут назад, EdwardSt сказал:

До вчерашнего дня не знал, что захват вершины в АС почему-то включает и смежные вершины в рассмотрение.

:lol::lol::lol:

38 минут назад, EdwardSt сказал:

Но результат будет универсальным.

как эта универсальность поможет при построении нормали к другому объекту при редактировании полилинии?

Edited by CSpace
Link to comment
Share on other sites

Примера из практического применения, увы, нет.

Непосредственное проектирование для меня - позавчерашний день.

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

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

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

  • Like 1
Link to comment
Share on other sites

1 час назад, EdwardSt сказал:

Примера из практического применения, увы, нет.

Непосредственное проектирование для меня - позавчерашний день.

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

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

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

Ну в целом вот и ответ:) 

Вы путаете свой рабочий процесс, где вы, далёкие от практической работы, даёте всем мудрые советы как делать иначе, если как дОлжно не получается - бывает такое - с обсуждением проблемы функционала программы, который стоило бы исправить.

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

Edited by CSpace
Link to comment
Share on other sites

Добавлю, что записано не только по нормали, но и по касательной (вроде даже до обсуждения здесь).
Логика в принципе одна и та же.
И добавлю. Настолько востребованы оказались данные возможности, что за всю историю первый запрос на реализацию.
Автору отдельное спасибо. Не документированные возможности можно обнаружить только на практике.
 

  • Like 3
Link to comment
Share on other sites

В 29.12.2022 в 16:13, oVal сказал:

но и по касательной (вроде даже до обсуждения здесь)

Читаете мысли!

  • Like 1
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...