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

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

Меню

Маркет


беспроводные выключатели для мебели
Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 9 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


Т.к. при запуске скрипта на другом компе возникает ошибка о не возможности открыть то или иной файл и скрипт до конца не отрабатывает свой текст. Не соблюдается "чистота проверки" работы скрипта.

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Для работы скриптов от Igor_482 необходим установленный ODBC драйвер FireBird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX, MSCOMCTL.OCX и MSSTDFMT.DLL (сообщение с описанием установки этих модулей в ОС, ссылка на модули и исходник "FBDBDialog.dll") а так же файл "ADODB.ini" с настройками соединения к БД в папке со скриптом.

ADODB.ini


[General]
FDBServ = t001
FBSPort = 14357
FDBFile = D:\DBBM\Библиотека\БД\BMDB09.FDB
FBCFile = C:\Windows\System32\fbclient.dll
----------------------------------------------
Переменные .ini:
FDBServ - имя ПК на котором находится сервер FireBird с используемой БД (если локально, то параметр: localhost или 127.0.0.1);
FBSPort - в настройке не нуждается (по умолчанию: 14357);
FDBFile - локальный путь к БД на сервере FireBird;
FBCFile - путь к файлу "fbclient.dll" (находится в корневой папке программы Базис).
[свернуть]

Последний раз редактировалось systland; 23.09.2016 в 11:52..
Просмотров: 985218
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 17.04.2018, 11:44   #1421
Kartuz
Пользователь
 
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
Kartuz пока не определено
По умолчанию

1. просто панели (на данный момент нужда только в этом)
2. да, сжать контур по сторонам на 1 мм ( позже в редакторе скрипта смогу подредактировать размер обрезки )
Kartuz вне форума   Ответить с цитированием Вверх
Старый 17.04.2018, 14:19   #1422
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Kartuz Посмотреть сообщение
1. просто панели (на данный момент нужда только в этом)
2. да, сжать контур по сторонам на 1 мм ( позже в редакторе скрипта смогу подредактировать размер обрезки )
Вот пример. Запускаете скрипт, выбираете панель - она сжимается. На данный момент проверить в 9 версии нет возможности, делал в 10. Возможно, в 9 версии нет функции Fit у контура - тогда придется попотеть и придумывать костыли для сжатия контура. И проверял быстро, на прямоугольных панелях, поэтому утверждать работоспособность у панелей со сложным контуром не берусь.

Код:
NewButtonInput('Закончить').OnChange = function (){
    Action.Finish();
}
while (true){
    var panel = GetPanel('Укажите панель');    
    if (panel){
        Undo.Changing(panel);
        var cnt = panel.Contour;
        var min = cnt.Min;
        var max = cnt.Max;
        cnt.Fit(min.x + 1, min.y + 1, max.x - 1, max.y - 1);
        panel.Build();
    }
    else
        break;
}
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Kartuz (17.04.2018), nicu (29.10.2023)
Старый 17.04.2018, 15:59   #1423
Kartuz
Пользователь
 
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
Kartuz пока не определено
По умолчанию

Вот я пень. Забыл, что для 8 базиса нужно было указать. Включил 9 демку, там всё работает. Добавьте, если не трудно для нескольких панелей, а то по одной тыкать долговато
Kartuz вне форума   Ответить с цитированием Вверх
Старый 17.04.2018, 16:15   #1424
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Kartuz Посмотреть сообщение
Вот я пень. Забыл, что для 8 базиса нужно было указать. Включил 9 демку, там всё работает. Добавьте, если не трудно для нескольких панелей, а то по одной тыкать долговато
А он и так должен для нескольких работать из-за цикла while (true). Указываете одну панель, следом другую, третью и так далее.

P.S. Про девятую версию я подумал исхода из названия темы.
Letos вне форума   Ответить с цитированием Вверх
Старый 08.03.2019, 09:33   #1425
wizardpnz
Местный
 
Регистрация: 02.07.2011
Сообщений: 191
Сказал(а) спасибо: 93
Поблагодарили 105 раз(а) в 44 сообщениях
Вес репутации: 196
wizardpnz скоро придёт к известностиwizardpnz скоро придёт к известности
По умолчанию

как переименовать кромку на панели не заводя новый материал в базе?
wizardpnz вне форума   Ответить с цитированием Вверх
Старый 16.03.2019, 07:09   #1426
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 211
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию нужен HELP

Цитата:
Сообщение от Igor_482 Посмотреть сообщение
Ниже приведен код скрипта для замены номенклатурных наименований сборок. Скрипт использует написанный на VB6 ActiveX модуль (FBDBDialog.dll) который реализует связь с БД через ODBC драйвер Firebird и представляет собой диалоговое окно для выбора номенклатуры (окно подобно стандартному диалогу Базиса "Выбор материала и комплектующих").
Вложение 109799

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

PHP код:
var FDBServ 't001'//Сервер FireBird
var FBSPort '14357'//Порт FireBird
var FDBFile 'D:\\DBBM\\Библиотека\\БД\\BMDB09.FDB'//БД
var FBCFile 'C:\\Windows\\System32\\FBCLIENT.DLL'//FBCLIENT.DLL (в корневой папке программы Базис)

var ConnectionString 'Driver={Firebird/InterBase(r) driver};' +
                       
'Dbname=' FDBServ '/' +
                                   
FBSPort ':' +
                                   
FDBFile ';' +
                       
'CHARSET=NONE;' +
                       
'PWD=masterkey;' +
                       
'UID=SYSDBA;' +
                       
'Client=' FBCFile ';';

var 
FBDB NewCOMObject('FBDBDialog.FBDB');
var 
Objects = new Object();

function 
SetSelection(Control) {
  var List = 
Objects[Control.Name];
  
UnSelectAll();
  for (var 
0< List.lengthi++) {
    List[
i].Selected true;
  };
};

function 
SetParameter(Control) {
  var List = 
Objects[Control.Name];
  for (var 
0< List.lengthi++) {
    
Undo.Changing(List[i]);
    List[
i].Name Control.Value;
  };
};

function 
GetFBDBDialog(Control) {
  var 
Result FBDB.Dialog(ConnectionString);
  if (
Result != '') {
    
Control.Value Result;
  };
};

Model.forEach(function(Object) {
  if ((
Object == '[object TFurnAsm]' ||
       
Object == '[object TAsmKit]') &&
      (
Object.Owner != '[object TFurnAsm]' &&
       
Object.Owner != '[object TAsmKit]')) {
    var 
ObjectName Object.Name.split('\r')[0];
    if(
typeof(Objects[ObjectName]) == 'undefined') {
      
Objects[ObjectName] = new Array();
    };
    
Objects[ObjectName].push(Object);
  };
});

var 
= new Number();
for (var 
Key in Objects) {
  var 
NewSelector =
  
'Selector' '= Action.Properties.NewSelector(Key, Key);\n' +
  
'Selector' '.CanClear = false;                        \n' +
  
'Selector' '.OnActivate = function() {                \n' +
  
'  SetSelection(Selector' ');                         \n' +
  
'};                                                         \n' +
  
'Selector' '.OnClick = function() {                   \n' +
  
'  GetFBDBDialog(Selector' ');                        \n' +
  
'};                                                         \n' +
  
'Selector' '.OnValueChange = function() {             \n' +
  
'  SetParameter(Selector' ');                         \n' +
  
'};                                                           ';
  eval(
NewSelector);
  
i++;
};

Action.Properties.NewButton('Завершить').OnClick = function() {
  
Action.Finish();
};

Action.Continue(); 
[свернуть]

Для работы скрипта необходим установленный ODBC драйвер Firebird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX и MSCOMCTL.OCX, а так же настройка переменных FDBServ, FDBFile и FBCFile в самом скрипте.

VB6 исходник ActiveX модуля FBDBDialog.dll, сам модуль и необходимые *.OCX для его работы: ссылка
ODBC драйвер для работы с БД Firebird: страница оф. сайта для загрузки драйвера

Стандартное место хранения модулей MSCOMCTL.OCX и MSDATGRD.OCX:
для Windows x64 -: %windir%\SysWOW64, для Windows x32 - %windir%\System32
При отсутствии модулей в системе их необходимо скопировать и зарегистрировать. Для регистрации необходимо запустить командную строку (cmd.exe) и выполнить команду - пример: regsvr32 %windir%\SysWOW64\FBDBDialog.dll
Игорь пожалуйста помогите разобраться, где может крыться проблема исполнения вашего скрипта
Все DLL и OCX скачал, установил зарегистрировать (на экселе проверил подключение - работает)
Запускаю скрипт - "тишина", в логе пусто, в свойствах Базиса 10 только кнопка [закончить].
ИМХО подозреваю что пропущена строка, где должно запускается приложение FBDBDialogEXE.exe

Пытался запустить скрипт редактирования парного крепежа. Ругается на 67 строку
Цитата:
var VTModelTree = Action.Control.Owner.Owner.dpModelTree.Components[3].VTModelTree;
отчет FindComponent() не выдает ничего похожего на Components[3] Вообще. Самое близкое

Цитата:
Application[-1].dpModelTree[533].FrmModelTree[3].VTModelTree[1]
Application[-1].dpModelTree[533].VTModelTree[1]
Application[-1].dpModelTree[533].FrmModelTree[3].VTModelTree[1]
перепробовал с индексами и без -- не помогает. Реально чем-нить заменить?
__________________
С уважением Кузнецов Александр

Последний раз редактировалось АлКузнецов; 07.05.2021 в 16:41.
АлКузнецов вне форума   Ответить с цитированием Вверх
Старый 18.03.2019, 00:00   #1427
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 366
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию

Цитата:
Сообщение от АлКузнецов Посмотреть сообщение
проблема исполнения скрипта
в
Цитата:
Сообщение от АлКузнецов Посмотреть сообщение
Базисе 10
для него другой

код


Код HTML:
function ReadIniFile(FileName) {
  var Data = system.readTextFile(FileName),
      Regex = {
        Section: /^\s*\[\s*([^\]]*)\s*\]\s*$/,
        Param: /^\s*([\w\.\-\_]+)\s*=\s*(.*?)\s*$/,
        Comment: /^\s*;.*$/
      },
      Value = {},
      Lines = Data.split(/\r\n|\r|\n/),
      Section = null;
  Lines.forEach(function(Line) {
    if (Regex.Comment.test(Line)) {
      return;
    } else if (Regex.Param.test(Line)) {
      var Match = Line.match(Regex.Param);
      if (Section) {
        Value[Section][Match[1]] = Match[2];
      } else {
        Value[Match[1]] = Match[2];
      };
    } else if (Regex.Section.test(Line)) {
      var Match = Line.match(Regex.Section);
      Value[Match[1]] = {};
      Section = Match[1];
    } else if (Line.length == 0 && Section) {
      Section = null;
    };
  });
  return Value;
};

ListToArray = function(List) {
  var Result = new Array();
  for (var i = 0; i < List.Count; i++) {
    var Item = List.Objects[i];
    switch (Item.List) {
      case true:
        Result.push(Item);
        Result = Result.concat(ListToArray(Item));
        break;
      default:
        Result.push(Item);
        break;
    };
  };
  return Result;
};

if (!system.fileExists('ADODB.ini')) {
  alert('Не найден файл (ADODB.ini) с настройками для подключения к БД!');
  Action.Cancel();
} else {
  var IniFile = ReadIniFile('ADODB.ini');
  if (!system.fileExists(IniFile['General']['FBCFile'])) {
    alert('Настройки подключения к БД указанные в файле (ADODB.ini)' +
          ' не являются верными!');
    Action.Cancel();
  };
};

var ConnectionString = 'Driver={Firebird/InterBase(r) driver};' +
                       'Dbname=' + IniFile['General']['FDBServ'] + '/'
                                 + IniFile['General']['FBSPort'] + ':'
                                 + IniFile['General']['FDBFile'] + ';' +
                       'CHARSET=NONE;' +
                       'PWD=masterkey;' +
                       'UID=SYSDBA;' +
                       'Client=' + IniFile['General']['FBCFile'];

try {
  var FBDB = NewCOMObject('FBDBDialog.FBDB');
} catch (Error){
  alert('Для регистрации FBDBDialog.dll в зависимости от установленной ' +
        'версии ОС Windows необходимо выполнить одну из следующих команд:\n' +
        'WinX32: regsvr32 %windir%\\System32\\FBDBDialog.dll\n' +
        'WinX64: regsvr32 %windir%\\SysWOW64\\FBDBDialog.dll\n\n' +
        decodeURIComponent(escape(Error.message)));
  Action.Cancel();
};

var Objects      = new Object(),
    Application  = Action.Control.Owner.Owner.Owner,
    VTModelTree  = Application.FindComponent('FormMain').FindComponent('dpModelTree').FindComponent('FrmModelTree').FindComponent('VTModelTree'),
    List         = new Array();

function SetSelection(Control) {
  var List = Objects[Control.Name];
  UnSelectAll();
  for (var i = 0; i < List.length; i++) {
    List[i].Selected = true;
  };
};

function SetParameter(Control) {
  var List = Objects[Control.Name];
  for (var i = 0; i < List.length; i++) {
    Undo.Changing(List[i]);
    List[i].Name = Control.Value;
  };
  VTModelTree.Refresh();
};

function GetFBDBDialog(Control) {
  var Result = FBDB.Dialog(ConnectionString);
  if (Result) {
    switch (true) {
      case Result.split('\r')[1] != '':
        Control.Value = Result;
        break;
      default:
        Control.Value = Result.split('\r')[0];
        break;
    };
  };
};

List = ListToArray(Model);

for (var i = 0; i < List.length; i++) {
  var Object = List[i];
  if (( RegExp(/^\[object TFurnAsm\].*$/i).test(Object) ||
        RegExp(/^\[object TAsmKit\].*$/i).test(Object)) &&
      (!RegExp(/^\[object TFurnAsm\].*$/i).test(Object.Owner) &&
       !RegExp(/^\[object TAsmKit\].*$/i).test(Object.Owner))) {
    var Name = Object.Name.split('\r')[0];
    if(typeof(Objects[Name]) == 'undefined') {
      Objects[Name] = new Array();
    };
    Objects[Name].push(Object);
  };
};

var i = new Number();
for (var Key in Objects) {
  var NewSelector =
  'Selector' + i + '= Action.Properties.NewSelector(Key, Objects[Key][0].Name);\n' +
  'Selector' + i + '.CanClear = false;                                         \n' +
  'Selector' + i + '.OnActivate = function() {                                 \n' +
  '  SetSelection(Selector' + i + ');                                          \n' +
  '};                                                                          \n' +
  'Selector' + i + '.OnClick = function() {                                    \n' +
  '  GetFBDBDialog(Selector' + i + ');                                         \n' +
  '};                                                                          \n' +
  'Selector' + i + '.OnValueChange = function() {                              \n' +
  '  SetParameter(Selector' + i + ');                                          \n' +
  '};                                                                            ';
  eval(NewSelector);
  i++;
};

Action.Properties.NewButton('Завершить').OnClick = function() {
  Action.Finish();
};

Action.Continue();
[свернуть]


для работы данного кода, так же необходим ini файл с настройками

FBDBDialogEXE.exe - скрипту ненужен, это приложение использовалось для отладки FBDBDialog.dll
Igor_482 вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
Letos (18.03.2019), АлКузнецов (18.03.2019)
Старый 30.09.2020, 20:33   #1428
const
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 32
Сказал(а) спасибо: 3
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
const пока не определено
По умолчанию

Доброго времени суток. Не смог найти ответ. Поэтому суть вопроса. Добавляю фронтальную панель от начала координат с размерами х = 200, у = 500 (для примера). Хочу повернуть панель вокруг оси ОХ (или ОУ или OZ), проходящей через начало координат (0,0,0) на определенный угол (пусть 45 град.). Поворот происходит вокруг оси, параллельной ОХ и проходящей через точку (200, 500, 0). Как сделать так, чтобы поворот был все-таки вокруг оси ОХ ГСК?

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

p = AddFrontPanel(200, 500);
p.Rotate(AxisX, 45)
[свернуть]
const вне форума   Ответить с цитированием Вверх
Старый 01.10.2020, 08:17   #1429
Meshok
Пользователь
 
Аватар для Meshok
 
Регистрация: 17.12.2016
Сообщений: 89
Сказал(а) спасибо: 27
Поблагодарили 50 раз(а) в 30 сообщениях
Вес репутации: 107
Meshok скоро придёт к известности
По умолчанию

Цитата:
Сообщение от const Посмотреть сообщение
Доброго времени суток. Не смог найти ответ. Поэтому суть вопроса. Добавляю фронтальную панель от начала координат с размерами х = 200, у = 500 (для примера). Хочу повернуть панель вокруг оси ОХ (или ОУ или OZ), проходящей через начало координат (0,0,0) на определенный угол (пусть 45 град.). Поворот происходит вокруг оси, параллельной ОХ и проходящей через точку (200, 500, 0). Как сделать так, чтобы поворот был все-таки вокруг оси ОХ ГСК?

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

p = AddFrontPanel(200, 500);
p.Rotate(AxisX, 45)
[свернуть]
Если я правильно понял вопрос, то попробуйте задавать координаты панели полностью:

p = AddFrontPanel(0,0,200,500);
p.Rotate(AxisX, 45)

P.S. Единственный нюанс - при таком повороте ближнее нижнее горизонтальное ребро панели будет уходить ниже плоскости, то есть координата Y будет меньше нуля.
Поэтому надо будет задавать в данном случае координаты Y со смещением (вычисляя через sin или cos угла).
С Уважением, Михаил.
Meshok вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
const (01.10.2020)
Старый 01.10.2020, 17:54   #1430
const
Пользователь
 
Регистрация: 03.01.2016
Сообщений: 32
Сказал(а) спасибо: 3
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
const пока не определено
По умолчанию

Огромное спасибо за ответ, Михаил. Это то что мне нужно. Обидно, что найти эту информацию почему-то трудно. Еще раз спасибо!
const вне форума   Ответить с цитированием Вверх
Ответ

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

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1524 07.12.2022 19:53
БАЗИС 9 nayrogi Базис-мебельщик 9 785 01.10.2022 23:13
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


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


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

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