Тема: Как отмасштабировать в Layout начереченное ?

Я рисую в модели что-то, потом перехожу на лист с viewport и там что-то выводится. Но выводится в уменьшенном масштабе (виде). Если бы я работал вручную, то выделил бы layout и нажал бы кнопку '_zoom _e   (extens) и все бы автоматически заполнилось. Но как сделать программно эту процедуру ? Может быть следует использовать какое-либо свойство ?

Re: Как отмасштабировать в Layout начереченное ?

Например, так:

Dim newViewport As AcadPViewport
'дальше берёте активный VP или создаёте свой новый
newViewport.Target = Tg
newViewport.StandardScale = acVpCustomScale
newViewport.CustomScale = custom_scale

Tg - это точка, на которую он смотрит, custom_scale - ваше значение масштаба.

Re: Как отмасштабировать в Layout начереченное ?

Спасибо. Но в этом примере я должен фактически вычислять точку и масштаб, по еще неизвестному мне алгоритму, а zoom extent как-то автоматически его вычисляет и заполняет viewport. Может возможно как-то все же автоматизировать процедуру вычисления-заполнения viewport ?

Re: Как отмасштабировать в Layout начереченное ?

Если я правильно поняла, то имеется в виду следующее:
1) Выделяем область
2) Делаем GetBoundingBox MinP, MaxP
3) масштабируем на размеры вьюпорта

min_x = MinP(0): min_y = MinP(1): max_x = MaxP(0): max_y = MaxP(1)
If ((vp_x_max - vp_x_min) / (max_x - min_x)) > ((vp_y_max - vp_y_min) / (max_y - min_y)) Then
    custom_scale = (vp_y_max - vp_y_min) / (max_y - min_y)
Else
    custom_scale = (vp_x_max - vp_x_min) / (max_x - min_x)
End If

здесь vp_x_max, vp_x_min - это х-координаты углов вьюпорта, y - аналогично.
Tg будет центром области выделения (GetBoundingBox).

Re: Как отмасштабировать в Layout начереченное ?

Что значит выделяем область ?
Хотелось бы чтобы процедура вся шла автоматом. Ну zoom extens ведь срабатывает ! А программно как тогда записать ?
Можно изменить вопрос. Как нам перейти в вьюпорт наподобие того как он выделяется жирным контуром при работе в ручном режиме (когда я тыкаю мышью прямо во вьюпорт)?

Re: Как отмасштабировать в Layout начереченное ?

Выделение области подразумевалось мышкой. Если нам нужно увидеть все объекты, то кажется, по умолчанию они все и так будут во вьюпорте, если не колдовать с настройками. Если это не так, то можно попробовать выделить все объекты чертежа... Насчёт "перейти в вьюпорт" - это как? - нам надо через VP работать с объектами из ModelSpase, что ли? Тогда почему нельзя сразу в модели? В переформулированном виде - для меня совсем тёмный лес... :) Я не так давно с вью портами мучаюсь, так что ещё не все их тонкости постигла... Так что не бейте меня ногами. :)

Re: Как отмасштабировать в Layout начереченное ?

Область можно не выделять вручную. _zoom _e использует переменные extmin и extmax, содержащие 3D-координаты прямоугольника, описывающего все объекты чертежа.

Re: Как отмасштабировать в Layout начереченное ?

Я использовал переменные выше - extmin и extmax.
Проблема остается.
Как же все же сделать так, чтобы все добро с ModelSpace вставилось в уже готовый viewport и не выходило за пределы границ viewport ?
Неужели ни у кого не было аналогичных задач ?

Re: Как отмасштабировать в Layout начереченное ?

Так пробовали:

newViewport.ViewportOn = True
newViewport.StandardScale = acVpScaleToFit

именно в этой последовательности..

Re: Как отмасштабировать в Layout начереченное ?

Да получилось, спасибо. Только вот теперь как с размерами быть, какой масштаб для размеров выбрать ?

Re: Как отмасштабировать в Layout начереченное ?

Только вот теперь как с размерами быть, какой масштаб для размеров выбрать ?

В смысле?