Лучше поздно, чем никогда:
Цитата:
Сообщение от shapori
Подскажите плиз, как реализовать вырез в панели по заданным размерам с помощью скрипта?
|
Вот замороченный, но уже готовый вариант:
Код:
var panel = Model.Selected.AsPanel;
var srcCnt = panel.Contour;
// 0-3
var corner = 0;
// srcCnt.Assign()
var defaultCnt = NewContour();
defaultCnt.Assign(srcCnt);
var subCnt = NewContour();
var width = Action.Properties.NewNumber('Ширина выреза');
width.Value = 100;
var height = Action.Properties.NewNumber('Высота выреза');
height.Value = 100;
function ParamChanged() {
subCnt.Clear();
srcCnt.Clear();
srcCnt.Assign(defaultCnt);
//var cntMax = srcCnt.Max;
//var cntMin = srcCnt.Min;
var cntMax = {
x: srcCnt.Width,
y: srcCnt.Height
};
var cntMin = {
x: 0,
y: 0
};
var widthValue = width.Value;
var heightValue = height.Value;
switch (corner) {
case 0:
subCnt.AddRectangle(cntMin.x, cntMin.y,
cntMin.x + widthValue, cntMin.y + heightValue);
break;
case 1:
subCnt.AddRectangle(cntMax.x, cntMin.y,
cntMax.x - widthValue, cntMin.y + heightValue);
break;
case 2:
subCnt.AddRectangle(cntMax.x, cntMax.y,
cntMax.x - widthValue, cntMax.y - heightValue);
break;
case 3:
subCnt.AddRectangle(cntMin.x, cntMax.y,
cntMin.x + widthValue, cntMax.y - heightValue);
break;
}
srcCnt.Subtraction(subCnt);
panel.Build();
}
//width.OnValueChange = ParamChanged;
//height.OnValueChange = ParamChanged;
width.OnChange = ParamChanged;
height.OnChange = ParamChanged;
Action.Properties.NewButton('Изменить угол панели для выреза').OnClick =
function () {
corner++;
if (corner > 3) {
corner = 0;
}
ParamChanged();
}
Action.Continue();
Проверял на демке 8. Закомментированный код - изменённые строки для 10-й версии. Указываются ширина и высота выреза (х и у в СК контура) и по кнопке меняется угол панели, в котором делается вырез.