[CDR 2023] Правильно масштабировать объект на лист

  • Автор темы Автор темы stone_excel
  • Дата начала Дата начала

stone_excel

Участник
Топикстартер
Сообщения
1
Реакции
0
Приветствую всех!

Поставили задачу для Корела, где требуется правильно масштабировать объект на лист с определенным размером. Объекты по размеру могут быть разные. Например: вставить на лист 100x100 мм объект размером 600х200 мм с отступом от краев (хотелось бы сделать опционально) границы листа 2 мм.

На рисунке отображена схематичная формула, что и как должно быть. Также распишу, что пробовал сделать.


img.png



Что пробовал делать:

1. Нашел на этом же форуме формулу. Попытался ее применить под поставленную задачу.
Код:
Dim MyLayout As ShapeRange
Set MyLayout = ActiveSelectionRange
MyLayout.SetSize ActivePage.SizeHeight * (Val(80) / 100)

Не со всеми объектами работает корректно. Под каждый выделенный объект подстраивать процент масштабирования - не комильфо.

2. Попытался сделать так:
Код:
    ActiveDocument.Unit = cdrMillimeter
    
    SizeObject = ActiveSelection.SizeWidth / ActiveSelection.SizeHeight
    'SizePage = ActivePage.SizeWidth / ActivePage.SizeHeight

    W1 = ActivePage.SizeWidth: ActiveSelection.SizeHeight = ActiveSelection.SizeWidth / SizeObject
    H1 = ActivePage.SizeHeight: ActiveSelection.SizeWidth = ActiveSelection.SizeHeight * SizeObject
    
    ActiveSelection.SetSize W1, H1

Удалось вместить, но без нормальной пропорции - растянуто по ширине. Если убрать параметр H1, то фигура не всегда влезает на нужный лист.


Надеюсь, расписал понятно. Буду рад и очень признателен за помощь в решении задачи!
 
Запрос размера страницы
wp = ActivePage.SizeWidth
hp = ActivePage.SizeHeight
уменьшаете объект до ширины с учётом отступа от края
ActiveSelection.SizeWidth = wp - 2* delta
проверяете что с высотой
If ActiveSelection.SizeHeight > hp - 2* delta Then ActiveSelection.SizeHeight = hp - 2* delta
а ширина уж что получится ...
т.е. изменение размера по одному параметру - тогда пропорции сохранятся
не забудьте про ориентацию - портрет должен соответствовать портрету - иначе выйдет недоразумение
... что делать со страницей в форме эллипса - это вопрос 'hmmm'
 
  • Спасибо
Реакции: dastin
совсем так запутаешь ... у ТС как раз окружность с одним радусом, а прямоугольник не пойми какой
По моей ссылке задача - вписать в произвольный эллипс произвольный прямоугольник с заданным соотношением сторон. Разве не оно?
 
ОНО!
просто в примере вижу квадрат и окружность ...
Как бы там гораздо проще - привести в соответствие диагональ квадрата и диаметр ... с надеждой - м.б. ТС задумается? Как смайлик 'hmmm'
Но ты решил задачу глобально! '))' Сразу на все частные случаи.
 
  • Спасибо
Реакции: mnemonix