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

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

Изменение масштаба видового экрана при зумировании

Ответ
Поиск в этой теме
Непрочитано 24.12.2014, 17:56
Изменение масштаба видового экрана при зумировании
DianaChTailor
 
Регистрация: 24.12.2014
Сообщений: 9

Здравствуйте.
На листе создаю видовой экран (двухмерная графика). Жму по экрану два раза - выбираю объект - зумировать. Все отлично, но масштаб видового экрана становится не 1 (хотя размеры изначальные видового экрана и объекта абсолютно одинаковые), а 0.9906 или 0.9914 или что-то вроде этого, и, соответственно, чертеж оказывается чуть-чуть меньше видового экрана, приходится каждый раз выбирать масштаб 1.
Как исправить ситуацию? Т.е. чтобы при зумировании объекта масштаб автоматически становился равным 1.
Спасибо.

AutoCad2015_En_x64_SP1, win 8.1
Чертеж содержит объекты, созданные только в AutoCad.
Просмотров: 11309
 
Непрочитано 26.12.2014, 10:31
#21
shuttermage


 
Регистрация: 15.10.2010
Сообщений: 175


ЧТО МЕШАЕТ СДЕЛАТЬ ВИДОВОЙ ЭКРАН ЧУТЬ ЧУТЬ БОЛЬШЕ И РАМКУ ВИДОВОГО ЭКРАНА ПОВЕСИТЬ В Defpoints?

PS: И это не капс, это шифт
shuttermage вне форума  
 
Автор темы   Непрочитано 26.12.2014, 10:46
#22
DianaChTailor


 
Регистрация: 24.12.2014
Сообщений: 9


не совсем поняла, куда ее повесить...
Допустим, сделаю ВЭ больше. Все равно придется выбирать что в нем отображать... Т.е. залезать в пространство модели и оконтуривать чего-нибудь, зумировать...
Или я не так поняла?
Дело в том, что форматы разные...
DianaChTailor вне форума  
 
Непрочитано 26.12.2014, 11:21
#23
baksconstructor


 
Регистрация: 05.11.2014
Сообщений: 939


Цитата:
Сообщение от DianaChTailor Посмотреть сообщение
Использовала программу РЕВЕРС (демо-версия).
Создала рамки полилинией в отдельном слое, однако, реверс из не находит...
Приложите пример, объясним почему не находит и рекомендуем что сделать чтобы нашлось.
baksconstructor вне форума  
 
Непрочитано 26.12.2014, 11:23
#24
shuttermage


 
Регистрация: 15.10.2010
Сообщений: 175


Рамки есть в модели, например 297*210. В листе создаем видовой экран размером 300*220 (вообще произвольные цифры, главное больше габарита рамки из модели). Дальше все то же самое что в начале - Рамка встанет в масштабе 1 к 1, видовой экран чуть больше.
Настраиваем область печати и принтер как обычно, видовой экран для пущей уверенности в слой Defpoints. Ах да, и заблокировать не забудьте его на всякий. Все.

Кто вообще сказал, что видовой экран должен быть именно тех же размеров, что и рамка в модели?
shuttermage вне форума  
 
Автор темы   Непрочитано 26.12.2014, 12:00
#25
DianaChTailor


 
Регистрация: 24.12.2014
Сообщений: 9


Вот пример файла.
В модели рамки - результат - на листе 1.
Соответственно, вопрос: как добиться максимальной производительности результата (на каждом листе отдельная рамка должна быть), учитывая, что рамок - много в модели, файлов тоже.
Спасибо.

----- добавлено через ~2 мин. -----
В примере я уже обвела рамки. РЕВЕРС их нашел, но что-то с созданием листов проблематично как-то...
Вложения
Тип файла: dwg
DWG 2007
Пример.dwg (106.0 Кб, 779 просмотров)
DianaChTailor вне форума  
 
Непрочитано 26.12.2014, 12:20
#26
baksconstructor


 
Регистрация: 05.11.2014
Сообщений: 939


Цитата:
Сообщение от DianaChTailor Посмотреть сообщение
В примере я уже обвела рамки. РЕВЕРС их нашел, но что-то с созданием листов проблематично как-то...
Обводить не надо, у Вас рамки блоками, поставьте галочку "Все блоки". На сайте куча видеоуроков.
Про созданию листов - в последней версии автор изменил алгоритм, может это поможет, сейчас промежуточная 2.1.015. Пишите автору, только пример приложите, он без примера туго понимает.
baksconstructor вне форума  
 
Непрочитано 26.12.2014, 21:02
#27
skkkk


 
Регистрация: 20.03.2008
Сообщений: 2,532


Цитата:
Сообщение от shuttermage Посмотреть сообщение
ЧТО МЕШАЕТ СДЕЛАТЬ ВИДОВОЙ ЭКРАН ЧУТЬ ЧУТЬ БОЛЬШЕ И РАМКУ ВИДОВОГО ЭКРАНА ПОВЕСИТЬ В Defpoints?

PS: И это не капс, это шифт
ЧТО МЕШАЕТ СОЗДАТЬ НОВЫЙ СЛОЙ, СДЕЛАТЬ ЕГО НЕПЕЧАТАЕМЫМ И ПОВЕСИТЬ ВИДОВОЙ ЭКРАН В НЕГО?

И это не капс и не шифт, просто известно, что располагать что-то на слое Defpoints - это моветон, равно как и ОРАТЬ в общественных местах, даже, если это и очень умный ОРАТОР, и говорит он правильные вещи

shuttermage, не спорю, это хорошее решение, и для Дианы, возможно, конечно, подойдет, если не напрягает визуальное созерцание дополнительных беспорядочных рамок в листе. Но как прикажете поступать в случае, описанном мной в #12 и проиллюстрированном мной же в специально подготовленном на скорую руку файле (см. вложение). Никакой иронии - реально хочу узнать, есть ли какой-то штатный метод сделать это быстро и правильно, чтобы линии совмещения листов совпадали? И если есть, то посыпать голову пеплом. Серьезно.

Как и обещал, выкладываю свой код, правда я его еще и слегка доработал (хоть и не обещал).
Доступны две команды:
1. ZOOM-OBJECT - специально для Дианы - запросит объект, причем это должен быть либо блок, либо любая полилиния. На другие объекты будет ругаться. При получении нужного объекта по его внешним габаритам приведет рамку в модели в соответствие с видовым экраном в листе (согласно ТЗ Дианы), при условии, что рамка и видовой экран равны (или подобны, при другом масштабе). Проверку "прямоугольности" и правильности рамки или блока, равно, как и "подобности" рамки видовому экрану, я оставил (возможно, пока) на откуп пользователю.
2. ZOOM-FRAME - по сути то же, что и штатная команда _.ZOOM с опцией Window (ПОКАЗАТЬ -> Рамка) с тем лишь отличием, что при запросе диагональных точек рамки активна привязка Конточка для точного указания углов.

При желании можно прикрутить к функционалу закрытие видового экрана (активировать лист) и заблокировать видовой экран. Можно по умолчанию, а можно выдать запрос (Заблокировать ВЭ? Да/Нет). Только тут нужно хорошенько подумать, дабы не плодить лишних ненужных движений ни мне, ни пользователю, например, если он вдруг промахнулся мимо нужной рамки). Ну и в идеале добавить программную проверку "подобности" и "прямоугольности". Это нетрудно, правда уже точно не сегодня. Мог и еще что-то упустить... Строго не судите - времени уделил немного и тестировал достаточно бегло. Замечания и предложения - в почёте.

Код:
[Выделить все]
(vl-load-com)
(defun C:ZOOM-OBJECT () (custom-zoom nil))
(defun C:ZOOM-FRAME () (custom-zoom T))
(defun custom-zoom (flag / *error* oldOSMODE oldCMDECHO oldVTENABLE MinP MaxP en)
  (defun *error* (msg)
    (if	oldOSMODE
      (setvar "OSMODE" oldOSMODE)
    ) ;_ end of if
    (if	oldCMDECHO
      (setvar "CMDECHO" oldCMDECHO)
    ) ;_ end of if
    (if	oldVTENABLE
      (setvar "VTENABLE" oldVTENABLE)
    ) ;_ end of if
    (princ msg)
    (princ)
  ) ;_ end of defun
  (setq	oldOSMODE   (getvar "OSMODE")
	oldCMDECHO  (getvar "CMDECHO")
	oldVTENABLE (getvar "VTENABLE")

  ) ;_ end of setq
  (setvar "OSMODE" 1)
  (setvar "CMDECHO" 0)
  (setvar "VTENABLE" 7)
  (setvar "ERRNO" 0)
  (if flag
    (progn
      (setq MinP (getpoint "\nПервый угол: "))
      (if MinP
	(setq MinP (trans MinP 1 0))
      ) ;_ end of if
      (if MinP
	(setq MaxP (getcorner MinP "\nПротивоположный угол: "))
      ) ;_ end of if
      (if MaxP
	(setq MaxP (trans MaxP 1 0))
      ) ;_ end of if
    ) ;_ end of progn
    (progn
      (while (and (null en) (/= (getvar "ERRNO") 52))
	(setq en
	       (car
		 (entsel "\nУкажите рамку - блок или полилинию <Отмена>: "
		 ) ;_ end of entsel
	       ) ;_ end of car
	) ;_ end of setq
	(if
	  (and en
	       (not (wcmatch (cdr (assoc 0 (entget en))) "INSERT"))
	       (not (wcmatch (cdr (assoc 0 (entget en))) "*POLYLINE"))
	  ) ;_ end of and
	   (progn (princ "\nЭто не рамка! (Не блок и не полилиния)")
		  (setq en nil)
	   ) ;_ end of progn
	) ;_ end of if
      ) ;_ end of while
      (if en
	(progn
	  (vla-GetBoundingBox (vlax-ename->vla-object en) 'MinP 'MaxP)
	  (setq	MinP (vlax-safearray->list MinP)
		MaxP (vlax-safearray->list MaxP)
	  ) ;_ end of setq
	) ;_ end of progn
      ) ;_ end of if

    ) ;_ end of progn
  ) ;_ end of if
  (if (and MinP MaxP)
    (vl-cmdf "'_.zoom" MinP MaxP)
  ) ;_ end of if
  (cond
    ((and en MinP MaxP)
     (*error* "\nВыполнено зумирование по указанному объекту")
    )
    ((and (null en) MinP MaxP)
     (*error* "\nВыполнено зумирование по двум точкам")
    )
    (T
     (*error* "Отменено")
    )
  ) ;_ end of cond
  (princ)
) ;_ end of defun
(princ
  "\nЗагружены пользовательские команды ZOOM-OBJECT и ZOOM-FRAME"
) ;_ end of princ
(princ)

Всех с наступающим!!!
Вложения
Тип файла: dwg
DWG 2010
Для форума.dwg (1.08 Мб, 673 просмотров)
Тип файла: lsp custom-zoom.lsp (1.8 Кб, 20 просмотров)

Последний раз редактировалось skkkk, 27.12.2014 в 23:37.
skkkk вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Изменение масштаба видового экрана при зумировании

CAD БИБЛИОТЕКА
Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Автоматическое создание "лишнего" скрытого видового экрана помимо нормального при активизации листа Libed AutoCAD 5 06.10.2014 15:19
Самопроизвольное изменение масштаба аннотаций видового экрана saa AutoCAD 6 27.09.2012 14:00
Вопрос про аннотативность и масштабы видового экрана. Yur.OK_SPb AutoCAD 16 13.01.2012 16:53
как выйти из видового экрана в пространстве листа Grigorii_K AutoCAD 9 24.03.2011 18:39
Пропала кнопочка масштаба видового экрана ykIIIIn AutoCAD 2 17.09.2010 13:48