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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 06.06.2017, 08:56
Рейтинг: ()

Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
__________________


Последний раз редактировалось systland; 26.12.2017 в 11:52..
Просмотров: 434012
Ответить с цитированием Вверх
Старый 10.03.2020, 17:52   #511
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
Здравствуйте, еще один вопрос к этому скрипту, хочу вставлять опоры справа с помощью симметрии, (у передней правой ножки не правильно отображается клипса). Пробую использовать AddSymmetry, не получается...Может нужна другая команда?
Другая команда вряд ли нужна. Выложите неработающий код, чтобы понять причину.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 10.03.2020, 18:05   #512
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
Здравствуйте, еще один вопрос к этому скрипту, хочу вставлять опоры справа с помощью симметрии, (у передней правой ножки не правильно отображается клипса). Пробую использовать AddSymmetry, не получается...Может нужна другая команда?
В AddSymmetry три параметра - сам объект и плоскость в формате "точка на плоскости + нормаль(направление)". Ниже пример по вставке фрагмента и созданию симметричной копии относительно плоскости YZ (Ось Х - нормаль этой плоскости), смещённой на 1000 (смещение по y и z не имеет смысла т.к. при неизменном x все точки лежат на этой плоскости)

PHP код:
var fname 'Опора.f3d';
var 
OpenFurniture(fname);
var 
fl f.Make(00);
fl.Owner Model.Temp;
var 
fr AddSymmetry(fl, { x1000y0z}, AxisX); 
Letos вне форума   Ответить с цитированием Вверх
Старый 10.03.2020, 20:25   #513
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
В AddSymmetry три параметра - сам объект и плоскость в формате "точка на плоскости + нормаль(направление)". Ниже пример по вставке фрагмента и созданию симметричной копии относительно плоскости YZ (Ось Х - нормаль этой плоскости), смещённой на 1000 (смещение по y и z не имеет смысла т.к. при неизменном x все точки лежат на этой плоскости)

PHP код:
var fname 'Опора.f3d';
var 
OpenFurniture(fname);
var 
fl f.Make(00);
fl.Owner Model.Temp;
var 
fr AddSymmetry(fl, { x1000y0z}, AxisX); 
попробовал так, но тогда первая опора не попадает в блок и всегда позиционируется в одной точке. В скрипте правая панель вставляется через симметрию, а ножка не работает по этой схеме...
if (VCok.ItemIndex == 0) {
OporaB = OpenFurniture('Ножка пластиковая 100мм.fr3d');
OporaF = OpenFurniture('Ножка пластиковая с клипсой 100мм.fr3d');
}
if (VCok.ItemIndex == 1) {
OporaB = OpenFurniture('Ножка пластиковая 120мм.fr3d');
OporaF = OpenFurniture('Ножка пластиковая с клипсой 120мм.fr3d');
}
if (VCok.ItemIndex == 2) {
OporaB = OpenFurniture('Ножка пластиковая 150мм.fr3d');
OporaF = OpenFurniture('Ножка пластиковая с клипсой 150мм.fr3d');
}

OporaB.Mount1(Dno, 50, 0, 70, -90);
OporaB = AddSymmetry(OporaB, NewVector(Dl.Value / 2, 0, 0), AxisX);
//OporaB.Mount1(Dno, Dl.Value - 50, 0, 70, 90);

OporaF.Mount1(Dno, 50, 0, Gl.Value - 70, -90);
//OporaF = AddSymmetry(OporaF, NewVector(Dl.Value / 2, 0, 0), AxisX);
//OporaF.Mount1(Dno, Dl.Value - 50, 0, Gl.Value - 70, 90);

Последний раз редактировалось Rafael M; 10.03.2020 в 20:46. Причина: ошибка в тексте
Rafael M вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
wizardpnz (10.03.2020)
Старый 11.03.2020, 09:43   #514
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
OporaB.Mount1(Dno, 50, 0, 70, -90);
OporaB = AddSymmetry(OporaB, NewVector(Dl.Value / 2, 0, 0), AxisX);
//OporaB.Mount1(Dno, Dl.Value - 50, 0, 70, 90);

OporaF.Mount1(Dno, 50, 0, Gl.Value - 70, -90);
//OporaF = AddSymmetry(OporaF, NewVector(Dl.Value / 2, 0, 0), AxisX);
//OporaF.Mount1(Dno, Dl.Value - 50, 0, Gl.Value - 70, 90);
Не совсем понял этот фрагмент кода. По коду получается, что OporaB - объект с информацией о фурнитуре, а не 3D объект в модели и симметрия делается не для 3D соответственно. Попробуйте заменить код:
PHP код:
/* Вместо этого кода: */

// OporaB.Mount1(Dno, 50, 0, 70, -90);
// OporaB = AddSymmetry(OporaB, NewVector(Dl.Value / 2, 0, 0), AxisX);

/* Вставить следующий код: */

// 3Д объект опоры
var opora OporaB.Mount1(Dno50070, -90);
opora.Owner block// Если автоматически не добавляется опора в блок
// 3Д объект симметричной опоры
var oporaB AddSymmetry(oporaNewVector(Dl.Value 200), AxisX);
oporaB.Owner block// Если автоматически не добавляется опора в блок 
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Rafael M (11.03.2020)
Старый 11.03.2020, 10:31   #515
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Letos, Спасибо огромное, теперь все получилось, без дополнительной строки Owner.
var oporaBL = OporaB.Mount1(Dno, 50, 0, 70, -90);
var oporaBR = AddSymmetry(oporaBL, NewVector(Dl.Value / 2, 0, 0), AxisX);

var oporaFL = OporaF.Mount1(Dno, 50, 0, Gl.Value - 70, -90);
var oporaFR = AddSymmetry(oporaFL, NewVector(Dl.Value / 2, 0, 0), AxisX)
Rafael M вне форума   Ответить с цитированием Вверх
Старый 13.03.2020, 13:50   #516
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Здравствуйте, подскажите пожалуйста, как продолжить работу скрипта, например расставляя полки в разные секции шкафов?
Rafael M вне форума   Ответить с цитированием Вверх
Старый 13.03.2020, 14:21   #517
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
Здравствуйте, подскажите пожалуйста, как продолжить работу скрипта, например расставляя полки в разные секции шкафов?
Стандартная команда, продолжающая скрипт после завершения основного кода: Action.Continue().
Если её вызвать, тогда скрипт после завершения основного кода остаётся "висеть", ожидая сообщений, которые он может обработать (нажатие кнопок на панели свойств, движение/клик мыши и т.д.).
Если это не тот ответ, что вы ожидали увидеть, опишите поподробнее последовательность действий, которой вы хотите добиться.
Letos вне форума   Ответить с цитированием Вверх
Старый 14.03.2020, 11:44   #518
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Стандартная команда, продолжающая скрипт после завершения основного кода: Action.Continue().
Если её вызвать, тогда скрипт после завершения основного кода остаётся "висеть", ожидая сообщений, которые он может обработать (нажатие кнопок на панели свойств, движение/клик мыши и т.д.).
Если это не тот ответ, что вы ожидали увидеть, опишите поподробнее последовательность действий, которой вы хотите добиться.
Я имел ввиду если нужно установить полки в n-количество шкафов. Обычно запускаю скрипт, указываю необходимые элементы, заполняю параметры, завершаю скрипт и полки устанавливаются. Но как продолжить установку полки в другие шкафы, например кнопкой продолжить? То есть заново указать уже другие элементы, если необходимо изменить параметры.
Rafael M вне форума   Ответить с цитированием Вверх
Старый 14.03.2020, 17:47   #519
Rafael M
Пользователь
 
Регистрация: 19.02.2017
Сообщений: 38
Сказал(а) спасибо: 16
Поблагодарили 52 раз(а) в 9 сообщениях
Вес репутации: 101
Rafael M скоро придёт к известности
По умолчанию

Тут я попробовал while, но после указания передней границы скрипт запрашивает сразу левую панель, без нажатия кнопки "Продолжить", а после нажатия "Закончить" сообщает об ошибке на 15 строке.

Скрытый текст

FileOptions = 'Двери.xml'; // файл с параметрами

MakeProperties (); //Открываем окно с параметрами

Action.Properties.Load(FileOptions);// считываем параметры из файла "Двери"
Action.OnFinish = function () {
Action.Properties.Save(FileOptions); //сохраняем изменения
}

while (true)
{
LeftPan = GetPanel('Укажите левую панель');
RightPan = GetPanel('Укажите правую панель');

Left = LeftPan.GabMin.x;
Right = RightPan.GabMax.x;

SetCamera(p3dFront);//ставим вид спереди

TopEd = GetEdge("Укажите верхнюю границу", AxisX).First.y ;
BotEd = GetEdge("Укажите нижнюю границу", AxisX) .First.y ;

SetCamera(p3dIsometric);
Front = GetEdge('Укажите переднюю границу', AxisY).First.z;

Make();
}
Action.Continue();

function MakeProperties () {
Prop = Action.Properties;
Dveri = Prop.NewGroup('Двери')
MatDv = Dveri.NewMaterial('Материал дверей');
DverLR = Dveri.NewCombo('Открывание', 'Влево\nВправо\nДве двери');
OH = Dveri.NewNumber('Фуга гор-ная', 1.5);
OV = Dveri.NewNumber('Фуга верт-ная', 1.5);
TP = Dveri.NewNumber('Толщина боковин', 16);

Furn = Prop.NewGroup('Фурнитура')
Petli = Furn.NewFurniture('Петли');
LP = Furn.NewNumber('Расстояние до петель', 100);
FurnDP = Furn.NewCombo('Кол-во петель', '2\n3\n4\n5');

OkBtn = Prop.NewButton('Продолжить');//Добавим кнопку
OkBtn.OnClick = function() {
Action.Commit();
//NewDveri();
}

OkBtn = Prop.NewButton('Закончить'); //Добавим кнопку
OkBtn.OnClick = function() {
Make();
Action.Finish();
}

Prop.OnChange = function(){
Make();
};
}
function Make() {
DeleteNewObjects(); //очистим
MatDv.SetActive(); //активируем материал двери
Thick = ActiveMaterial.Thickness;//толщина материала

Width = Right - Left;
Height = TopEd - BotEd;
h1 = (Height/2) + BotEd;
x1 = Left + OV.Value;
x2 = Right - OV.Value;
y1 = BotEd + OH.Value;
y2 = TopEd - OH.Value;
c = (Width/2) + Left;
c1 = c - OV.Value;
c2 = c + OV.Value;
z1 = Front;
h2 = (Height - OH.Value*2 - LP.Value*2)/3;
h2 = Math.round(h2);
h3 = (Height - OH.Value*2 - LP.Value*2)/4;
h3 = Math.round(h3);

if (DverLR.ItemIndex == 0){ //левая дверь
DverL = AddFrontPanel(x1, y1, x2, y2, z1);
DverL.Name = 'дверь левая';
DverL.TextureOrientation = TextureOrientation.Vertical;
FPetli = Petli.Value;
if (FurnDP.ItemIndex == 0){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
}
if (FurnDP.ItemIndex == 1){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, h1, 0);
}
if (FurnDP.ItemIndex == 2){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value + h2, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value - h2, 0);
}
if (FurnDP.ItemIndex == 3){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, h1, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value + h3, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value - h3, 0);
}
}

if (DverLR.ItemIndex == 1){ //правая дверь
DverR = AddFrontPanel(x1, y1, x2, y2, z1);
DverR.Name = 'дверь правая';
DverR.TextureOrientation = TextureOrientation.Vertical;
FPetli = Petli.Value;
if (FurnDP.ItemIndex == 0){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
}
if (FurnDP.ItemIndex == 1){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, h1, 0);
}
if (FurnDP.ItemIndex == 2){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value + h2, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value - h2, 0);
}
if (FurnDP.ItemIndex == 3){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, h1, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value + h3, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value - h3, 0);
}

}

if (DverLR.ItemIndex == 2){ //две двери
DverL = AddFrontPanel(x1, y1, c1, y2, z1);
DverL.Name = 'дверь левая'; //строим левую дверь
DverL.TextureOrientation = TextureOrientation.Vertical;
FPetli = Petli.Value;
if (FurnDP.ItemIndex == 0){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
}
if (FurnDP.ItemIndex == 1){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, h1, 0);
}
if (FurnDP.ItemIndex == 2){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value + h2, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value - h2, 0);
}
if (FurnDP.ItemIndex == 3){
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, h1, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y1 + LP.Value + h3, 0);
FPetli.Mount(LeftPan, DverL, Left + TP.Value, y2 - LP.Value - h3, 0);
}


DverR = AddFrontPanel(c2, y1, x2, y2, z1);
DverR.Name = 'дверь правая'; //строим правую дверь
DverL.TextureOrientation = TextureOrientation.Vertical;
FPetli = Petli.Value;
if (FurnDP.ItemIndex == 0){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
}
if (FurnDP.ItemIndex == 1){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, h1, 0);
}
if (FurnDP.ItemIndex == 2){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value + h2, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value - h2, 0);
}
if (FurnDP.ItemIndex == 3){
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, h1, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y1 + LP.Value + h3, 0);
FPetli.Mount(RightPan, DverR, Right - TP.Value, y2 - LP.Value - h3, 0);
}

}

}
[свернуть]
Rafael M вне форума   Ответить с цитированием Вверх
Старый 14.03.2020, 22:36   #520
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Rafael M Посмотреть сообщение
Тут я попробовал while, но после указания передней границы скрипт запрашивает сразу левую панель, без нажатия кнопки "Продолжить", а после нажатия "Закончить" сообщает об ошибке на 15 строке.
В код особо не вникал, но можно задание границ и создание объекта запихнуть в функцию (вместо цикла) и её вызывать по кнопке продолжения. Например, так:

Код

PHP код:
function NewDveri()
{
LeftPan GetPanel('Укажите левую панель');
RightPan GetPanel('Укажите правую панель');

Left LeftPan.GabMin.x;
Right RightPan.GabMax.x;

SetCamera(p3dFront);//ставим вид спереди

TopEd GetEdge("Укажите верхнюю границу"AxisX).First.;
BotEd GetEdge("Укажите нижнюю границу"AxisX) .First.;

SetCamera(p3dIsometric);
Front GetEdge('Укажите переднюю границу'AxisY).First.z;

Make();
}
NewDveri();

//...................................
//...................................

OkBtn Prop.NewButton('Продолжить');//Добавим кнопку
OkBtn.OnClick = function() {
Action.Commit();
Action.AsyncExec(NewDveri);

[свернуть]
Letos вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Rafael M (15.03.2020)
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10 1264 13.03.2024 22:48
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7 2230 29.11.2019 10:37
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


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


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

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