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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Почему так работает показ объекта в центре экрана (_zoom _object)

Почему так работает показ объекта в центре экрана (_zoom _object)

Ответ
Поиск в этой теме
Непрочитано 27.11.2014, 17:02 #1
Почему так работает показ объекта в центре экрана (_zoom _object)
АлексЮстасу
 
топограф, технолог
 
Москва
Регистрация: 24.05.2009
Сообщений: 3,072

_zoom _object не всегда показывает объект в центре экрана и в его максимальном увеличении.
С чем это может быть связано?
Например, в приложенном файле большую окружность _zoom _object показывает не в центре, и не во весь экран - примерно в два раза меньше.
А ломаную линию справа показывает почти во весь экран.
Но мелкие белые окружности или зеленый контур показывает и не по центру, и далеко не во весь экран.

Вложения
Тип файла: dwg
DWG 2010
zoom_object.dwg (76.4 Кб, 1649 просмотров)

__________________
количество моих сообщений не говорит о знании Автокада
Просмотров: 5082
 
Непрочитано 28.11.2014, 10:26
#2
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Качать не стал, но скажу, что центр окружности считается ее частью. Поэтому такое и происходит, наверное.
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 28.11.2014, 10:42
#3
Кулик Алексей aka kpblc
Moderator

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


"Мелкие белые окружности" и "зеленый контур" - это 2D или 3D-полилинии. Почему так показывается - без понятия
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 28.11.2014, 11:02
#4
ie.spb

Инженер
 
Регистрация: 21.08.2007
Сообщений: 598
<phrase 1=


Что то связано с координатами. Перенес в 0,0 и все заработало
Вложения
Тип файла: dwg
DWG 2007
zoom_object.dwg (87.1 Кб, 1524 просмотров)
__________________
Склероз нельзя вылечить, но о нем можно забыть.
(Ф. Раневская)
ie.spb на форуме  
 
Непрочитано 28.11.2014, 11:16
#5
skkkk


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


Подтверждаю, но частично. Большую окружность показывает по центру и во весь экран, а вот малые по центру, но уменьшает до маленького кружка. Причем, если эту маленькую скопировать в другой файл, то все в порядке. Мыслей, с чем это может быть связано, пока нет.
skkkk на форуме  
 
Непрочитано 28.11.2014, 12:20
#6
AlexCondor

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


Еще интереснее. Перенес все объекты за центр большей окружности в 0.0. Передернул системную переменную PDMODE. Поставил 35, как у меня по умолчанию, потом 0 как в файле - и чудо - _zoom _object работает.
AlexCondor на форуме  
 
Автор темы   Непрочитано 28.11.2014, 14:52
#7
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от ie.spb Посмотреть сообщение
Что то связано с координатами.
У меня тоже ощущение, что связано с координатами.
Возможно, что с лимитами?
Что-то мешает Автокаду правильно вычислить координаты для визуализации.
Цитата:
Сообщение от AlexCondor Посмотреть сообщение
Передернул системную переменную PDMODE
Что за зверь эта PDMODE, что делает?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 28.11.2014, 14:53
#8
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


АлексЮстасу, стиль отображения точек. непонятно его влияние на зуммирование
Хмурый вне форума  
 
Автор темы   Непрочитано 28.11.2014, 15:30
#9
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Хмурый Посмотреть сообщение
стиль отображения точек
Похоже, что PDMODE здесь ни при чем?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 28.11.2014, 15:41
#10
AlexCondor

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


А я и не говорил что причина в PDMODE, просто констатировал факт, после ее изменения, у меня все работает. Как это связано, не знаю.
AlexCondor на форуме  
 
Автор темы   Непрочитано 28.11.2014, 17:16
#11
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от AlexCondor Посмотреть сообщение
Как это связано, не знаю.
Вероятно, что никак.
Но, возможно, Автокад после разных действий что-то у себя пересчитывает (лимиты, координаты, регенерирует или т.п.?), и отображение меняется.

Собстно, сам этим _zoom _object не пользуюсь - это для программы нужно, чтобы показывать на экране интересующий объект. В жизни колесика достаточно.
И тут в таком базовом-простейшем - засада!
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 28.11.2014, 20:57
#12
Кулик Алексей aka kpblc
Moderator

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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
это для программы нужно, чтобы показывать на экране интересующий объект
Для этого совсем необязательно использовать командные методы! Как вариант, на лиспе:
Код:
[Выделить все]
 (defun z2o (ent / k minp maxp)
  (if (and (not ent)
           (= (type (setq ent (vl-catch-all-apply
                                (function
                                  (lambda ()
                                    (car (entsel "\nSelect object <Cancel> : "))
                                    ) ;_ end of LAMBDA
                                  ) ;_ end of function
                                ) ;_ end of VL-CATCH-ALL-APPLY
                          ) ;_ end of setq
                    ) ;_ end of type
              'ename
              ) ;_ end of =
           ) ;_ end of and
    (z2o ent)
    (if (setq ent (cond
                    ((= (type ent) 'ename) (vlax-ename->vla-object ent))
                    ((= (type ent) 'vla-object) ent)
                    ) ;_ end of cond
              ) ;_ end of setq
      (progn
        (vla-getboundingbox ent 'minp 'maxp)
        (setq k    1.005 ;; Это коэффициент приближения / удаления. Попробуй поменять
              minp (mapcar
                     (function
                       (lambda (x)
                         (/ x k)
                         ) ;_ end of lambda
                       ) ;_ end of function
                     (vlax-safearray->list minp)
                     ) ;_ end of mapcar
              maxp (mapcar
                     (function
                       (lambda (x)
                         (* x k)
                         ) ;_ end of lambda
                       ) ;_ end of function
                     (vlax-safearray->list maxp)
                     ) ;_ end of mapcar
              ) ;_ end of setq
        (vla-zoomwindow (vlax-get-acad-object) (vlax-3d-point minp) (vlax-3d-point maxp))
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of if
  ) ;_ end of defun
Код не тестировал, как будет работать - вопрос...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 29.11.2014, 05:44
#13
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Для этого совсем необязательно использовать командные методы! Как вариант, на лиспе:
Спасибо!
Дело в том, что код уже длиной до Луны, и совсем не хочется переписывать шажок за шажком весь Автокад (и так многое уже пришлось дублировать)
И было бы интересно разобраться.

В приложенном в начале файле элементы расположены вне лимитов чертежа.
Если задать лимиты, сравнимые с габаритами чертежа, то _zoom _object начинает работать нормально.
В исходном файле у меня гигантские лимиты - сделан по шаблону для потенциально любого местоположения объектов. При огромных лимитах _zoom _object работает так же плохо, как и вне лимитов.
Т.е. гипотеза пока такая - _zoom _object плохо работает при расположении элементов вне лимитов или лимиты в чертеже "слишком большие".
Правда, непонятно, почему лимиты могут влиять на _zoom _object? Или только кажется, что дело в лимитах?
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 29.11.2014, 12:11
#14
Кулик Алексей aka kpblc
Moderator

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


Если в лимитах, то, может, limcheck снять? Ну или limmax поменять?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 30.11.2014, 02:22
#15
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Если в лимитах, то, может, limcheck снять? Ну или limmax поменять?
limcheck никак не влияет.
Пока можно сказать только, что при задании реалистичных лимитов _zoom _object начинает работать нормально.
Вероятно, несоответствующие лимиты как-то влияют на ошибку вычисления габаритов элементов или габаритов экрана или и того, и другого. Но "после того, не значит вследствие того".

Кстати, до сих пор не могу понять, как бы вообще избавиться от ограничений перемещения экрана в Автокаде

И для совсем тупых: как запустить код из #12?
__________________
количество моих сообщений не говорит о знании Автокада

Последний раз редактировалось АлексЮстасу, 30.11.2014 в 02:31.
АлексЮстасу вне форума  
 
Непрочитано 30.11.2014, 03:34
1 | #16
skkkk


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


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
как запустить код из #12?
Код:
[Выделить все]
(z2o (car (entsel)))
или
Код:
skkkk на форуме  
 
Автор темы   Непрочитано 30.11.2014, 05:50
#17
АлексЮстасу

топограф, технолог
 
Блог
 
Регистрация: 24.05.2009
Москва
Сообщений: 3,072


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
как будет работать - вопрос...
Тоже отображает не по центру.
С коэффициентом непонятно - если его сделать 100, 10, 0.1 или 0.01, то все элементы улетают в точечку где-нибудь рядом с границей экрана.
Что с "хорошими" лимитами, что с "плохими".
__________________
количество моих сообщений не говорит о знании Автокада
АлексЮстасу вне форума  
 
Непрочитано 01.12.2014, 11:05
#18
Bull

Конструктор по сути (машиностроитель)
 
Регистрация: 10.10.2005
Набережные Челны (это где КамАЗ)
Сообщений: 11,391


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
Кстати, до сих пор не могу понять, как бы вообще избавиться от ограничений перемещения экрана в Автокаде
Никак. Только минусуя или плюсуя лупу. Я так понял, независимо от версии, есть максимум и минимум зумирования (диапазон т.е.), который не расширить. Можно только этот диапазон двигать в бОльшую или меньшую сторону (лупами как раз).
__________________
Век живи, век учись - ...
Bull вне форума  
 
Непрочитано 02.12.2014, 13:51
#19
Vladimir_Sergeevich

рисую дороги, в перерывах курю Lisp
 
Регистрация: 20.04.2011
Пермь
Сообщений: 475
<phrase 1= Отправить сообщение для Vladimir_Sergeevich с помощью Skype™


Цитата:
Сообщение от АлексЮстасу Посмотреть сообщение
если его сделать 100, 10, 0.1 или 0.01, то все элементы улетают в точечку где-нибудь рядом с границей экрана.
Логично. Присмотрись, что Алексей делает с этим "k".
В таком варианте будет адекватно только при к=1
коэффициент надо использовать через прибавление/отстегивание (10 10 10)*k, потому как даже для 1,005 границы могут слететь далековато, особенно при работе на планах в геодезических координатах. например у меня сейчас цифры порядка х=2268065.1425 у=674603.0805 - это только по х на 11 км граница уедет.
з.ы.
На мой взгляд, можно взять (mapcar '- maxp minp) за базу и коэффициент k = 0.01 в итоге границы будут на 1% больше объекта.
Код:
[Выделить все]
 (setq k    0.01 ;; Это коэффициент приближения / удаления. Попробуй поменять
            
 	minp (vlax-safearray->list minp)
 	maxp (vlax-safearray->list maxp)
 	dxdy (mapcar '- maxp minp)
)  ;_ end of setq
   
(setq	minp (mapcar '- minp 	(mapcar '* dxdy (list k k k))
		) ;_ end of mapcar
                    

        maxp (mapcar '+ maxp 	(mapcar '* dxdy (list k k k))
		) ;_ end of mapcar
  
) ;_ end of setq
       
__________________
Не труд сделал из обезьяны человека, а лень и жажда халявы...

Последний раз редактировалось Vladimir_Sergeevich, 02.12.2014 в 14:37. Причина: маленько поразмыслил
Vladimir_Sergeevich вне форума  
 
Непрочитано 25.08.2023, 11:47
#20
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 539


Приветствую!
Копну старую тему: zoom\object в видовом экране оставляет небольшие поля между рамкой объекта и рамкой ВЭ, в св-вах масштаб- 0,99. Полагаю какая-то переменная?
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Почему так работает показ объекта в центре экрана (_zoom _object)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Консервация объектов незавершенного строительства msv_mnv Обследование зданий и сооружений 6 11.11.2017 23:07
Ввод в эксплуатацию салона красоты - нужно ли (и в какой форме) согласование с пожарниками ? drill_man Прочее. Архитектура и строительство 4 20.09.2013 12:03