|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
JavaScript. nanoCAD 5. Округление координат объектов с учетом ПСК
Инженер-философ
Хабаровск
Регистрация: 24.04.2019
Сообщений: 2,055
|
||
Просмотров: 4926
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,377
|
Вопрос в том, в какой системе координат ты получаешь точки. Для отрезка / сплайна / точки / 3d-полилинии они (если не ошибаюсь) - в мировой. Для других типов объектов - в ОСК.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Посмотрел код по диагонали. Очень рекомендую автору внимательно ознакомиться с методом Math.Round и его перегрузками, там есть на что посмотреть. Потом, порекомендую вспомнить про ограничения двоичной систем счисления по отношению к числам с плавающей точкой и округлять координаты отрезков не бездумно, а как минимум с сохранением вектора прямой.
|
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055
|
Перегруженный округлятор в .NET есть, а в JavaScript он просто к ближайшему целому округляет, или я что-то путаю? В гугле все примеры с округлением на скриптах именно через умножить/поделить.
Цитата:
А разве можно округлить обе вершины отрезка в общем случае так, чтобы направление сохранилось? |
|||
![]() |
|
||||
КЖ; C# Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,611
|
Нубий-IV, Часто в чертежах, при пороговых значениях происходит округление координат вершин в разные стороны
![]() (Зеленая - исходная, красная - результат) и отследить это сложно, а если речь идет о строительных чертежах, то при округлении координат нужно учитывать сетку и вектора осей. =( Если я правильно помню, то в общем случае это задача нахождения наименьшего общего делителя или что то подобное. Последний раз редактировалось Boxa, 29.04.2019 в 15:15. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055
|
Цитата:
![]() ![]() Фокус в том, что скрипт все равно работает, и именно так, как надо - и в МСК координаты становятся круглыми, и в ПСК, для всех видов объектов, независимо от их способа хранения координат. Поразбираюсь в ближайшее время, почему это мне так повезло. upd Проверил - точно, есть ошибка. Раньше работал только на планах. Когда ось Z у ПСК вертикальна, ошибка не проявлялась, а в наклонных ПСК полилинии округлялись неправильно. Ошибку исправил, программу обновил. Последний раз редактировалось Нубий-IV, 05.05.2019 в 14:30. |
|||
![]() |
|
||||
Инженер-философ Регистрация: 24.04.2019
Хабаровск
Сообщений: 2,055
|
Цитата:
![]() Сваял наскоро тестовый чертеж, проверил свой скрипт и несколько лиспов с форума. Результаты - на картинке, чертеж - во вложении (кому интересно - округлять до целых). Танцуют все! Хотя, конечно, на конкурсе "округлятор хренов" я занял почетное первое место. По-хорошему, надо отслеживать: - изменение угла поворота, в том числе для линий, не параллельных осям - касание вершинами - касание вершиной к другим линиям (в том числе к кругам, эллипсам и сплайнам) - для трехмерных схем (планы зданий на разных этажах) еще и совпадение с вершинами и линиями на других этажах Получается, округлять объекты поодиночке не выйдет, это может нарушить связи между ними. Напрашивается решение в три прохода:
![]() Где-нибудь можно подсмотреть готовое решение, чтобы не терять время, или эту задачу полностью еще никому не удалось решить? |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
При завершении копирования (copy) нескольких выделенных объектов, исходный остается активным. AutoCAD 2017. | OlegPVQ | AutoCAD | 13 | 15.11.2018 01:59 |
Округление координат, полилиний, центров окружностей, блоков | MA2 | Программирование | 44 | 15.01.2015 15:19 |
Кривая работа аннотативных объектов, созданных в пространстве модели. | hwd | AutoCAD | 16 | 23.08.2013 18:16 |
Возможно ли извлекь данные точек на плоскости с учетом ПСК | Alexg-12 | AutoCAD | 2 | 24.10.2012 14:54 |
управление системой координат Автокад из Делфей | Владимир В | Программирование | 12 | 27.04.2005 09:54 |