Показать сообщение отдельно
Старый 14.09.2018, 12:34   #1004
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Лучше поздно, чем никогда:
Цитата:
Сообщение от 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-й версии. Указываются ширина и высота выреза (х и у в СК контура) и по кнопке меняется угол панели, в котором делается вырез.
Letos вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
andronf (14.09.2018), toucaner (06.03.2021), Артем Валерьевич (16.05.2022)