Округление координат
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Округление координат

Округление координат

Ответ
Поиск в этой теме
Непрочитано 25.02.2014, 16:06 #1
Округление координат
ciril
 
САПР
 
СПб
Регистрация: 29.09.2011
Сообщений: 283

LUPREC в 8, к командной строки запрашиваю _id вершины полилинии - получаю до 8 знака, (getpoint) - получаю до 2, (entget (car (entsel))) список полилинии, координаты вершин округлены, то же (vla-ename->vla-object (car (entsel))).
Как мне получить программным способом неокругленные координаты, и отчего они вообще округляются в dxf-кодах.
Просмотров: 3292
 
Непрочитано 25.02.2014, 16:13
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411


Они не округляются, а показываются округленными.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 25.02.2014, 16:26
#3
ciril

САПР
 
Регистрация: 29.09.2011
СПб
Сообщений: 283


и извлекает он их и пишет в файл тоже округленными:
Код:
[Выделить все]
 (repeat (cdr (assoc 90 список))
                   (setq узлы (append узлы (list (setq текущий (assoc 10 список))))
                         список (cdr (member текущий список))))
(prin1 узлы файл)
поправлюсь, как извлечь в файл неокругленные координаты.

----- добавлено через ~18 ч. -----
Способ перевода числа в строку и запись ее princ действенный, но кривой, по-моему. И все равно остается вопрос, почему при отображении числа округляется до 2го знака, а не, скажем до 4го.
ciril вне форума  
 
Непрочитано 02.05.2014, 00:08
#4
480725


 
Регистрация: 06.10.2007
Москва
Сообщений: 132


Прочитал, текст программы не понял, но заинтересовался: а у меня какой LUPREC.
Оказалось 0!
С ужасом нарисовал полилинию, далее привожу текстовый экран автокада (скопированный через буфер обмена):

Команда: (entget(entlast))
((-1 . <Имя объекта: 7eb54ac8>) (0 . "LWPOLYLINE") (330 . <Имя объекта:
7eb51d18>) (5 . "15971") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 .
"00") (62 . 9) (6 . "Continuous") (100 . "AcDbPolyline") (90 . 4) (70 . 0) (43
. 0.0) (38 . 0.0) (39 . 0.0) (10 12191.4 16773.5) (40 . 0.0) (41 . 0.0) (42 .
0.0) (10 13226.9 18981.7) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 13710.1 17532.6)
(40 . 0.0) (41 . 0.0) (42 . 0.0) (10 14710.2 17532.6) (40 . 0.0) (41 . 0.0) (42
. 0.0) (210 0.0 0.0 1.0))
Все-таки 1 знак после запятой присутствует!

Команда: (rtos(car(cdr(assoc 10(entget(entlast)))))2 12)
"12191.35465320537" - в вычислениях участвует истинное значение
Замена значения LUPREC на 8 ситуацию не изменила.

Потом перечитал определение LUPREC - количество дробных знаков при выводе линейных единиц
и проверил на линейных величинах:


Команда: luprec

Новое значение LUPREC <8>: 0

Команда: _dist
Первая точка: Вторая точка: 1.56789

Расстояние = 2, Угол в плоскости XY = 354, Угол от плоскости XY = 0
Дельта X = 2, Дельта Y = 0, Дельта Z = 0

Команда: _distance

DISTANCE = 2 (только чтение)
Команда: (rtos(getvar"distance")2 8)
"1.56789000"

Мораль LUPREC точек (чисел в списках) никак ни касается, касается только чисел, при этом речь только об их представлении на экране, в вычислениях и логических операциях фигурируют реальные значения. Что и следовало ожидать.
480725 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Округление координат



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Округление координат кратно значению baaba Готовые программы 46 25.04.2025 00:35
Округление координат, полилиний, центров окружностей, блоков MA2 Программирование 44 15.01.2015 15:19
округление подписей координат в атрибутах блока АлексЮстасу AutoCAD 4 19.07.2010 13:35
Помощь по Лире Серега М Лира / Лира-САПР 52 28.05.2007 02:47