Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 21.03.2018, 14:48  
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555

Сказал(а) спасибо: 127
Поблагодарили 1,034 раз(а) в 367 сообщениях
Версия для печати Отправить по электронной почте
Letos Letos вне форума 21.03.2018, 14:48
Рейтинг: ()

Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Просмотров: 255619
Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
PravCom (28.07.2021), Максим Геннадьевич (08.06.2018)
Старый 13.05.2024, 08:57   #511
f2dvasek
Новичок
 
Регистрация: 11.10.2023
Сообщений: 9
Сказал(а) спасибо: 9
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
f2dvasek пока не определено
По умолчанию

А возможно ли скриптом решить такую задачу:
На чертежах панелей тыкать мышью на нужную грань панели и автоматом ставить какой-то спец знак (допустим треугольник). Для условного обозначения края (кромка, шлифовка или еще что-то), без текста и чтобы окно это не выпадало (где надо вводить текст)
f2dvasek вне форума   Ответить с цитированием Вверх
Старый 13.05.2024, 12:24   #512
skromvit
Местный
 
Аватар для skromvit
 
Регистрация: 22.12.2008
Сообщений: 268
Сказал(а) спасибо: 55
Поблагодарили 241 раз(а) в 174 сообщениях
Вес репутации: 262
skromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личностьskromvit - весьма и весьма положительная личность
По умолчанию

Цитата:
Сообщение от f2dvasek Посмотреть сообщение
А возможно ли скриптом решить такую задачу:
На чертежах панелей тыкать мышью на нужную грань панели и автоматом ставить какой-то спец знак (допустим треугольник). Для условного обозначения края (кромка, шлифовка или еще что-то), без текста и чтобы окно это не выпадало (где надо вводить текст)
В чертежах скрипты не работают
skromvit вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
f2dvasek (14.05.2024)
Старый 13.05.2024, 16:52   #513
Megabyte
Местный
 
Регистрация: 11.07.2010
Сообщений: 137
Сказал(а) спасибо: 322
Поблагодарили 118 раз(а) в 46 сообщениях
Вес репутации: 205
Megabyte скоро придёт к известностиMegabyte скоро придёт к известности
По умолчанию

Цитата:
Сообщение от f2dvasek Посмотреть сообщение
А возможно ли скриптом решить такую задачу:
На чертежах панелей тыкать мышью на нужную грань панели и автоматом ставить какой-то спец знак (допустим треугольник). Для условного обозначения края (кромка, шлифовка или еще что-то), без текста и чтобы окно это не выпадало (где надо вводить текст)
Как вариант, попробуйте сохранить спецзнак, как 2д фрагмент, а на чертеже ставьте, как 2д фрагмент.
Megabyte вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
f2dvasek (14.05.2024)
Старый 15.05.2024, 17:43   #514
Garry-K
Новичок
 
Регистрация: 02.12.2014
Сообщений: 19
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Garry-K пока не определено
По умолчанию

PHP код:
/**
 * Имя файла настроек
 */
// @note   Имя файла, переменные
const filename 'settings.xml';
// const filename = process.env.USERPROFILE + "\\Documents\\Bazis\\Scripts\\SettingsRuchki.xml";
var px;
var 
py;
var 
pz;

var 
x1 0;
var 
y1 0;

var 
MinX;
var 
MaxX;
var 
MinY;
var 
MaxY;
var 
MinZ;
var 
MaxZ;

// @note  свойства
var props Action.Properties;
// var settings = props.NewGroup('Настройки');
var Ruchka props.NewFurniture('Ручка').Value;

var 
Ruchkalength props.NewNumber('Длина ручки'96);
var 
OtstupX props.NewNumber('Отступ по горизонтали');
var 
OtstupY props.NewNumber('Отступ по вертикали');

var 
Ugol props.NewNumber('Угол поворота');
Ugol.Visible false;
var 
Ugol_ props.NewBool('Ручка гориз/верт'true);

Ugol_.OnChange = function () {
    if (
Ugol_.Value == true) {
        
Ugol.Value 0;
        
x1 Ruchkalength.Value 2;
        
y1 0;
    } else {
        
Ugol.Value 90;
        
x1 0;
        
y1 Ruchkalength.Value 2;
    }
}
Ruchkalength.OnChange = function () {
    if (
Ugol_.Value == true) {
        
Ugol.Value 0;
        
x1 Ruchkalength.Value 2;
        
y1 0;
    } else {
        
Ugol.Value 90;
        
x1 0;
        
y1 Ruchkalength.Value 2;
    }
}
var 
UstanovkaOtPola props.NewBool('Устанавливать от пола');
var 
OtPola props.NewNumber('Расстояние от пола');
var 
InBlock props.NewBool('Объединять в блок');
props.Load(filename);
var 
finishBtn props.NewButton('Закончить');



finishBtn.OnClick = function () {
    
Action.Finish();
}

//@note   OnCkick
Action.OnClick = function () {
    
Action.Commit();
    
//создаем ссылку на новый объект модели - это установленая ручка
    
var new_fast Model.Objects[Model.Count 1];
    
//если выбрано "создание нового блока"
    
if (InBlock.Value) {
        
//создаем новый блок
        
var new_block AddBlock('фасад с ручкой');
        
new_block.Build();
        
Action.Commit();
        
new_block Model.Objects[Model.Count 1];
        
//устанавливаем и поворачиваем новый блок в пространстве так же как расположена панель
        
new_block.Translate(panel.ToGlobal(NewVector(000)));
        
new_block.Orient(panel.NToGlobal(AxisZ), panel.NToGlobal(AxisY));
        
//переносим новый блок в тот уровень иерархии  где находится панель
        //с сохранением расположения в глобальном пространстве
        
new_block.ReTransform(new_block.Ownerpanel.Owner);
        
new_block.Owner panel.Owner;
        
//переносим панель в новый блок
        //с сохранением расположения в глобальном пространстве
        
panel.ReTransform(panel.Ownernew_block);
        
panel.Owner new_block;
    }
    
//переносим ручку в тот уровень иерархии  где находится панель
    //с сохранением расположения в глобальном пространстве
    
new_fast.ReTransform(new_fast.Ownerpanel.Owner);
    
new_fast.Owner panel.Owner;
}
//

if (Ugol_.Value == true) {
    
Ugol.Value 0;
    
x1 Ruchkalength.Value 2;
    
y1 0;
} else {
    
Ugol.Value 90;
    
x1 0;
    
y1 Ruchkalength.Value 2;
}

// @note   Фронт панель
function GetKoordFrontPanel() {
    
CenterX = (MaxX MinX) / MinX;
    
CenterY = (MaxY MinY) / MinY;

    if (
Action.Pos3.CenterX 30) {
        
px MinX OtstupX.Value x1;
        if (
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if (
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;

        } else {
            
py CenterY;

        }
    } else if (
Action.Pos3.CenterX 30) {
        
px MaxX OtstupX.Value x1;
        if (
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if (
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;

        } else {
            
py CenterY;

        }
    } else {
        
px CenterX;
        if (
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if (
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;

        } else {
            
py CenterY;

        }
    }

    if (
UstanovkaOtPola.Value) {
        
py OtPola.Value y1;
    }

    
pz MinZ Math.round(panel.Thickness);
}

//@note   Верт панель
function GetKoordVertPanel() {
    
CenterX = (MaxZ MinZ) / MinZ;
    
CenterY = (MaxY MinY) / MinY;

    if (
Action.Pos3.CenterX 30) {
        
pz MinZ OtstupX.Value x1;
        if (
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if (
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;

        } else {
            
py CenterY;

        }
    } else if (
Action.Pos3.CenterX 30) {
        
pz MaxZ OtstupX.Value x1;
        if (
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if (
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;

        } else {
            
py CenterY;

        }
    } else {
        
pz CenterX;
        if (
Action.Pos3.CenterY 30) {
            
py MinY OtstupY.Value y1;
        } else if (
Action.Pos3.CenterY 30) {
            
py MaxY OtstupY.Value y1;

        } else {
            
py CenterY;

        }
    }

    if (
UstanovkaOtPola.Value) {
        
py OtPola.Value y1;
    }

    if (
Action.ViewDir.== 1) {
        
px MinX panel.Thickness;
    }
    if (
Action.ViewDir.== -1) {
        
px MinX panel.Thickness;
    }
    if (
Action.ViewDir.!== -&& Action.ViewDir.!== 1) {
        
px Action.Pos3.x;
    }
}

//@note   OnMove
Action.OnMove = function () {
    
DeleteNewObjects();
    
Obj Action.Get3DObject();
    if (
typeof Obj == "undefined") { }
    else {
        if (
Obj.AsPanel) {
            
panel Obj.AsPanel;
            if (
panel.ToGlobal(panel.GMin).panel.ToGlobal(panel.GMax).x) {
                
MinX panel.ToGlobal(panel.GMin).x;
                
MaxX panel.ToGlobal(panel.GMax).x;
            } else {
                
MinX panel.ToGlobal(panel.GMax).x;
                
MaxX panel.ToGlobal(panel.GMin).x;
            }

            if (
panel.ToGlobal(panel.GMin).panel.ToGlobal(panel.GMax).y) {
                
MinY panel.ToGlobal(panel.GMin).y;
                
MaxY panel.ToGlobal(panel.GMax).y;
            } else {
                
MinY panel.ToGlobal(panel.GMax).y;
                
MaxY panel.ToGlobal(panel.GMin).y;
            }

            if (
panel.ToGlobal(panel.GMin).panel.ToGlobal(panel.GMax).z) {
                
MinZ panel.ToGlobal(panel.GMin).z;
                
MaxZ panel.ToGlobal(panel.GMax).z;
            } else {
                
MinZ panel.ToGlobal(panel.GMax).z;
                
MaxZ panel.ToGlobal(panel.GMin).z;
            }

            if ((
MaxX MinX) > (MaxZ MinZ)) {
                
GetKoordFrontPanel();
            } else {
                
GetKoordVertPanel();
            };

            
Ruchka.Mount1(ObjpxpypzUgol.Value);

        }
    }
}

Action.OnFinish = function () {
    
props.Save(filename)
}

Action.Continue(); 
Но он периодически, то работает нормально, а то просто удаляет всю модель. Приходится закрывать Базис без сохранения и запускать заново.

Последний раз редактировалось AlexBolton; Вчера в 00:16. Причина: оформление
Garry-K вне форума   Ответить с цитированием Вверх
Старый 25.05.2024, 23:54   #515
nemotsart
Новичок
 
Регистрация: 17.11.2018
Сообщений: 1
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
nemotsart пока не определено
По умолчанию

Цитата:
Сообщение от Артем Валерьевич Посмотреть сообщение
Попробуйте этот вариант:

Код:
/*
Скрипт вертикальной фрезеровки панелей
26.05.2023 (с) Артем, email - asked77@gmail.com
*/

UnSelectAll();
Panel = GetPanel("Выберите панель");
// Action.DS.DrawMode = 2;
Undo.RecursiveChanging(Panel);

Prop = Action.Properties;
// ------------------------------------------------------------------------------------------------------------------------------
sLeft = Prop.NewNumber('Отступ слева:', 50);
sRight = Prop.NewNumber('Оступ справа:', 0);
sButton = Prop.NewButton('Выровнять отступы?');
sUp = Prop.NewNumber('--- сверху:', 50);
sDown = Prop.NewNumber('--- снизу:', 50);
// ------------------------------------------------------------------------------------------------------------------------------
sWidth = Prop.NewNumber('Ширина паза:', 0);
sHeight = Prop.NewNumber('Глубина паза:', 0);
sStep = Prop.NewNumber('Сдвиг паза по глубине:');
sStep.MinValue = 0; sStep.MaxValue = 3;
sInterval = Prop.NewNumber('Интервал между пазами:', 10);
sText = Prop.NewString('Имя паза:', 'stripes');
// ------------------------------------------------------------------------------------------------------------------------------
sCount = Prop.NewNumber('Убрать паз справа', 0);
sForm = Prop.NewSelector('Выбрать форму паза', '');
sTere = Prop.NewBool('Перемычки', true);
sLeft.BackColor = sUp.BackColor = sDown.BackColor = sInterval.BackColor = sCount.BackColor = sForm.BackColor = sStep.BackColor = 15728607;
sRight.Enabled = sWidth.Enabled = sHeight.Enabled = sText.Enabled = false;
// ------------------------------------------------------------------------------------------------------------------------------

sButton.OnClick = () => {
    while (Math.abs(sLeft.Value - sRight.Value) > 1) {
        sLeft.Value = ((sLeft.Value + sRight.Value) / 2).toFixed(0);;
    }
    CreateStripes(sForm.Value);
};

Prop.NewButton('Ok').OnClick = () => {
    CreateStripes(sForm.Value);
    Action.Finish();
};

sForm.OnClick = () => {
    sForm.Value = system.askFileName('frw');
    CreateStripes(sForm.Value);
};

sLeft.OnChange = sUp.OnChange = sDown.OnChange = sInterval.OnChange = sDown.OnChange = sStep.OnChange = sStep.OnChange = sTere.OnChange = sCount.OnChange = () => {
    CreateStripes(sForm.Value);
}

FileOptions = 'stripes.xml';
Action.Properties.Load(FileOptions);

Action.OnFinish = () => {
    Action.Properties.Save(FileOptions);
}

CreateStripes(sForm.Value);
Action.Continue();

function CreateStripes(sF) {

    for (i = Panel.Cuts.Count - 1; i >= 0; i--) {
        if (Panel.Cuts.Cuts[i].Name == sText.Value) {
            Panel.Cuts.Delete(i);
        }
    }

    yMin = Panel.GMin.y + sDown.Value;
    yMax = Panel.GMax.y - sUp.Value;

    if (sF) {
        Cut = Panel.AddCut(sText.Value);
        Cut.Contour.Load(sF);
        Cut.Contour.Move(0, Panel.Thickness + sStep.Value);
        sWidth.Value = Cut.Contour.Width.toFixed(2);
        sHeight.Value = Cut.Contour.Height.toFixed(2);
        sStep.MaxValue = sHeight.Value;
        x = Math.round((Panel.Contour.Width - sLeft.Value) / (sWidth.Value + sInterval.Value));
        sRight.Value = ((Panel.Contour.Width - sLeft.Value) - (x - 1 - sCount.Value) * (sWidth.Value + sInterval.Value) - sWidth.Value).toFixed(0);
        for (k = 0; k < x - sCount.Value; k++) {
            [yMin, yMax] = [yMax, yMin];
            Cut.Trajectory.AddLine(Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + k * (sWidth.Value + sInterval.Value), yMin, Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + k * (sWidth.Value + sInterval.Value), yMax);
            if (sTere.Value) {
                Cut.Trajectory.AddLine(Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + k * (sWidth.Value + sInterval.Value), yMin, Panel.GMin.x + sLeft.Value + sWidth.Value / 2 + (k + 1) * (sWidth.Value + sInterval.Value), yMin);
            }
        }
        if (sTere.Value) Cut.Trajectory.Delete(Cut.Trajectory.Count - 1);
    };

    Panel.Build();
}
Очень полезный скрипт, но запускается только в случае-если это первая операция в модели. Если уже что-то делал, то совсем никак не реагирует. Обидно, что не понимаю. Пофиксил бы сам. Но, если можете починить-почините пожалуйста
nemotsart вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обсуждение готовых скриптов Letos Базис-мебельщик. Скрипты 492 04.03.2024 11:42
БАЗИС 8 - общее обсуждение DTioutiou Базис-мебельщик 8 2092 15.08.2023 01:44
БАЗИС 8 - Фурнитура, обсуждение nayrogi Базис-мебельщик 8 1390 16.04.2022 22:47
MasterBox 7. Работа с ящиками в системе БАЗИС Daddy Базис-мебельщик 7 605 13.11.2019 11:13
Общие вопросы по системе БАЗИС 7.0 COBA Базис-мебельщик 7 904 24.08.2016 19:16


Текущее время: 19:28. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL

џндекс.Њетрика