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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 25.12.2017, 23:12  
Обсуждение готовых скриптов
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555

Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Версия для печати Отправить по электронной почте
Letos Letos вне форума 25.12.2017, 23:12
Рейтинг: ()

Здесь можно обсуждать скрипты из темы Готовые решения для БМ8-2021.

Обратите внимание на полезные ответы в этой теме!


Последний раз редактировалось Uncle; 04.07.2021 в 15:03..
Просмотров: 224156
Ответить с цитированием Вверх
Старый 05.11.2019, 10:31   #101
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от egrigor Посмотреть сообщение
Подскажите, пожалуйста.
В более новых версиях есть Action.LoadModel("")
Есть ли костыль для 8рки с такой функцией? Может опять же через контролы?
Попробуйте это:
PHP код:
Action.Control.Owner.LoadFromFile('d:\\test.b3d'
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
egrigor (05.11.2019), Ovsyanicov (05.11.2019)
Старый 05.11.2019, 15:54   #102
egrigor
Новичок
 
Регистрация: 03.04.2013
Сообщений: 26
Сказал(а) спасибо: 8
Поблагодарили 12 раз(а) в 7 сообщениях
Вес репутации: 0
egrigor на пути к лучшему
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Попробуйте это:
PHP код:
Action.Control.Owner.LoadFromFile('d:\\test.b3d'
Решение работает, спасибо большое за подсказку.
egrigor вне форума   Ответить с цитированием Вверх
Старый 27.12.2019, 14:06   #103
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Kartuz Посмотреть сообщение
Попробовал скрипт, который добавляет к имени/позиции панели имя/позицию блока, в котором она находится. В версии базиса 10 работает, вот только не добавляет к профилям, только к панелям. Это баг или особенность ? И можно исправить ?
Исправил, обновил соответствующий пост.
Letos вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
anb (27.12.2019), Kartuz (28.12.2019), Oldman (27.12.2019), Ovsyanicov (27.12.2019), security (02.03.2020)
Старый 15.02.2020, 12:47   #104
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Максим Геннадьевич Посмотреть сообщение
Скрипт для построения обувницы с выбором по количеству отсеков. Делал для себя, надоело вставлять фрагменты.
Работает в версиях:
8н в остальных не проверял.
В 10-ке не появляется кнопка "Закончить".
Чтобы заработала нужно заменить этот блок кода:
PHP код:
var finishBtn NewButtonInput('Закончить');
finishBtn.OnChange = function() {
    
Action.Commit();
    
Action.Finish();

на этот:

PHP код:
var finishBtn Action.Properties.NewButton('Закончить');
finishBtn.OnClick = function() {
    
Action.Commit();
    
Action.Finish();

Ovsyanicov вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Старый 26.02.2020, 22:57   #105
Meshok
Пользователь
 
Аватар для Meshok
 
Регистрация: 17.12.2016
Сообщений: 89
Сказал(а) спасибо: 27
Поблагодарили 50 раз(а) в 30 сообщениях
Вес репутации: 108
Meshok скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Изменил скрипт.
В новой версии добавлена возможность брать позицию панели. Также можно отключить интерактивный режим (не требовать от пользователя при каждом запуске выбирать, откуда брать панель). Для этого нужно выставить значение переменной interactive равное false и задать значение переменной mode.

Код скрипта v5


PHP код:
const settingsFile 'PanelNumbers.xml';
/**
 * Масштаб фрагмента
 */
const fragScale 10;
/**
 * Режим работы скрипта
 * 0 - надпись из имени панели
 * 1 - надпись из позиции
 */
var mode 0;

/**
 * Константа, указывающая, является ли скрипт интерактивным
 * Правится вручную под нужды пользователя
 */
const interactive true;

/**
 * ДЛя БМ8
 * @param {Contour2D} cont 
 */
function GetMax(cont) {
    var 
result = {
        
x: -100000000,
        
y: -100000000
    
}
    for (var 
0cont.Counti++) {
        var 
item cont.Objects[i];
        switch (
item.ElType) {
            case (
1): //ElementType.Line
                
var p1 item.AsLine().Pos1;
                var 
p2 item.AsLine().Pos2;
                
result.Math.max(result.xp1.xp2.x);
                
result.Math.max(result.yp1.yp2.y);
                break;
            case (
2): //ElementType.Arc
                
var p1 item.AsArc().Pos1;
                var 
p2 item.AsArc().Pos2;
                var 
item.AsArc().Center;
                
result.Math.max(result.xp1.xp2.xc.x);
                
result.Math.max(result.yp1.yp2.yc.y);
                break;
            case (
3): //3ElementType.Circle
                
var cir item.AsCircle();
                var 
cir.Center;
                
result.Math.max(result.xc.cir.CirRadius);
                
result.Math.max(result.yc.cir.CirRadius);
        }
    }
    return 
result;
}

/**
 * ДЛя БМ8
 * @param {Contour2D} cont 
 */
function GetMin(cont) {
    var 
result = {
        
x100000000,
        
y100000000
    
}
    for (var 
0cont.Counti++) {
        var 
item cont.Objects[i];
        switch (
item.ElType) {
            case (
1): //ElementType.Line
                
var p1 item.AsLine().Pos1;
                var 
p2 item.AsLine().Pos2;
                
result.Math.min(result.xp1.xp2.x);
                
result.Math.min(result.yp1.yp2.y);
                break;
            case (
2): //ElementType.Arc
                
var p1 item.AsArc().Pos1;
                var 
p2 item.AsArc().Pos2;
                var 
item.AsArc().Center;
                
result.Math.min(result.xp1.xp2.xc.x);
                
result.Math.min(result.yp1.yp2.yc.y);
                break;
            case (
3): //ElementType.Circle
                
var cir item.AsCircle();
                var 
cir.Center;
                
result.Math.min(result.xc.cir.CirRadius);
                
result.Math.min(result.yc.cir.CirRadius);
        }
    }
    return 
result;
}

// В БМ8 у контура нет свойств Min и Max, поэтому приходится выкручиваться.
// Берём наиболее удалённую точку и ищем ближайшую точку контура.
// На непрямоугольных панелях может некорректно работать.
/**
 * 
 * @param {Contour2D} cont 
 */
function GetContourMin(cont) {
    if (
cont.Min) {
        return 
cont.Min
    
}
    else { 
//ДЛя БМ8
        
return GetMin(cont)
        
// var min = {
        //     x: -10000000,
        //     y: -10000000
        // }
        // return cont.ClosestPoint(min);
    
}
}
/**
 * 
 * @param {Contour2D} cont 
 * @returns {Point}
 */
function GetContourMax(cont) {
    if (
cont.Max) {
        return 
cont.Max
    
}
    else { 
//ДЛя БМ8
        
return GetMax(cont);
        
// var max = {
        //     x: 10000000,
        //     y: 10000000
        // }
        // return cont.ClosestPoint(max);
    
}
}

var 
combo;
if (
interactive) {
    
combo Action.Properties.NewCombo('Брать из панели''Имя\nПозицию');
    
combo.OnChange combo.OnValueChange =
        function () {
            
mode combo.ItemIndex
        
};
    
Action.Properties.NewButton('Применить').OnClick = function () {
        Do();
        
Action.Finish();
    }
    
Action.Properties.Load(settingsFile);
    
mode combo.ItemIndex;
    
Action.OnFinish = function () {
        
Action.Properties.Save(settingsFile);
    }
    
Action.Continue();
}
else
    Do();


function 
CorrectSubContourPositionByPoint(subsrcp) {
    if (!
src.IsPointInside(p)) {
        var 
closedSrc src.ClosestPoint(p);
        var 
shift = {
            
xclosedSrc.p.x,
            
yclosedSrc.p.y
        
}
        
sub.Move(shift.xshift.y);
        
// sub.Move(shift);
        
return true;
    }
    return 
false;
}

/**
 * Попытка вписать вычитаемый контур в исходный
 * @param {Contour2D} sub Вычитаемый контур
 * @param {Contour2D} src Исходный контур
 */
function CorrectSubContourPosition(subsrc) {
    var 
subMax GetContourMax(sub);
    var 
corrected CorrectSubContourPositionByPoint(subsrcsubMax);
    var 
subMin GetContourMin(sub);
    
corrected |= CorrectSubContourPositionByPoint(subsrcsubMin);
    if (
corrected) {
        
subMin GetContourMin(sub);
        
subMax GetContourMax(sub);
    }
    var 
p1 = {
        
xsubMax.x,
        
ysubMin.y,
    }
    
corrected CorrectSubContourPositionByPoint(subsrcp1)
    if (
corrected) {
        
subMin GetContourMin(sub);
        
subMax GetContourMax(sub);
    }
    var 
p2 = {
        
xsubMin.x,
        
ysubMax.y,
    }
    
corrected CorrectSubContourPositionByPoint(subsrcp2)
}

function Do() {
    for (var 
0Model.SelectionCounti++) {
        
/** @type {Panel}*/
        
var pan Model.Selections[i].AsPanel;
        if (
pan) {
            
Undo.Changing(pan);
            var 
pan.Contour
            
var '';
            switch (
mode) {
                case 
0:
                    
pan.Name;
                    break;
                case 
1:
                    
pan.ArtPos;
                    break;
            }
            
n.toUpperCase();
            
nl n.length
            
var min GetContourMin(c);
            var 
max GetContourMax(c);
            var 
center = {
                
x: (min.max.x) / 2,
                
y: (min.max.y) / 2
            
}
            var 
polojeniyePosledSimvola 0;
            const 
rasstoyaniyemejdusimvolami 0.2
            
var NewContour();
            for (
ni 0ni nlni++) {
                var 
add NewContour()
                
add.Load(n[ni] + '.frw');
                var 
ss MashtabirovaniyeContura(addfragScale)
                
polojeniyePosledSimvola polojeniyePosledSimvola rasstoyaniyemejdusimvolami ss.Width
                ss
.Move(polojeniyePosledSimvola0)
                
polojeniyePosledSimvola polojeniyePosledSimvola ss.Width
                s
.Addition(ss);
            }
            
system.log(JSON.stringify(center));
            var 
sCenter = {
                
x: (GetContourMin(s).GetContourMax(s).x) / 2,
                
y: (GetContourMin(s).GetContourMax(s).y) / 2,
            };
            
system.log(JSON.stringify(sCenter));
            
s.Move(center.sCenter.xcenter.sCenter.y);
            
CorrectSubContourPosition(sc);
            var 
sCenter = {
                
x: (GetContourMin(s).GetContourMax(s).x) / 2,
                
y: (GetContourMin(s).GetContourMax(s).y) / 2,
            };
            
system.log(JSON.stringify(sCenter));
            
c.Subtraction(s);
            
pan.Build()
        }
    }
}

function 
MashtabirovaniyeContura(sconturscale) {
    
scontur
    sh 
s.Height
    sw 
s.Width
    s
.Fit(00swsh)
    
ss NewContour()
    
sc s.Count
    
for (0sci++) {
        if (
s[i].ElType == 1) {
            
x1 s[i].Pos1.scale
            y1 
s[i].Pos1.scale
            x2 
s[i].Pos2.scale
            y2 
s[i].Pos2.scale
            ss
.AddLine(x1y1x2y2)
        }
        if (
s[i].ElType == 2) {
            
p1 NewPoint(s[i].Pos1.scales[i].Pos1.scale)
            
p2 NewPoint(s[i].Pos2.scales[i].Pos2.scale)
            
centre NewPoint(s[i].Center.scales[i].Center.scale)

            
//проверка тру или фелс в направлении дуги
            
p1t NewPoint(s[i].Pos1.xs[i].Pos1.y)

            
p2t NewPoint(s[i].Pos2.xs[i].Pos2.y)

            
centre_t NewPoint(s[i].Center.xs[i].Center.y)

            
st NewContour()
            
st.AddArc(p1tp2tcentre_ttrue)
            if (
st[0].ObjLength() == s[i].ObjLength()) {
                
napravleniye true
            
}
            else {
                
napravleniye false
            
}
            
//----проверка тру или фелс в направлении дуги
            
ss.AddArc(p1p2centrenapravleniye)
        }

        if (
s[i].ElType == 3) {
            
xc s[i].Center.scale
            yc 
s[i].Center.scale
            rad 
s[i].CirRadius scale
            ss
.AddCircle(xcycrad)
        }
    }
    return 
ss

[свернуть]


Обновление 1: поправил работу скрипта в 8 версии.

Обновление 2: поправил работу скрипта с контурами, начинающимися не с 0 по ЛСК и обновил код в спойлере

Обновление 3 (12.10.19): Добавил сохранение настроек. Поправил положение надписи- теперь центр надписи совпадает с центром контура панели.

Обновление 4 (14.10.19): Поправил работу скрипта в БМ8 (у контура отсутствовали свойства Min и Max), поправил загрузку настроек (Загружалась в свойства настройка "Позиция", а режим в скрипте не менялся, поэтому брался режим "Имя").

Обновление 5 (17.10.19):
  • Поправил работу с нестандартными контурами: Если при расположении контура вычитания в центре габаритного прямоугольника контура панели контур вычитания выходит за границы контура панели, скрипт пытается сдвинуть контур вычитания так, чтобы он весь уместился на контуре панели.
  • Исправил вычисления минимума/максимума для контура в БМ8.
Из-за отсутствия свойств Min и Max у контура в БМ8 возможны различия в позиционировании контура вычитания между версиями БМ8 и БМ9+



Обсуждение скрипта и предложения по доработке писать сюда
Добрый вечер.
А можно, пожалуйста, скриншот результата нумерации на панели?
Я уже ранее писал, что у меня 8 народная, у Вас скрипт немаленький, чтобы в восьмёрке заработал не особо пОнял как, мне бы увидеть результат.
Есть просто одна идёйка, может и долбанутая, поэтому чтобы не повторяться, хотелось бы увидеть то, что должно получиться.
С Уважением, Михаил.
Meshok вне форума   Ответить с цитированием Вверх
Старый 27.02.2020, 10:00   #106
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Meshok Посмотреть сообщение
Добрый вечер.
А можно, пожалуйста, скриншот результата нумерации на панели?
Я уже ранее писал, что у меня 8 народная, у Вас скрипт немаленький, чтобы в восьмёрке заработал не особо пОнял как, мне бы увидеть результат.
Есть просто одна идёйка, может и долбанутая, поэтому чтобы не повторяться, хотелось бы увидеть то, что должно получиться.
С Уважением, Михаил.
Добрый день. Народной под рукой нет, проверял в демке. Во вложении скриншоты
Первый - нумерация по позициям + версия, в которой выполнялся скрипт
Второй - нумерация по имени, в которой видно, что 3-значный номер не умещается.
На всякий случай напомню, что для корректной работы скрипта нужно, чтобы параметр (имя/позиция), из которого берётся номер, должен состоять только из цифр.

В народной тоже должен заработать, если нет - пришлите скриншот, какую ошибку в лог пишет, разберёмся.
Миниатюры
numbers.jpg   numbers2.jpg  
Letos вне форума   Ответить с цитированием Вверх
Старый 27.02.2020, 20:12   #107
Meshok
Пользователь
 
Аватар для Meshok
 
Регистрация: 17.12.2016
Сообщений: 89
Сказал(а) спасибо: 27
Поблагодарили 50 раз(а) в 30 сообщениях
Вес репутации: 108
Meshok скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Добрый день. Народной под рукой нет, проверял в демке. Во вложении скриншоты
Первый - нумерация по позициям + версия, в которой выполнялся скрипт
Второй - нумерация по имени, в которой видно, что 3-значный номер не умещается.
На всякий случай напомню, что для корректной работы скрипта нужно, чтобы параметр (имя/позиция), из которого берётся номер, должен состоять только из цифр.

В народной тоже должен заработать, если нет - пришлите скриншот, какую ошибку в лог пишет, разберёмся.
Я, наверное, плохо прочитал задание или неправильно его пОнял.
Я думал, что нужно реализовать что-то наподобие такого:
Миниатюры
Цифра.jpg  
Meshok вне форума   Ответить с цитированием Вверх
Старый 28.02.2020, 08:56   #108
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Meshok Посмотреть сообщение
Я, наверное, плохо прочитал задание или неправильно его пОнял.
Я думал, что нужно реализовать что-то наподобие такого:
Не совсем понял, что вам нужно. Во вложении скрин с демки 8 версии после выполнения скрипта. Основное отличие - на боковине номер смотрит в другую сторону. Но, если надо, для ортогональных панелей (у которых направление толщины совпадает с одной из осей ГСК) это поправить можно. Для неортогональных тоже можно, но это чуть сложнее.

Было бы хорошо, если бы вы описали, что вы ожидали от выполнения этого скрипта и какие ожидания сбылись / не сбылись.
Миниатюры
numbers3.png  
Letos вне форума   Ответить с цитированием Вверх
Старый 04.04.2020, 19:00   #109
TD312
Новичок
 
Регистрация: 02.04.2020
Сообщений: 1
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
TD312 пока не определено
По умолчанию

Цитата:
Сообщение от Igordiz Посмотреть сообщение
Привет всем! Этот простой скрипт быстро устанавливает штангу в шкаф. При этом в панели свойств имеется выбор
Штанга круглая или овальная.
Держатель трубы да/нет.
Если держателя нет, то появляется поле ввода значения отступа штанги от верхней панели.
Можете перезалить архив , или загрузить на яндекс диск пожалуйста , при попытке скачать , разлогиневает с форума
TD312 вне форума   Ответить с цитированием Вверх
Старый 05.04.2020, 01:15   #110
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от TD312 Посмотреть сообщение
Можете перезалить архив , или загрузить на яндекс диск пожалуйста , при попытке скачать , разлогиневает с форума
ЯД нет, залил на гугл
https://drive.google.com/open?id=1d9...M93v9K3QE_NV0h
Letos вне форума   Ответить с цитированием Вверх
Ответ

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

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
"Мастер скриптов" — изменение скрипта блока в сцене KD ViPeS KitchenDraw (KD) 40 16.10.2023 19:23
KitchenDraw - библиотека готовых объектов kot100odessa KitchenDraw (KD) 514 04.10.2023 13:30
Шлифовка готовых изделий из акрилового камня Alexotto Обработка искусственного акрилового камня 402 28.07.2020 16:52
Витражи - фото готовых работ vasyl.vitrage Витражи 155 04.10.2016 12:43
Магазин готовых деталей из ЛДСП bar666 ПЕСОЧНИЦА) Раздел для новых участников форума 26 08.03.2015 21:32


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


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

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