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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Где хранятся данные о координатах отображения вюпорта, и как их программно изменить?

Где хранятся данные о координатах отображения вюпорта, и как их программно изменить?

Ответ
Поиск в этой теме
Непрочитано 25.03.2008, 09:58 #1
Где хранятся данные о координатах отображения вюпорта, и как их программно изменить?
Red Nova
 
ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Торонто
Регистрация: 23.10.2007
Сообщений: 1,980

Вопрос следующий. Где хранятся данные о координатах отображения вюпорта, и как их можно изменить программно? Скажем отметить несколько вюпортов и задать смещение их содержимому дельта Х, дельта У. Это может оказаться очень полезным при переброске листов между файлами, когда необходимо изменить координату вставки объектов в модели.
Просмотров: 4135
 
Непрочитано 27.03.2008, 09:36
#2
Makswell

Инженер-строитель
 
Регистрация: 15.08.2007
Киров
Сообщений: 2,204


Здесь есть кое-что по этому поводу
Makswell вне форума  
 
Автор темы   Непрочитано 27.03.2008, 11:24
#3
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Makswell,
Спасибо, нашел по ссылке
Цитата:
Модифицированная программа. Возвращает список координат ВЭ в пространстве листа и модели
Код:
Код:
[Выделить все]
;|============================================================================== 
*  Получение списка списков точек вершин ВЭ листа в координатах листа и модели 
*  При активном пространстве  *Model* возвращает t. Если ВЭ не существует, 
*  возвращает nil. 
*  Структура списка ((Точки_ВЭ1_Лист Точки_ВЭ1_Модель) ... (Точки_ВЭN_Лист Точки_ВЭN_Модель)) 
*  http://www.autocad.ru/cgi-bin/f1/board.cgi?t=27187wE 
=============================================================================|; 
(defun _kpblc-get-point-viewport ( / t10 t12 m res1 res2) 
  (cond 
    ((mapcar 
       '(lambda (x / res1) 
          (if (cdr (assoc 340 x)) 
            (setq res1 (mapcar 'cdr 
                               (vl-remove-if-not 
                                 '(lambda (b) (= (car b) 10)) 
                                 (entget (cdr (assoc 340 x))) 
                                 ) ;_ end of vl-remove-if-not 
                               ) ;_ end of mapcar 
                  ) ;_ end of setq 
            (setq 
              res1 (list 
                     (list (- (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.)) 
                           (- (caddr (assoc 10 x)) (/ (cdr (assoc 41 x)) 2.)) 
                           ) ;_ end of list 
                     (list (+ (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.)) 
                           (- (caddr (assoc 10 x)) (/ (cdr (assoc 41 x)) 2.)) 
                           ) ;_ end of list 
                     (list (+ (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.)) 
                           (+ (caddr (assoc 10 x)) (/ (cdr (assoc 41 x)) 2.)) 
                           ) ;_ end of list 
                     (list (- (cadr (assoc 10 x)) (/ (cdr (assoc 40 x)) 2.)) 
                           (+ (caddr (assoc 10 x)) (/ (cdr (assoc 41 x)) 2.)) 
                           ) ;_ end of list 
                     ) ;_ end of list 
              ) ;_ end of setq 
            ) ;_ end of if 
     (setq t10 (cdr(assoc 10 x));_Координаты центра ВЭ в листе 
      t12 (cdr(assoc 12 x));_Координаты центра ВЭ в Модели 
             m (/ (cdr(assoc 45 x))(cdr(assoc 41 x))) ;_Коэфф. пересчета в модель 
          res2 (mapcar '(lambda(y)(mapcar '+ (mapcar '* (mapcar '- y t10)(list m m m)) t12)) res1) 
      ) 
     
          (list res1 res2) 
          ) ;_ end of lambda 
       (vl-remove-if 
         '(lambda (x) 
            (equal (cdr (assoc 10 x)) (getvar "viewctr") 1e-3) 
            ) ;_ end of LAMBDA 
         (mapcar 'entget 
                 (_kpblc-conv-selset-to-ename 
                   (ssget "_X" 
                          (list '(0 . "VIEWPORT") 
                                (cons 410 (getvar "ctab")) 
                                ) ;_ end of list 
                          ) ;_ end of ssget 
                   ) ;_ end of _kpblc-conv-selset-to-ename 
                 ) ;_ end of mapcar 
         ) ;_ end of vl-remove-if 
       ) ;_ end of mapcar 
     ) 
    (t (_kpblc-get-active-space)) 
    ) ;_ end of cond 
  ) ;_ end of defun

Использующиеся функции:
_kpblc-conv-selset-to-ename
_kpblc-get-active-space берем выше
Пример использования

Код:
[Выделить все]
Код: 

;;Пример использования 
;;Рисует полилинию по границам ВЭ в модели 
(defun C:TEST () 
  (vl-load-com) 
  ;Видовой экран должен быть 
  (mapcar '(lambda (ret) 
        (setq point_list_ctab (car ret) 
         point_list_model (cadr ret) 
         crs (apply 'append point_list_model) 
         var (vlax-make-variant (vlax-safearray-fill 
             (vlax-make-safearray vlax-vbDouble 
          (cons 0 (1- (length crs)))) crs)) 
         ) 
        ;Добавляем полилинию в модель 
        (vla-put-closed (vla-addLightWeightPolyline (vla-get-ModelSpace(vla-get-activedocument(vlax-get-acad-object))) var) :vlax-true) 
        ) 
     (_kpblc-get-point-viewport) 
     ) 
  (princ) 
  )
Чувствую что приблизительно то что надо, но как юзать так и не понял. Может товарищи разработавшие это дело помогут?
Я это про VVA и kpblc.
Red Nova вне форума  
 
Непрочитано 31.03.2008, 10:41
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Тема про вьюпорты еще здесь рассматривалась:Как разнести листы по разным файлам . В этих ф-циях есть один минус, они не учитывают местную (хранящуюся во вьюпорте) и мировую СК. Как вариант обхода этой проблемы лисп из #42
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 01.04.2008, 14:11
#5
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


Попробуй команду VPO по ссылке из #4
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 01.04.2008, 15:08
#6
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


Насколько я понял это для другого.
цитирую
Цитата:
Рисует полилинию по границам ВЭ в модели
А мне надо следующее

Цитата:
Где хранятся данные о координатах отображения вюпорта, и как их можно изменить программно? Скажем отметить несколько вюпортов и задать смещение их содержимому дельта Х, дельта У.
По моему про разные вещи. Может я что упустил?
Red Nova вне форума  
 
Непрочитано 02.04.2008, 12:16
#7
ытя


 
Регистрация: 23.09.2005
СПб
Сообщений: 425


Где хранятся данные о координатах отображения вьюпорта
Цитата:
Viewport group codes

17 View target point (in WCS) DXF: X value; APP: 3D vector
ытя вне форума  
 
Непрочитано 02.04.2008, 21:54
#8
dextron3

проектировшик
 
Регистрация: 01.01.2007
СССР
Сообщений: 5,143


VVA, как ты можешь запоминать столько постов на которые ссылки даешь... я много не пишу и то свое не могу вспомнить...
__________________
инженер проектировшик с опттом программа авто гад образование высшие
dextron3 вне форума  
 
Автор темы   Непрочитано 02.04.2008, 22:03
#9
Red Nova

ՃԱՐՏԱՐԱԳԵՏ, Տ.Գ.Թ.
 
Регистрация: 23.10.2007
Торонто
Сообщений: 1,980
Отправить сообщение для Red Nova с помощью Skype™


ытя, Не очень понял что это значит.
Red Nova вне форума  
 
Непрочитано 03.04.2008, 09:24
#10
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,992


>dextron3 Посмотри что у тебя в "Мой кабинет" в листе подписок
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Где хранятся данные о координатах отображения вюпорта, и как их программно изменить?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46