|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Не хватает функции TraceACE
----- добавлено через ~8 мин. ----- Еще вариант отсюда (требуется регистрация) Код:
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Ее хватает - из Вашего же PlTools. Приведенный мной фрагмент используется в программе.
Мой вопрос был о точности. Программа от Gile из Вашего #8 делала не точный контур. Приведенный мной фрагмент дает точный контур. Дуговые сегменты позволяют ее достичь. Но работает медленно. Или не работает.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Обновил #8
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
__________________
количество моих сообщений не говорит о знании Автокада Последний раз редактировалось АлексЮстасу, 27.06.2023 в 20:26. |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Там командный метод
На полных эллипсах вроде код Gile не отличается от команды эллипс с PELLIPSE=1 Обновил #8 E2P - для полных эллипсов используется ф-ция gile E2PCMD - полные эллипсы строятся командным методом (PELLIPSE=1)
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
Обе команды одинаково преобразуют эллиптические дуги. И обе же одинаково зависают на полных эллипсах. В принципе, зачем две команды? Тем более, что они делают/не делают одинаково...
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Отличие в методах. В команде E2PCMD используется команда "Эллипс" с установкой pellipse=1, в команде E2P функция gile (считается геометрически). Выложи или пришли пример, в котором виснет.
----- добавлено через ~39 мин. ----- АлексЮстасу, Я еще раз обновил #8 Отказался от ф-ции gile для полных эллипсов. Пересмотрел граничные условия для написанной ф-ции для неполных элипсов. Тестируй
__________________
Как использовать код на Лиспе читаем здесь Последний раз редактировалось VVA, 29.06.2023 в 12:07. |
|||
![]() |
|
||||
Почему-то виснут обе команды.
![]() Обычный эллипс, начерченный когда-то от балды. 2018, Map/Civil, сохранен в 2004.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Я не могу повторить твой эллипс, но вижу что он есть.
Функция TraceAce считала, что начальный и конечный угол полного эллипса 0 - 360, но может быть и 90-90 как у тебя и 180-180 и 270-270. Из-за этого был бесконечный цикл. Поправил логику обновил #8
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Я умудрился сваять какой-то неправильный эллипс?
![]() Цитата:
E2P теперь преобразует достаточно быстро и эллипсы, и эллиптические дуги. О точности (вторая проблема - #20). Пардон, если отморожу - я ничего не понимаю в коде, и математику не знал, но забыл. ![]() Вижу в коде то Код:
Код:
Может быть точность будет лучше, если "1e-6" заменить на "1e-8" или т.д.?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
можешь поправить и до 1e-6. Эти строки проверяют конечный угол и сравнивают его с 2*pi, т.е 360 градусов с точностью до 1e-x. Я обычно использую 1e-6, т.е до 0,000001. Автор этой функции использовал 1e-12, т.е. 0,000000000001. Но это сравнение с углом 360 градусов, поэтому можешь заменить и на 1e-8 или оставить как есть.
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Сейчас я намерил расхождения в 4-5 знаке.
Возможно, этот эллипс был не непосредственно вручную начерчен. Кажется, я разбирался со штриховками, и этот эллипс мог получиться восстановлением границы штриховки.
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
АлексЮстасу, Мне тоже не получилось создать такой эллипс штатными средствами автокада, возможно он был создан программно каким-то приложением.
Значит надо оставить 1e-3. В функции TraceACE за количество полученных сегментов отвечает Цитата:
Далее количество точек получается как разница между начальным и конечным углом эллипса (для полного эллипса 360 градусов или 2*pi радиан. Здесь и была ошибка для твоего эллипса) Цитата:
Цитата:
----- добавлено через ~5 мин. ----- Мне просто интересно, насколько критично для геодезии шаг в 5 градусов. Чтобы были большие расхождения, эллипсы должны быть больших размеров, а что может описываться эллипсом такого размера? Московская область, включая г.Москва?
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Цитата:
Я сейчас не про геодезию. ![]() Смотрел программку, определяющую положение точек относительно контуров [штриховок]. Контуры делались полилиниями из эллипсов, окружностей, сплайнов и пр. Тогда стали попадаться случаи, когда точки внутри или на границе определялись как внешние и наоборот. Оказалось, что дело в точности повторения этими полилиниями кривых. Я путаюсь - уменьшить с 6 до 3, разве не ухудшить точность?
__________________
количество моих сообщений не говорит о знании Автокада |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Это сравнения угла эллипса с углом в 360 градусов, представленных в радианах, чтобы определить, это полный эллипс или эллиптическая дуга.
Сравнение до 1e-3=0,001 рад= 0.0572958 градуса или 0°3'26" Т.е. если ты начертишь эллиптическую дугу в внутренним углом в 359°56'34", то сравнение до 1e-3 может посчитать это полным эллипсом и ты получишь замыкающий сегмент в виде полилинии
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |