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

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

Как пересчитать координаты Модели в Лист и наоборот

Ответ
Поиск в этой теме
Непрочитано вчера, 07:12 #1
Как пересчитать координаты Модели в Лист и наоборот
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 626

Всем привет!

Напомните, плиз - где-то видел программу которая пересчитывала
угловые точки видового экрана в соответствующие координаты
пространства Модели.

Собственно, нужно решить две задачи.

1) Отобразить в Модель видовой экран.
Для простоты - начертить в Пространстве Модели прямоугольник,
соответствующий границам видового экрана.

2) Пересчитать координаты точек Модели в пространство Листа.
Для простоты - в Модели есть отрезок, который мы видим
из Листа через Видовой Экран. Нужно построить на его
концах два круга, но только в пространстве Листа.
Нужно получить точки их центров (они же - концы отрезка)
в координатах пространства Листа.

Мне нужен только механизм пересчёта координат, всё остальное
написанное - просто для понимания задачи.
__________________
Счастливо, Алексей!
Просмотров: 226
 
Непрочитано вчера, 07:38
#2
Кулик Алексей aka kpblc
Moderator

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


Ну так смотри DXF Reference на предмет VIEWPORT, все эти данные вроде бы там должны быть.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано вчера, 08:02
1 | #3
AlexCondor

инженер
 
Регистрация: 03.08.2007
Сообщений: 1,414


Это Viewport Outline
AlexCondor вне форума  
 
Автор темы   Непрочитано вчера, 08:17
#4
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 626


Да, я её и имел ввиду. Спасибо!

Осталось задачу №2 решить.

----- добавлено через ~53 мин. -----
Собственно, реальная задача такая:

Есть Лист с объектами, в нём видовой экран, через
который тоже видны какие-то объекты.

Некоторые из них (и в Модели м в Листе) попадают
в некую выборку и должны быть отмечены на экране
временными маркерами, чтобы проектировщик обратил
на них внимание.

Маркеры формируются через функцию (grvecs ...) - разные
цвета и фигуры, не суть.

Нужно, чтобы ВСЕ эти маркеры одновременно были видны
на экране. И для объектов Модели и для объектов Листа.
И показывали верно - на нужные объекты.

В Автокаде всё у меня работало, в nanoCAD-23.1 - не получается.

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

Есть мысль собрать точки объектов Модели, пересчитать их в
точки Листа, а затем, переключившись в Лист, одним махом
отметить и эти точки и точки объектов Листа.

Но если, кто подкинет мысль, как в NC сделать это же самое
альтернативным способом - то тоже вариант.
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Автор темы   Непрочитано вчера, 13:45
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 626


Вроде бы нашёл в интернете упоминание о некоей функции
WCS2DCS (вероятно перевод МСК в Дисплейную (?) СК),
но ссылок на неё найти не могу, а раскручивать в обратную
сторону функцию PCS2WCS пока нет времени.

Кому-нибудь попадалось что-то вроде этого?
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Автор темы   Непрочитано сегодня, 09:08
#6
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 626


Понятное дело, что "в лоб" задачу №2 можно решить по алгоритму:

- Входим из Листа через ВЭ в пространство Модели
- Даём (trans (trans p1 2 3) 0 2)
где p1 - точка Модели в МСК
- Получаем точку отражения Модели на Лист через данный ВЭ

Но!

1) Не хочется терять время на переходы Лист/Модель/Лист
2) Этот способ не универсальный - в NC23.1 всё работает верно,
а вот в AutoCAD (по крайней мере, в версии 2016) - врёт безбожно.
На "ровненьких" ВЭ с масштабом 1=1 ошибка уже в первом знаке
после запятой, а на ВЭ с масштабированием вообще чушь получается.
На более поздних АС проверить не могу - может быть уже и поправили.

Кто-нибудь решал эту задачу по принципу функции PCS2WCS, но
"в обратную сторону", через матрицу преобразований, собранную
из параметров ВЭ ?
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Автор темы   Непрочитано сегодня, 11:50
#7
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 626


Можно, конечно, для ускорения процесса (и только как частный случай для NC)
при вызове программы один раз сходить из Листа в ВЭ(ы) вычислить вектор(ы)
пересчёта координат Модели в Лист и применять его ко всем найденным точкам.

Но всё равно неспортивно оно как-то...
Надо матрицу пересчёта делать по-хорошему.

В чем физический смысл DXF-12 у ВЭ ?
__________________
Счастливо, Алексей!
===AAA=== на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как пересчитать координаты Модели в Лист и наоборот



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
А как определить, где у меня на модели конкретный лист? fastline AutoCAD 31 08.12.2019 23:16
Autocad2017_Как изменить вес линии при печати. Когда добавил на лист деталь из пространства модели? ame47 AutoCAD 1 03.07.2017 08:35
Autocad 2015 Случайное переключение с модели на лист Konstruktiv54 AutoCAD 4 17.04.2015 15:05
Необходимо каждый слой модели переместить на новый лист с тем же именем dallaskassel Программирование 27 29.08.2011 13:35
Глюк с модели в лист kitep AutoCAD 6 10.03.2007 00:11