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

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

Как отличить "системный" видовой экран от "пользовательского"

Ответ
Поиск в этой теме
Непрочитано 11.12.2020, 09:01 #1
Как отличить "системный" видовой экран от "пользовательского"
===AAA===
 
г. Норильск
Регистрация: 15.08.2005
Сообщений: 451

Всем добрый день.

Когда мы создаем в Автокаде Layout, в нём автоматически
создаётся некий невидимый видовой экран. Назовём его
"системный".

Т.е. в лайоуте всегда есть хотя бы один ВЭ.

Затем мы создаем "пользовательский" ВЭ, через который
мы смотрим на модель.

Итого на вкладке у нас уже два ВЭ, хотя глазами мы видим
только один.

(ssget "_x" '((0 . "VIEWPORT")(410 . "Лист1"))))

выберет тоже два ВЭ.

Теперь нужно понять - какой из них какой.

(entget) никаких явных отличий не указывает,
может быть через

(vlax-dump-object)

можно какое-нибудь явное отличие увидеть?
Кто знает - какое?
__________________
Счастливо, Алексей!
Просмотров: 2556
 
Непрочитано 11.12.2020, 09:53
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Если я правильно помню, у ВП есть есть порядковые номера. Системный - 1, остальные пользовательские.
https://adn-cis.org/forum/index.php?topic=228.0
и вот тут есть некоторые подробности про ВП: https://adn-cis.org/forum/index.php?topic=9050.15

Последний раз редактировалось Boxa, 11.12.2020 в 09:59.
Boxa вне форума  
 
Автор темы   Непрочитано 11.12.2020, 12:07
#3
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Когда имеем ОДИН лайоут - без проблем, он первый.

А вот когда ssget нашёл нам все ВЭ на всех лайоутах?

Можно, конечно, собрать отдельные списки ВЭ по
каждому из лайоутов и выкинуть из них первые ВЭ
(как раз получим искомое), но, может быть, проще
можно?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 11.12.2020, 12:47
#4
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
А вот когда ssget нашёл нам все ВЭ на всех лайоутах?
у каждого ВЭ есть ссылка на владельца, так что рассортировать не сложно и это все есть в тех ссылках, которые я писал выше.
Boxa вне форума  
 
Автор темы   Непрочитано 11.12.2020, 12:54
#5
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Под "владельцем" здесь понимается имя лайоута?
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 11.12.2020, 13:29
#6
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
можно какое-нибудь явное отличие увидеть?
'(69 . 1)
Vov.Ka вне форума  
 
Автор темы   Непрочитано 11.12.2020, 13:39
#7
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Я тоже так сперва думал.
Фиг там...
Бывают случаи, когда (68 . 0)(69 . 0)
Причем у обоих ВЭ (и системном и юзерском) на одном лайоуте.
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 11.12.2020, 13:47
#8
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от ===AAA=== Посмотреть сообщение
Фиг там...
Бывают случаи, когда (68 . 0)(69 . 0)
Причем у обоих ВЭ (и системном и юзерском) на одном лайоуте.
Могу предположить, что это у не про инициализированных листов... вроде это есть в ссылках и как с этим бороться тоже есть.
Boxa вне форума  
 
Автор темы   Непрочитано 11.12.2020, 13:55
#9
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Да фиг его знает... Обычный лайоут вроде бы, с одним ВЭ.
Вот данные:

((-1 . <Имя объекта: 7ff4809321b0>) (0 . "VIEWPORT") (5 . "EA23B") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 7ff4
809321c0>) (102 . "}") (330 . <Имя объекта: 7ff480931c70>) (100 . "AcDbEntity") (67 . 1) (410 . "ЗСО2_L3") (8 . "Defpoin
ts") (62 . 0) (100 . "AcDbViewport") (10 402.537 385.487 0.0) (40 . 723.696) (41 . 322.273) (68 . 0) (69 . 0) (12 649818
.0 428380.0 0.0) (13 0.0 0.0 0.0) (14 10.0 10.0 0.0) (15 10.0 10.0 0.0) (16 0.0 0.0 1.0) (17 0.0 0.0 0.0) (42 . 50.0) (4
3 . 0.0) (44 . 0.0) (45 . 32227.3) (50 . 0.0) (51 . 0.0) (72 . 10000) (90 . 835680) (281 . 0) (71 . 1) (74 . 0) (110 0.0
0.0 0.0) (111 1.0 0.0 0.0) (112 0.0 1.0 0.0) (79 . 0) (146 . 0.0) (170 . 0) (61 . 5) (348 . <Имя объекта: 7ff4809062f0>
) (292 . 1) (282 . 1) (141 . 0.0) (142 . 0.0) (63 . 250) (421 . 3355443))

((-1 . <Имя объекта: 7ff480931d50>) (0 . "VIEWPORT") (5 . "EA1D5") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 7ff4
80931d60>) (102 . "}") (330 . <Имя объекта: 7ff480931c70>) (100 . "AcDbEntity") (67 . 1) (410 . "ЗСО2_L3") (8 . "0") (62
. 0) (100 . "AcDbViewport") (10 609.805 426.032 0.0) (40 . 1748.98) (41 . 1057.44) (68 . 0) (69 . 0) (12 609.805 426.03
2 0.0) (13 0.0 0.0 0.0) (14 10.0 10.0 0.0) (15 10.0 10.0 0.0) (16 0.0 0.0 1.0) (17 0.0 0.0 0.0) (42 . 50.0) (43 . 0.0) (
44 . 0.0) (45 . 1057.44) (50 . 0.0) (51 . 0.0) (72 . 100) (90 . 819232) (281 . 0) (71 . 1) (74 . 0) (110 0.0 0.0 0.0) (1
11 1.0 0.0 0.0) (112 0.0 1.0 0.0) (79 . 0) (146 . 0.0) (170 . 0) (61 . 5) (348 . <Имя объекта: 7ff4809062f0>) (292 . 1)
(282 . 1) (141 . 0.0) (142 . 0.0) (63 . 250) (421 . 3355443))
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 11.12.2020, 16:01
1 | #10
koMon


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


Код:
[Выделить все]
 
(repeat (sslength (setq index 0 l_viewports (ssget "_x" (list (cons 0 "VIEWPORT")(cons 410 (setq p_space "Layout2"))))))
	(if (equal (ssname l_viewports index)
			   (cdr (assoc 331 (entget (vlax-vla-object->ename (vla-item (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) p_space)))))
		)
		(progn
			(princ (ssname l_viewports index))
			(princ " служебный VP")
			(princ)
		)
	)
	(print (setq index (1+ index)))
)
koMon вне форума  
 
Автор темы   Непрочитано 11.12.2020, 16:18
#11
===AAA===


 
Регистрация: 15.08.2005
г. Норильск
Сообщений: 451


Ан нет - те же грабли... Я тоже сперва по этому пути пошёл.

Выяснилось, что бывают пользовательские ВЭ без кода 331.

Впрочем, задачу "собрать со всех лайоутов все ВЭ, кроме
первых" я уже решил, так что интерес остался скорее
"академический", а именно: "Есть ли признак служебности
ВЭ, кроме того, что он первый на каждом из лайоутов?"
__________________
Счастливо, Алексей!
===AAA=== вне форума  
 
Непрочитано 11.12.2020, 16:25
#12
koMon


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


ну, вообще-то, как видно из кода, 331 код у пользовательского вэ и не проверяется. он проверяется у бумажного пространства... по имени "Layout2"
koMon вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как отличить "системный" видовой экран от "пользовательского"

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как мгновенно преобразовать стандартный прямоугольный видовой экран в многоугольный? San-Miguel AutoCAD 2 23.12.2019 12:54
Как войти в видовой экран на видовом экране? Autocad 2016 mindchamber AutoCAD 6 30.07.2018 20:16
Можно ли создать видовой экран по контуру узла? brokman AutoCAD 2 04.05.2016 14:24
Как отмасштабировать видовой экран с "автоматическим" пересчётом масштаба отображения модели? NemOZ AutoCAD 3 21.05.2015 17:52
Как создать на "листе" нужное мне "окно " в модель? (видовой экран) azetown Программирование 8 09.06.2011 09:16