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

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

Масштаб экрана

Ответ
Поиск в этой теме
Непрочитано 03.12.2004, 13:35 #1
Масштаб экрана
Apelsinov
 
Проектировщик ВК. LISP-любитель.
 
Москва
Регистрация: 15.12.2003
Сообщений: 1,202

Можно ли, и как, найти текущий масштаб экрана.
Поясню: нужно найти какая площадь в единицах акада проецируется на экран.
Для чего: в программке временно создаю штриховку, нужно задать такой масштаб для нее, чтобы в текущем виде она отображалась коректно.
Просмотров: 3935
 
Непрочитано 03.12.2004, 13:41
#2
AY


 
Сообщений: n/a


Теоретически если узнать диагональ мнитора, экранное разширение и координаты рабочей области в пикселях, то наверное можно сделать кое-каие выводы может и не слишком точные, но вероятно достаточные. Однако как достать эти настройки програмно не знаю разве что задать их самому.
 
 
Непрочитано 03.12.2004, 14:39
#3
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Размеры текущего вьюпорта найти можно. Но работает это как то "кривовато". Пока не переключишся в один из Layouts и не вернешся обратно, правильных размеров не получается и Regen не помогает. Попробуйте:
Код:
[Выделить все]
(defun Viewport_Dimensions (/ actDoc actVp)
(vl-load-com)
  (setq actDoc(vla-get-ActiveDocument
		 (vlax-get-acad-object)))
  (vla-put-ActiveLayout actDoc(vla-item(vla-get-Layouts actDoc)1))
  (vla-put-ActiveLayout actDoc(vla-item(vla-get-Layouts actDoc)"Model"))
       (setq actVp(vla-get-ActiveViewport actDoc))
  (list
	(vla-get-Width actVp)
	(vla-get-Height actVp)
    ); end list
  ); end of Vieport_Dimensions
{Smirnoff} вне форума  
 
Непрочитано 03.12.2004, 15:01
#4
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Помогает сохранение:
Код:
[Выделить все]
(defun Viewport_Dimensions (/ actDoc actVp)
(vl-load-com)
  (setq actDoc(vla-get-ActiveDocument
		 (vlax-get-acad-object)))
  (vla-save actDoc)
  (setq actVp(vla-get-ActiveViewport actDoc))
  (list
	(vla-get-Width actVp)
	(vla-get-Height actVp)
    ); end list
  ); end of Viewport_Dimensions
{Smirnoff} вне форума  
 
Автор темы   Непрочитано 03.12.2004, 16:49
#5
Apelsinov

Проектировщик ВК. LISP-любитель.
 
Регистрация: 15.12.2003
Москва
Сообщений: 1,202
<phrase 1=


>Fantomas,
да, спасибо, это то что нужно.
НО: первый вариант глючил, но странно, в одних файлах все в порядке - никаких глюков, в других совершенно непонятные результаты.
второй вариант замечателен во всех случаях, но не подходит из-за сохранения.

Вопрос: зачем в первом было
Код:
[Выделить все]
(vla-put-ActiveLayout actDoc(vla-item(vla-get-Layouts actDoc)1)) 
  (vla-put-ActiveLayout actDoc(vla-item(vla-get-Layouts actDoc)"Model"))
Apelsinov вне форума  
 
Непрочитано 03.12.2004, 17:24
#6
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


>Apelsinov

Это просто переключение из Mодели в Layout1 и обратно. Сейчас еще поэксериментирую чтобы без сохранения работало. Дело в том что значения высоты и ширины вьюпорта запоминаются один раз при создании, сохранении или когда вьюпорт становиться активным (что я делал переключаясь в лист и обратно) и не изменяются при зуме.
{Smirnoff} вне форума  
 
Непрочитано 03.12.2004, 17:38
#7
{Smirnoff}

Инженер по системам безопасности
 
Регистрация: 23.11.2003
Рига
Сообщений: 1,099


Вот более изящное переключение. Хотя совсем не супер из за мерцания экрана в этот момент. А почему с сохранением не катит? Undo то во всяком случае в 2004/2005 работает.
Код:
[Выделить все]
(defun Viewport_Dimensions (/ actDoc actVp)
(vl-load-com)
  (setq actDoc(vla-get-ActiveDocument
		 (vlax-get-acad-object)))
  (vla-put-ActiveSpace actDoc acPaperSpace)
  (vla-put-ActiveSpace actDoc acModelSpace)
       (setq actVp(vla-get-ActiveViewport actDoc))
  (list
	(vla-get-Width actVp)
	(vla-get-Height actVp)
    ); end list
  ); end of Vieport_Dimensions
{Smirnoff} вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Масштаб экрана