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

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

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

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

Всем привет!

Есть такая задача (излагаю упрощенно):

В пространстве Листа есть видовой экран, через который
мы смотрим на пространство Модели. В Модели нарисован
прямоугольник, координаты углов которого (для пространства
Модели) мы знаем - пусть это будет 100,100 и 200,200.

Как узнать, в каких координатах пространства Листа
окажутся его углы, видимые через видовой экран?

Интерактивно - проще простого - навел на них мышь,
посмотрел на статусную строку. Но нужно получить
эти значения программно.

Может, есть какая-нибудь функция, на входе которой
координаты пространства модели и [номер видового экрана]?

Счастливо, Алексей.
__________________
Счастливо, Алексей!
Просмотров: 8938
 
Непрочитано 09.09.2005, 08:43
#2
dermoon


 
Регистрация: 26.08.2003
Россия, Красноярск
Сообщений: 1,252


Так а чем команда "_ID" не годится? Находясь в пространстве листа тыкаешь в нужную точку объекта, видимого через вид. экран, можно объектную привязку использовать, и смотришь в командной строке ее координаты, вернее координаты ее места в пространстве листа.
dermoon вне форума  
 
Автор темы   Непрочитано 09.09.2005, 08:57
#3
===AAA===


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


Привет.

Спасибо за ответ, но увы, он не соответствует поставленной задаче.

...Но нужно получить эти значения программно.

Т.е. ничего никуда не тыкать - задал функции некие координаты,
пространства Модели, получил координаты пространства Листа,
засунул их в переменную через (setq ...)

Это же раздел конференции "Программирование" :-)
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 09.09.2005, 09:02
#4
Лентяй

Project Engineer
 
Регистрация: 05.01.2005
Лос Анджелес
Сообщений: 1,392


Если в первом приближении, то так:
Код:
[Выделить все]
(defun TT ( / pt)
(setvar "TILEMODE" 0)
(if (= (getvar "CVPORT") 2) (progn (setq pt (getpoint "\Select Point"))
   (print (trans pt 2 3)))
(alert "\Go into Viewport's Model Space you Idiot and Start Over!"))
);end
А ежели совсем прграммно, то так:
Код:
[Выделить все]
(defun TT (pt)
(setvar "TILEMODE" 0)
(if (= (getvar "CVPORT") 2) (setq ptl (trans pt 2 3))
(alert "\Go into Viewport's Model Space you Idiot and Start Over!"))
);end
Ну, а если кж совсем серьезно, особенно когда операция производится из Model_Tab, тогда так:
Код:
[Выделить все]
(defun TT (pt / cp cpl x0 x1 y0 y1)
  (setq	adoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  (if (= (vla-get-ActiveSpace adoc) 0)
    (setq vp (vla-get-ActivePViewport adoc)
          ptl (trans pt 2 3));setq
    (progn (vlax-for vp (vla-get-paperSpace adoc)
        (if (= (vla-get-ObjectName vp) "AcDbViewport") (progn
            (setq cp (cdr (assoc 12 (entget (vlax-vla-object->ename vp))))
                  cpl (vla-get-Center vp)
                  x0 (- (car cp) (/ (vla-get-Width vp) (vla-get-CustomScale vp) 2))
                  x1 (+ (car cp) (/ (vla-get-Width vp) (vla-get-CustomScale vp) 2))
                  y0 (- (cadr cp) (/ (vla-get-Height vp) (vla-get-CustomScale vp) 2))
                  y1 (+ (cadr cp) (/ (vla-get-Height vp) (vla-get-CustomScale vp) 2)));setq
            (if (and (<= x0 (car pt) x1) (<= y0 (cadr pt) y1))
              (setq ptl (mapcar '(lambda (x y z) (+ x (* (- y z) (vla-get-CustomScale vp))))
                          (list cpl cp cpt))));if
              ));if
      ));progn
  );if
);end
Лентяй вне форума  
 
Автор темы   Непрочитано 09.09.2005, 09:31
#5
===AAA===


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


Привет!

> (trans pt 2 3)

Это как раз то, что нужно. Спасибочки.
__________________
Счастливо, Алексей!
===AAA=== на форуме  
 
Непрочитано 24.10.2007, 21:51
#6
Goodwin S.G.

AutoCAD, 3d Max
 
Регистрация: 11.04.2006
Ульяновск
Сообщений: 23
<phrase 1=


ПОдскажите пожалста куда эти коды ставить??
__________________
Кузен
Goodwin S.G. вне форума  
 
Непрочитано 24.10.2007, 22:09
#7
Огурец

Profan
 
Регистрация: 27.04.2005
Москва
Сообщений: 6,752
Отправить сообщение для Огурец с помощью Skype™


Цитата:
Сообщение от Goodwin S.G. Посмотреть сообщение
ПОдскажите пожалста куда эти коды ставить??

Посмотрите http://dwg.ru/art/8
Огурец вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как перевести координаты Модели в координаты Листа?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск