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

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Заблокировать видовой экран для редактирования

Заблокировать видовой экран для редактирования

Ответ
Поиск в этой теме
Непрочитано 11.10.2024, 09:59 #1
Заблокировать видовой экран для редактирования
posetitel
 
Регистрация: 16.10.2013
Сообщений: 395

Товарищи, еще вопрос.
Возможно ли заблокировать видовой экран, чтобы из листа в него нельзя было зайти?
У меня на листе наложение двух видовых экранов, и вот когда кликаю в месте наложения хочу чтобы заходилось только в один, а второй был недоступен для проваливания через него в модель.
Приложил пример. В нем когда кликаю в месте с фразой "часть текста", открывается редактирование видового экрана с первой частью текста модели, а я хочу, чтобы этот видовой экран было заморожен для редактирования и открывался только видовой экран с фразой "часть текста вторая"

Вложения
Тип файла: dwg
DWG 2013
На форум.dwg (36.6 Кб, 22 просмотров)


Последний раз редактировалось posetitel, 11.10.2024 в 10:06.
Просмотров: 2468
 
Непрочитано 11.10.2024, 10:55
1 | #2
name02


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


Заблокировать не получится.
Как вариант можно использовать сочетание клавиш Ctrl+R - для цикличного переключения между видовыми экранами видимыми в пределах экрана.
Заходишь в ВЭ и жмешь Ctrl+R - переключаешься на другой ВЭ
name02 вне форума  
 
Непрочитано 11.10.2024, 11:49
#3
zenon

Остекляем!!! Алюминим!!!
 
Регистрация: 21.02.2005
Москва
Сообщений: 3,917
<phrase 1=


Сделать многоугольный видовой экран (и обойти вырезом второй)
__________________
Мы можем делать быстро, качественно и недорого, выбирайте любые 2 условия.:search:
zenon вне форума  
 
Автор темы   Непрочитано 11.10.2024, 13:12
1 | #4
posetitel


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


Цитата:
Сообщение от zenon Посмотреть сообщение
Сделать многоугольный видовой экран (и обойти вырезом второй)
Не, не вариант. В примере упрощенно, а в реальном чертеже один экран должен быть внутри другого.
posetitel вне форума  
 
Непрочитано 11.10.2024, 14:32
#5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от posetitel Посмотреть сообщение
Не, не вариант. В примере упрощенно, а в реальном чертеже один экран должен быть внутри другого.
а смысл? Если оба ВЭ показывают в одну область модели, то внутренний лишний. А если в разные области - на экране будет наложение объектов (если, конечно, не пытаетесь совмещать несколько разных областей модели). Есть многоугольные ВЭ, как писали выше, для формирования мозаики любой нужной конфигурации из ВЭ на листе.
Сергей812 вне форума  
 
Автор темы   Непрочитано 11.10.2024, 14:41
#6
posetitel


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а смысл? Если оба ВЭ показывают в одну область модели, то внутренний лишний. А если в разные области - на экране будет наложение объектов (если, конечно, не пытаетесь совмещать несколько разных областей модели). Есть многоугольные ВЭ, как писали выше, для формирования мозаики любой нужной конфигурации из ВЭ на листе.
Именно это и пытаюсь сделать.
posetitel вне форума  
 
Непрочитано 11.10.2024, 14:43
1 | #7
name02


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


Если тебе не удобно каждый раз "перетыкивать" в нужный ВЭ, то самое простое все-таки использовать Ctrl+R
name02 вне форума  
 
Непрочитано 11.10.2024, 14:44
1 | #8
AlexCondor

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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
а смысл?
Да всякое бывает, например, отображение разных слоев в разных наложенных видовых экранах.
AlexCondor вне форума  
 
Непрочитано 11.10.2024, 14:51
#9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от AlexCondor Посмотреть сообщение
Да всякое бывает, например, отображение разных слоев в разных наложенных видовых экранах.
настройки отображения разных слоев из разных областей пространства модели в одной области листа - очень изощрённая организация работы, имхо)
Сергей812 вне форума  
 
Автор темы   Непрочитано 11.10.2024, 15:48
#10
posetitel


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


Цитата:
Сообщение от name02 Посмотреть сообщение
Если тебе не удобно каждый раз "перетыкивать" в нужный ВЭ, то самое простое все-таки использовать Ctrl+R
Ага, пока это самый дельный совет. Я там прожал кнопку спасибо под сообщением.
posetitel вне форума  
 
Непрочитано 11.10.2024, 15:58
#11
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


а если лиспом входить в вэ по его выбору?
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 11.10.2024, 16:10
#12
posetitel


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


У меня получается видовой внутри видового.
Идеально бы заморозить внешний видовой, а входить во внутренний просто по двойному клику.
Наверное, горячая клавиша переключения экранов по удобству сравнима с лиспом по выбору рабочего видового экрана.
posetitel вне форума  
 
Непрочитано 11.10.2024, 16:40
#13
koMon


 
Блог
 
Регистрация: 26.09.2017
Сообщений: 1,809


ну границы вэ же видны. или они будут в выключенном слое?
__________________
K Lisp
koMon вне форума  
 
Автор темы   Непрочитано 11.10.2024, 16:46
#14
posetitel


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


Границы видны. Внутренний видовой экран в рамках извращения сделал многоугольником с вылетом луча этого многоугольника за внешний видовой и тогда точно можно попасть в нужный для редактирования, но приходится по листу туда-сюда гулять.
Когда пользуюсь сочетанием Ctrl+R, то не задумываясь сразу проваливаюсь в видовой экран, а какой сейчас экран активен понимаю по тому, какой объект редактируется и если это не то, что нужно, нажимаю Ctrl+R.
posetitel вне форума  
 
Непрочитано 15.10.2024, 10:46
#15
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
Сообщение от posetitel Посмотреть сообщение
Товарищи, еще вопрос.
Нечто подобное я решал когда-то с пом. полей с атрибутами и непечатаемых символов
VitalyAF вне форума  
 
Автор темы   Непрочитано 15.10.2024, 15:33
#16
posetitel


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


не уловил идею.
это про блокировку видового экрана с помощью полей с атрибутами и непечатаемых символов?
posetitel вне форума  
 
Непрочитано 15.10.2024, 16:29
#17
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


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

И тогда останется только одна проблема - как передать клик мышью с верхнего не редактируемого (заблокированного) ВЭ на лежащий под ним рабочий ВЭ. Опять же, штатных средств нет, только программно.

И пока только три мысли навскидку:
1. Повеситься на обработчик события изменения системной переменной CVPORT, и анализировать ВЭ на текущем пространстве - ища по координатам парные вложенные ВЭ. А потом в том же обработчике события Idle задавать нужное значение CVPORT. Но это нужно проверять - насколько будет работоспособно в реале.
2. Повеситься на событие Application.BeforeDoubleClick (вроде так называется) и также анализировать CVPORT. И поскольку там разные обработчики событий - поэтому можно сразу попробовать анализировать и задавать нужный ВЭ.
3. Повеситься на главный поток событий акада через функцию acedRegisterFilterWinMsg и рулить всем процессом напрямую через WinApi. Но это слишком сложный вариант для такой простой задачи, имхо)
Сергей812 вне форума  
 
Автор темы   Непрочитано 15.10.2024, 16:46
#18
posetitel


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
штатных средств блокировки выбора ВЭ нет. Но что мешает разделить, например - по слоям, передние и задние видовые экраны, и в которые не нужно входить - блокировать. Даже тут на форуме есть лиспы групповой блокировки ВЭ, насколько помню.
Не получилось. Это первым делом проверял. Ненужный видовой экран помещал в отдельный слой, слой на листе и замораживал, и блокировал, и отключал - не помогает, все равно при двойном клике проваливаюсь через него в модель.
Но раз штатных средств нет, штош, придется мириться с этим
posetitel вне форума  
 
Непрочитано 15.10.2024, 17:07
#19
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,499


Цитата:
Сообщение от posetitel Посмотреть сообщение
, все равно при двойном клике проваливаюсь через него в модель.
блокировка ВЭ не дает изменять текущую "привязку" ВЭ к пространству модели, от вхождения в пространство модели внутри ВЭ она никак не защищает.

А вот если добавить немного кода

Код:
[Выделить все]
 
// Windows
using System;

// AutoCAD
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Runtime;


namespace TestVPAutoSelect02
{

    public class Main : IExtensionApplication
    {
        private static short _SetNumberVP = 0;


        public void Initialize()
        {
            Application.SystemVariableChanged += App_SystemVariableChanged;
            Application.Idle += App_Idle;
        }


        public void Terminate() {}


        private void App_Idle(object sender, EventArgs e)
        {
            if (_SetNumberVP != 0)
            {
                Document lDoc = Application.DocumentManager.MdiActiveDocument;
                using (DocumentLock lDL = lDoc.LockDocument())
                {
                    try
                    {
                        Application.SystemVariableChanged -= App_SystemVariableChanged;
                        lDoc.Editor.SwitchToModelSpace();
                        Application.SetSystemVariable("CVPORT", _SetNumberVP);
                        _SetNumberVP = 0;
                    }
                    finally
                    {
                        Application.SystemVariableChanged += App_SystemVariableChanged;
                    }
                    
                }
            }
        }


        private void App_SystemVariableChanged(object sender, Autodesk.AutoCAD.ApplicationServices.SystemVariableChangedEventArgs e)
        {
            if (e.Name.Equals("CVPORT"))
            {
                _SetNumberVP = 0;
                short lCurrNumberVP = (short)Application.GetSystemVariable("CVPORT");
                if (lCurrNumberVP == 1) return;
                Document lDoc = Application.DocumentManager.MdiActiveDocument;
                using (DocumentLock lDL = lDoc.LockDocument())
                {
                    LayoutManager lLM = LayoutManager.Current;
                    using (Transaction lTr = lDoc.TransactionManager.StartTransaction())
                    {
                        Layout lLayout = lTr.GetObject(lLM.GetLayoutId(lLM.CurrentLayout), OpenMode.ForRead) as Layout;
                        ObjectIdCollection lVPIds = lLayout.GetViewports();
                        bool lIsLocked = false;
                        foreach (ObjectId lVPId in lVPIds)
                        {
                            Viewport lVP = lTr.GetObject(lVPId, OpenMode.ForRead) as Viewport;
                            if ((lVP.Number == lCurrNumberVP) && lVP.Locked)
                            {
                                lIsLocked = true;
                                break;
                            }
                        }
                        if (lIsLocked)
                        {
                            foreach (ObjectId lVPId in lVPIds)
                            {
                                Viewport lVP = lTr.GetObject(lVPId, OpenMode.ForRead) as Viewport;
                                if ((lVP.Number != lCurrNumberVP) && (lVP.Number > 1) && (!lVP.Locked))
                                {
                                    _SetNumberVP = (short)lVP.Number;
                                    break;
                                }
                            }
                        }
                        lTr.Commit();
                    }
                }
            }
        }
        
    }

}

то все становится совершенно по другому) Это я попробовал по быстрому свой первый вариант, для упрощения на листе всего два ВЭ - и один из них заблокирован. В заблокированный ВЭ не попасть (хотя просто выделить его можно, но войти в него нельзя - сразу переключает на другой разблокированный ВЭ).

Последний раз редактировалось Сергей812, 15.10.2024 в 19:34.
Сергей812 вне форума  
 
Непрочитано 16.10.2024, 12:27
#20
VitalyAF


 
Регистрация: 19.07.2005
Россия
Сообщений: 3,288


Цитата:
Сообщение от posetitel Посмотреть сообщение
В примере упрощенно...
Цитата:
Сообщение от posetitel Посмотреть сообщение
не уловил идею.
это про блокировку видового экрана с помощью полей с атрибутами и непечатаемых символов?
Там д.б. текст или графика? Всё в тумане...!
С текстом одни приёмы работы с графикой другие...
Если графика, то есть именованные виды... известно?
Из них можно построить ВЭ, пусть пересекаются как хошь... ставишь нужный вид (а не слой!!!) активным, правишь...
Похоже на работу в акаде с печатной многослойной платой...
Слои плюс фильтры и именованные виды.

Последний раз редактировалось VitalyAF, 16.10.2024 в 12:35.
VitalyAF вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Заблокировать видовой экран для редактирования



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заблокировать видовой экран в пространстве модели kp+ AutoCAD 7 07.03.2024 22:11
Как мгновенно преобразовать стандартный прямоугольный видовой экран в многоугольный? San-Miguel AutoCAD 2 23.12.2019 12:54
Как перенести видовой экран так, чтобы область, которую он показывает тоже перенеслась? Oasinirat AutoCAD 5 14.03.2019 15:46
После редактирования блока экран возвращается в начало координат Moris AutoCAD 4 20.11.2018 12:19
Как войти в видовой экран на видовом экране? Autocad 2016 mindchamber AutoCAD 6 30.07.2018 20:16