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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не работает свойство target объекта AcadPViewport

Не работает свойство target объекта AcadPViewport

Ответ
Поиск в этой теме
Непрочитано 30.10.2012, 12:48 #1
Не работает свойство target объекта AcadPViewport
TheMaster
 
Конструктор
 
Хабаровск
Регистрация: 25.02.2006
Сообщений: 22

Работаю в Autocad 2006 (так сложилось на работе). Все чертежи разрабатываются в пространстве модели, вместе со штампиками и прочими элементами. Пространство листа не используется. При распечатке каждый лист чертежа обводится рамкой и отправляется на печать. Распечатку можно упростить, если понасоздавать пространств листа для каждого листа чертежа и потом сделать публикацию в dwf (экспорт в pdf у нас ещё не изобрели :-( )
Это можно сделать вручную, если проект небольшой. Если он значительный по размеру, создавать десятки листов затруднительно, поэтому я решил заняться макросом на знакомом мне VBA. Пишу примерно следующее:
Код:
[Выделить все]
Public Sub ListAdder()

Set NewLayout = ThisDrawing.Layouts.Add("3.0")
NewLayout.CanonicalMediaName = "A3"
ThisDrawing.ActiveLayout = NewLayout

ThisDrawing.MSpace = True
Set NewPViewport = ThisDrawing.ActivePViewport
ThisDrawing.MSpace = False

NewPViewport.center = pt1   ' Центральная точка листа
NewPViewport.Width = 420    ' Размеры видового экрана точно соответствуют размерам листа
NewPViewport.Height = 297
NewPViewport.StandardScale = acVp1 ' масштаб 1:1
NewPViewport.Target = pt2     ' А здесь вид в видовом экране должен передвинуться на интересующий меня лист
                                      ' но - не передвигается почему-то...

ThisDrawing.Regen acAllViewports ' и это всё тоже не помогает...
NewPViewport.Update
End Sub
То есть, после строчки с pt2 вид в видовом экране действительно смещается, но совсем немного и вверх, а мне надо - очень далеко и влево. Где здесь может быть ошибка?
Просмотров: 3741
 
Непрочитано 30.10.2012, 13:04
#2
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


это смотрел?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.10.2012, 13:41 Это которая встроенная справка?
#3
TheMaster

Конструктор
 
Регистрация: 25.02.2006
Хабаровск
Сообщений: 22


Скачал, конечно же, и смотрел.
Да только там мой вопрос не показан. Потому что это про последнюю версию автокада, а у меня - от 2006 года. Посему приходится использовать этот самый target, вместо того, чтобы просто вид к видовому экрану пристегнуть. Autocad 2006 до такого ещё не дорос :-(
TheMaster вне форума  
 
Непрочитано 30.10.2012, 14:25
#4
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от TheMaster Посмотреть сообщение
Потому что это про последнюю версию автокада, а у меня - от 2006 года
Последний - AutoCAD 2013, а то, на что я дал ссылку - AutoCAD 2010. Т.е. ты реально попробовал те варианты ActiveX и они у тебя не пашут?
Цитата:
Сообщение от TheMaster
Это которая встроенная справка?
А это сильно на неё похоже?
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.10.2012, 14:47 Да, это сильно на неё похоже. И да, я реально это пробовал.
#5
TheMaster

Конструктор
 
Регистрация: 25.02.2006
Хабаровск
Сообщений: 22


Я, собсно, свой кусок на основе этого примера и начал писать. Только вот в примере нету необходимости "двигать" пространство модели в видовом экране. Там эти экраны создаются, и всё. Какой кусок пространства модели туда попал, тот и будет. А мне нужен - конкретный. В моей скачанной версии справки ActiveX (похожей на пример по ссылке) были сведения о прицепляемом к видовому экрану виде. И, соответственно, этот прицепленый вид и можно настраивать на ту часть модели, которую тебе надо отобразить в видовом экране.
Проблема в том, что объектная модель установленного у меня Автокада ничего про прицепляемые виды не знает. Зато там есть свойство target, не описанное в справке ActiveX более поздних версий автокада. Деваться нечего, приходится использовать устаревший механизм. А он взял - и не заработал. Вот и пришлось обращаться за помощью.
TheMaster вне форума  
 
Непрочитано 30.10.2012, 15:12
#6
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


не подскажу по 2006-му. Меня и по 2009-му то уже заворачивают с вопросами в ADN, а ты по 2006-му... Тяжко тебе будет.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Непрочитано 30.10.2012, 15:17
#7
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,413
Отправить сообщение для Александр Ривилис с помощью Skype™


Очень вероятно, что точка pt2 у тебя неправильная. Судя по документации (не проверял) эта точка должна быть в МСК, а не в координатах листа.

Последний раз редактировалось Александр Ривилис, 30.10.2012 в 15:22.
Александр Ривилис вне форума  
 
Непрочитано 30.10.2012, 15:23
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Ты в какой системе координат точку pt2 инициализировал? Нужно задавать координаты в МСК.
__________________
Надеюсь, ты не социальный овощ? Это определяется делами! :welcome:
hwd вне форума  
 
Автор темы   Непрочитано 30.10.2012, 16:05 Да, у меня действительно с координатами косяк...
#9
TheMaster

Конструктор
 
Регистрация: 25.02.2006
Хабаровск
Сообщений: 22


Чертёж у меня представляет собой длинный такой рядочек стандартных листов формата А1, А2 и А3. Начало координат находится ближе к началу этого рядка (но не с самого начала). Определял как: даю команду "отрезок" и вбиваю первую точку - 0, 0, 0. Причём пользовательские системы координат в чертеже не создавались. Собсна, она там одна - мировая.
Дальше, точку pt я делал аналогично: давал команду "отрезок", тыкаю нужную мне точку, какую-нибудь вторую, а потом - в свойствах отрезка смотрю координаты его начала.
Так вот, я нашёл правильные координаты точки target видового экрана. Нужно было сделать прямоугольник, ограничивающий мой чертёж. Длинный такой прямоугольник. Затем провести в нём диагональ и взять у неё середину. Так сказать, геометрический центр прямоугольника, и геометрический центр чертежа. И вот если его сделать началом системы координат, и в эту систему пересчитать координаты нужной мне точки - то она и будет точкой с подходящими координатами.
Отсюда вопрос: можно ли как-нибудь автоматически получать координаты этого самого геометрического центра чертежа? Просто я хочу сделать запрос у пользователя, чтобы он ткнул пальцем, какую рамку надо показывать на очередном листе. И координаты этого "тыка" надо же пересчитывать, а как - непонятно...
TheMaster вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Не работает свойство target объекта AcadPViewport



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Autocad выбор объекта, затем команда не работает Tym AutoCAD 13 05.12.2014 16:55
Получение разрешения на строительство объекта капитального строительства maxummm Прочее. Архитектура и строительство 18 25.08.2010 20:31
Нестабильно работает Sectionplane. Есть зависимость от размера объекта. Zodchii AutoCAD 2 22.10.2009 09:50
Не работает меню параметры привязки объекта Andrey_P AutoCAD 6 05.07.2004 10:05
свойства объекта в 2004 не всегда работает ingener AutoCAD 3 03.12.2003 12:37