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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > PViewPort в Layout'е: программно задать вид/view

PViewPort в Layout'е: программно задать вид/view

Ответ
Поиск в этой теме
Непрочитано 28.08.2008, 20:22 #1
PViewPort в Layout'е: программно задать вид/view
Ax3
 
Programming, automation, CADs, GISs. "Теплоком"
 
Россия, Санкт-Петербург
Регистрация: 02.02.2007
Сообщений: 306

Приветствую господ участников форума.
У меня вопрос. Можно ли в layout'е для выбранного PViewPort'а задать отображаемый вид из числа имеющихся сохраненных именованных видов?
__________________
На LISPе можно мыслить!
Просмотров: 3558
 
Автор темы   Непрочитано 28.08.2008, 20:32
#2
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


Посмотрел справку, нашел в VBA нечто похожее:
Код:
[Выделить все]
    Set vp = ThisDrawing.PickfirstSelectionSet.Item(0)
    vp.Display True
    ThisDrawing.MSpace = True
    ThisDrawing.ActivePViewport = vp
    vp.ModelView = ThisDrawing.Views.Item(1)
Однако на строке vp.ModelView = ThisDrawing.Views.Item(1) выдается сообщение об ошибке метода:
Код:
[Выделить все]
Method 'ModelView' of object 'IAcadPViewPort' failed
В справке по 2007-му каду сказано, что для доступа к свойству ModelSpace необходимо использовать некий интерфейс IAcadPViewPort2. В 2006-м более старых версиях свойство ModelSpace вообще не фигурирует для PViewPort. Что за интерфейс IAcadPViewPort2 и как к нему подобраться, кто-нибудь знает?
__________________
На LISPе можно мыслить!
Ax3 вне форума  
 
Непрочитано 29.08.2008, 10:41
#3
Alaspher


 
Регистрация: 11.10.2004
e•burg
Сообщений: 755


Интерфейс IAcadPViewPort2 это указатель на объект типа PViewPort (фрагмент дампа):
Код:
[Выделить все]
; IAcadPViewport2: Интерфейс IAcadPViewport2
; Значения свойств:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d74d3c>
;   ArcSmoothness = 20000
;   Center = (5.94578 4.30966 0.0)
;   Clipped (RO) = 0
;   CustomScale = 9.67114e-005
;   Direction = (0.0 0.0 1.0)
;   DisplayLocked = 0

...
Свойство ModelSpace, по моим наблюдениям, работает только с ассоциироваными видами в подшивке. Фактически недокументировано, в AC2006, из ЛИСПа, доступ на редактирование получить не удалось (правда не сильно старался).
Alaspher вне форума  
 
Непрочитано 29.08.2008, 12:06
#4
Vov.Ka


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


Цитата:
Сообщение от Ax3 Посмотреть сообщение
Можно ли в layout'е для выбранного PViewPort'а задать отображаемый вид из числа имеющихся сохраненных именованных видов?
_.-view
Vov.Ka вне форума  
 
Автор темы   Непрочитано 07.09.2008, 19:09
#5
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


>Alaspher
Спасибо, прояснил ситуацию. В бейсике нет указателей, для лиспа доступа к этому интерфейсу, видимо, нет, возможно, в arx чего-то вышло бы, потому что встречал ссылки на какие-то си-библиотеки или заголовочные файлы для iacadpviewport2. Но я пока реши проблему по-другому. У меня стояла задача восстановления вида после изменения pvport'а. Так вот, я лезу в modelspace pviewport'а, сохраняю именованный вид, центр вида и размер, затем эти свойства именованного вида присваиваю pviewpotr'у. Все проходит нормально.
Код:
[Выделить все]
'Удалить вид "My_view", если есть
ThisDrawing.MSpace = True
Set view_ = ThisDrawing.Views.Add("My_view")
pt_ = ThisDrawing.GetVariable("viewctr")
pt1_(0) = pt_(0): pt1_(1) = pt_(1)
view_.Center = pt1_
view_.Direction=<pviewport>.Direction
view_.width=ThisDrawing.GetVariable("viewsize")
ThisDrawing.MSpace = False
'После изменения PviewPort'а
Set view_= ThisDrawing.Views.Item("my_view")
<pviewport>.Direction = view_.Direction
ThisDrawing.MSpace = True
pt_ = view_.Center
pt1_(0) = pt_(0): pt1_(1) = pt_(1): pt1_(2) = 0
Application.ZoomCenter pt1_, view_.Width
ThisDrawing.MSpace = False
__________________
На LISPе можно мыслить!

Последний раз редактировалось Ax3, 07.09.2008 в 19:21.
Ax3 вне форума  
 
Непрочитано 07.09.2008, 23:25
#6
Красин


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


По-моему в VB указатель на нужный интерфейс получают следующим образом:
Dim vp As IAcadPViewport2
а затем уже
set vp = ...
Красин вне форума  
 
Автор темы   Непрочитано 08.09.2008, 00:12
#7
Ax3

Programming, automation, CADs, GISs. "Теплоком"
 
Регистрация: 02.02.2007
Россия, Санкт-Петербург
Сообщений: 306


В VBA ри попытке
Код:
[Выделить все]
Dim vp As IAcadPViewport2
получаю сообщение
Код:
[Выделить все]
Compile error: User defined type not defined
:-( Приходится
Код:
[Выделить все]
Dim vp_ As AcadPViewport
__________________
На LISPе можно мыслить!
Ax3 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > PViewPort в Layout'е: программно задать вид/view

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программно задать размер листа в Layout Ax3 Программирование 6 02.03.2008 11:28