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

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

Меню

Маркет


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

Сказал(а) спасибо: 34
Поблагодарили 795 раз(а) в 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..
Просмотров: 1009106
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 20.08.2015, 09:29   #871
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 804 раз(а) в 179 сообщениях
Вес репутации: 360
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

TJSIndexedProperty - это чисто внутренний объект, необходимый для доступа к массивам объектов в Базисе и не содержит информации о количестве
Briz вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
DTioutiou (20.08.2015), maxgmv (20.08.2015), v22884 (20.08.2015), zorro (20.08.2015)
Старый 20.08.2015, 09:32   #872
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Свойства панели
(заготовка)

объекты раскрываются по нажатию.

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



UnSelectAll();

FileOptions = 'Выделение Контуров Основные настройки.xml';










MakeProperties();

Action.Properties.Load(FileOptions);



Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}


Make();



Action.Continue();













true;





//////////////////////////////////////////


//////////////////////////////////////////

////////////////////////////////////////// --------- ОКНО СВОЙСТВ


function MakeProperties() {

Prop = Action.Properties;

// b1 = Prop.PopupMenu.NewButton('Название')
// b2 = Prop..DropDownMenu..NewButton('Название')


// KElem = PoKElem.NewNumber('Колиечество Элементов')
// KElemZnak = PoKElem.NewCombo('Знак Сравнения', '>\n<\n==\n<=\n>=\n!=')

Panel = AddFrontPanel(40, 40, 640, 700, 300);
// создаём структуру данных



//--------------------
Panelsv = Prop.NewGroup('Panel')
zapolnitOb(Panelsv, 'Panel')

Fu.Expanded = false
Sv.Expanded = false
Ob.Expanded = false
RaskrOb = Ob.PopupMenu.NewButton('Раскрыть')
RaskrOb.OnActivate = function()
{
alert( Prop.Tag)
}

}

function zapolnitOb(Prop, Panel1)
{

Sv = Prop.NewGroup('Свойства')
Fu = Prop.NewGroup('Функции')
Ob = Prop.NewGroup('Объекты')
IOb = Prop.NewGroup('Индексированные Объекты')

settings = parametryPaneli( Panel1)

par = settings.par;
func = settings.func;
ob = settings.ob;
iob = settings.iob;

// alert(iob.length)


// ob2 = parametryObRekursivno(ob)

t = ''
for (parset in par) {
t = t + par[parset].par + ':' + par[parset].tip + '\n';
pp = par[parset].par
tt = par[parset].tip
zn = par[parset].zn





// PoKElem = Prop.NewGroup('Название')
if(tt == "undefined"){ tipel ="NewString" }
else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
else if(tt == "boolean"){ tipel ="NewBool" }
else if(tt == "number"){ tipel ="NewNumber" }
else if(tt == "string"){ tipel ="NewString"
zn = zn.replace('\r', '')

}
// else if(tt == "function"){ tipel ="NewString" }


strprop = pp.toString() +" = Sv." + tipel+"('"+pp.toString()+" ( "+
zn.toString()
+" ) "+"');"
// system.log(strprop)
eval(strprop)

}


// alert(t)

// alert(func.length)
for (parset in func) {
// t = t + par[parset].par + ':' + par[parset].tip + '\n';
pp = func[parset].func.toString().replace('()', '')
//tt = par[parset].tip
//zn = par[parset].zn





// PoKElem = Prop.NewGroup('Название')
// if(tt == "undefined"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "boolean"){ tipel ="NewBool" }
// else if(tt == "number"){ tipel ="NewNumber" }
// else if(tt == "string"){ tipel ="NewString"
// zn = zn.replace('\r', '')

// }
// if(tt == "function"){ tipel ="NewString" }


strprop = pp + " = Fu.NewString('"+pp+" ');"
// system.log(strprop)
eval(strprop)

}


for (parset in ob) {
// t = t + par[parset].par + ':' + par[parset].tip + '\n';
pp = ob[parset].obkey.toString()
//tt = par[parset].tip
//zn = par[parset].zn





// PoKElem = Prop.NewGroup('Название')
// if(tt == "undefined"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "boolean"){ tipel ="NewBool" }
// else if(tt == "number"){ tipel ="NewNumber" }
// else if(tt == "string"){ tipel ="NewString"
// zn = zn.replace('\r', '')

// }
// if(tt == "function"){ tipel ="NewString" }

if(pp.length>0)
{
strprop = pp + " = Ob.NewString('"+pp+" ');"
// system.log(strprop)
eval(strprop)
strraskr = pp +'.OnActivate = function()\n'+
'{\n'+
'//alert('+ pp +'.Name)\n'+


'sv='+pp+'\n'+
'ownery=sv.Name\n' +
'while(sv.Owner.Name != null) \n' +
'{\n' +

"if(sv.Owner.Name !='Объекты'){ownery=sv.Owner.Name+'.' + ownery}\n"+

'sv = sv.Owner \n'+
'}\n' +

'//alert(ownery)\n'+
"zapolnitOb("+pp+", ownery)\n"+
"ownery=''}"
eval(strraskr)
}
}
// alert(iob.length)
for (parset in iob) {
// t = t + par[parset].par + ':' + par[parset].tip + '\n';
pp = iob[parset].obkey.toString()
ppo = iob[parset].ob_
ippol =0



try
{
//while(true)
{
if (!ppo[ippol]) {
throw new SyntaxError("Ошибка в данных");
}
ippol++

}
}
catch(e)
{}
finally
{}
// alert(ippol)

// alert(ppo.size())

// alert(ppo.length + ' -- ' + ppo+ ' -- ' + pp)
//tt = par[parset].tip
//zn = par[parset].zn





// PoKElem = Prop.NewGroup('Название')
// if(tt == "undefined"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "object"){ tipel ="NewString" }
// else if(tt == "boolean"){ tipel ="NewBool" }
// else if(tt == "number"){ tipel ="NewNumber" }
// else if(tt == "string"){ tipel ="NewString"
// zn = zn.replace('\r', '')

// }
// if(tt == "function"){ tipel ="NewString" }

if(pp.length>0)
{
strprop = pp + " = IOb.NewString('"+pp+" ');"
eval(strprop)
for(ippo=0;ippo<ippol;ippo++)
{
strppo = "ppo"+ippo.toString() + " = "+pp+".NewString('["+ippo+"] "+ppo[ippo]+"');"
eval(strppo)


//system.log(strprop)

strraskr = "ppo"+ippo.toString() +'.OnActivate = function()\n'+
'{\n'+
'//alert('+ pp +'.Name)\n'+


'sv='+"ppo"+ippo.toString() +'\n'+
'ownery=sv.Name\n' +
'while(sv.Owner.Name != null) \n' +
'{\n' +

"if(sv.Owner.Name !='Индексированные Объекты'){ownery=sv.Owner.Name+'.' + ownery}\n"+

'sv = sv.Owner \n'+
'}\n' +

'alert(ownery)\n'+
'//alert(ownery)\n'+

// "zapolnitOb("+pp+", ownery)\n"+
"ownery=''}"
eval(strraskr)
} }
}


}




function Make() {




}

function pkk(p, key, obkey) {
if (!system.fileExists('плохойkey.txt')) {
alert('Создаю плохойkey.txt')
system.writeTextFile('плохойkey.txt', '')
}
if (!system.fileExists('ВСЕплохиеkeyи.txt')) {
alert('Создаю ВСЕплохиеkeyи.txt')
system.writeTextFile('ВСЕплохиеkeyи.txt', '')
}

pk = system.readTextFile('плохойkey.txt')
Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')


if (pk.length > 0) {
pk = pk + '\n' + Vsepk




system.writeTextFile('ВСЕплохиеkeyи.txt', pk)
}

Vsepk = system.readTextFile('ВСЕплохиеkeyи.txt')

//s = '';


//FPanel = AddFrontPanel (40, 40, 640, 700, 300);
//for (var key in FPanel) {
putkey = obkey + '.' + key
fk = 'Ошибка'
system.writeTextFile('плохойkey.txt', putkey)
if (!(Vsepk.indexOf(key.toString() + '\n') > -1)) {
system.log(p + ' -- ' + key + ' -- ' + p[key])
fk = p[key]
} else {
// alert('Плохой '+p+'.'+key)
}









//s = s + key+':'+ res + '\n';
//system.writeTextFile('Panel.txt',s)
//}

system.writeTextFile('плохойkey.txt', '')

return fk
}

function parametryPaneli(p) {
// alert( p+' - '+eval( p).toString())
// alert( p)
ob = [];
iob = [];
par = [];
func = [];

sl_ob = {};
// alert(typeof(p))
sl_ob.obkey = p

sl_ob.ob_ = eval( p)
sl_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать

// ob.push(s_ob)
settings = {};
settings.ob = ob;
settings.par = par;
settings.func = func;


//alert(s1.ob[0].ob_)
// sl_ob = p
// if (sl_ob == null) {
// return s1
// }

p = sl_ob.ob_
//alert(p)
// alert(p.toString().replace(' ' , ''))
obkey = sl_ob.obkey

s = '';
tf = ""

for (var key in p) {

//--pk if (!(key.toString() == 'FC3D')) {
fk = pkk(p, key, obkey)

if (!(fk === null)&&(fk.toString() == '[object TJSIndexedProperty]')) {
// alert( fk)
s_ob = {};
s_ob.ob_ = fk
s_ob.obkey = key.toString()

s_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать

iob.push(s_ob)


} else if ((typeof(fk) == 'object')) {
s_ob = {};
s_ob.ob_ = fk
s_ob.obkey = key.toString()

s_ob.raskryt = false // по признаку есть ли не раскрытые будем раскрывать

ob.push(s_ob)


} else if ((typeof(fk) == 'function')) {

var res
var tip = ''
try {
// eval('res = p.' + key.toString() + "()")
// eval('tip = typeof(res)')
//if (!(tip == 'undefined')) {


tf = tf + key + ': ' + res + ' --- ' + tip + '\n';

// func.push(key)
settings = {};
settings.func = key;
settings.tip = tip;

func.push(settings)

//}
} catch (e) {
res = e.name
//alert(e.name)

} finally {

// alert(res)

}

} else {


settings = {};
settings.par = key;
settings.zn = fk;

settings.tip = typeof(fk);

par.push(settings)
}


s = s + key + ':' + fk + ' --- ' + typeof(fk) + '\n';

//--pk }

}

// alert(s)
t = '';
for (parset in func) {
//t = t + func[parset].func + ':' +func[parset].tip+'\n';

}
//alert (t)
//p.Free()
settings = {};
settings.par = par;
settings.func = func;
settings.ob = ob;
settings.iob = iob;
// parametryPaneli(s1)
return settings
}

function SleduyushiyObyekt(s1) {

ob_so = s1.ob
//alert(ob_so.length)
for (iso = 0; iso < ob_so.length; iso++) {

if (ob_so[iso].raskryt == false) {
//alert(ob_so[iso].raskryt)

ob_so[iso].raskryt = true
//alert(ob_so[iso].ob_)
ret = {}
ret.ob_ = ob_so[iso].ob_
ret.obkey = ob_so[iso].obkey
return ret


}
}

}

[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
alexvas (16.12.2015), De_mon (20.08.2015), DTioutiou (20.08.2015), zorro (20.08.2015)
Старый 20.08.2015, 09:54   #873
maxgmv
VIP
 
Аватар для maxgmv
 
Регистрация: 15.11.2008
Адрес: г.Москва
Сообщений: 498
Сказал(а) спасибо: 3,218
Поблагодарили 1,357 раз(а) в 312 сообщениях
Вес репутации: 510
maxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордитсяmaxgmv за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
Как определить количество элементов( или индексов)?
Если речь про панель, то я делал так...

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

var LoopArr = []; //массив с длиннами элементов контура с их индексами

Model.forEachPanel(function(obj) {
Passport(obj);
});

for (i = 0; i < LoopArr.length; i++) {
system.log(JSON.stringify(LoopArr[i]));
};

function Passport(pan) {
LoopPan = {};
con = pan.Contour;

//количество элементов контура
LoopPan.pos = pan.ArtPos;
LoopPan.kol = con.Count;

//запись длин всех элементов контура панели
//индекс элемента свойство:значение длина контура
for (i = 0; i < con.Count; i++) {
LoopPan[i] = Math.round((con[i].ObjLength()) * 10) / 10;
};
LoopArr.push(LoopPan);
};
[свернуть]

Для наглядности запускать в редакторе скриптов.
__________________
Обходя разложенные грабли - ты теряешь драгоценный ОПЫТ!
maxgmv вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
DTioutiou (20.08.2015), v22884 (20.08.2015), zorro (20.08.2015)
Старый 20.08.2015, 11:24   #874
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от maxgmv Посмотреть сообщение
Если речь про панель
нет не про панель, а про возможность залезть во все дочерние свойства и объекты. Briz уже ответил.

Добавлено через 2 минуты
"Ошибка инициализации инфраструктуры Ecmascript Parser" теперь во всех последних демо-версиях, или только у меня?
v22884 вне форума   Ответить с цитированием Вверх
Старый 20.08.2015, 15:33   #875
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Fasad Expert скрипты
(чуть лучше, но работы ещё много)

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


FileOptions = 'НастройкиFasadExpert.xml';


MakeProperties();

Action.Properties.Load(FileOptions);
system.log(failMacrosa.Value)
if (system.fileExists(failMacrosa.Value)) {
readParametry()
}





Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}
BtnMake = NewButtonInput('Закончить');
BtnMake.OnChange = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}


//Make();

Action.OnStart = function() {
Prop.OnChange = Make;
Make();
}

Action.Continue();













true;


function Make() {

}

function MakeProperties() {

Prop = Action.Properties;
//Prop.
Image = Prop.NewImage('Схема изделия', 'Прямоугольный.jpg');

Image.MaxHeight = 700;

H = Prop.NewNumber('Высота Фасада', 768)
W = Prop.NewNumber('Ширина Фасада', 398)

failMacrosa = Prop.NewSelector('Файл Макроса Fasad expert');
Par = Prop.NewGroup('Параметры')
Calc = Prop.NewGroup('Расчёты')
failMacrosa.OnClick = function() {
failMacrosa.Value = system.askFileName('fes');
if (system.fileExists(failMacrosa.Value)) {
readParametry()

}

};

TipContura = Prop.NewCombo('Тип контура', 'Прямоугольный\nАрка\nЭлипс\nАнтик\n6-ти Угольник');

FrezaSkrugl = Prop.NewSelector('Фреза Скругление');

FrezaSkrugl.OnClick = function() {
FrezaSkrugl.Value = system.askFileName('frw');
};

FrezaFigurnaya = Prop.NewSelector('Фреза Фигурная');

FrezaFigurnaya.OnClick = function() {
FrezaFigurnaya.Value = system.askFileName('frw');
};
Calc.Expanded = false
}


function readParametry()

{
DeleteNewObjects();
tm = system.readTextFile(failMacrosa.Value)

//alert(tm)
var arr = tm.split('\n');

// header = arr.indexOf(searchElement, [fromIndex])

i = 0
ar2 = []
s = ''
while (arr[i]) {
arr[i]= arr[i].toString().trim();
if ((arr[i].length > 1) && (arr[i].indexOf('//') < 0)) {
// system.log(arr[i] + ' -- ' + arr[i].length + ' -- ' + arr[i].indexOf('//'))
ar2.push(arr[i].replace('\r', ''))
s = s + arr[i] + '\n'
//i--
}
i++
}
//alert(ar2.length)
head = ar2.indexOf('[Header]')
init = ar2.indexOf('[Init]')
calc = ar2.indexOf('[Calculations]')
tpath = ar2.indexOf('[ToolPath]')
vdem = 'FS_VertDimension'
hdem = 'FS_HorDimension'
rdem = 'FS_RadialDimension'
var dem
for (i = tpath; i < ar2.length; i++) {
if ((ar2[i].indexOf(vdem) == 0) || (ar2[i].indexOf(hdem) == 0) || (ar2[i].indexOf(rdem) == 0)) {
dem = i
break;
}
}

//alert(dem+'\n'+s)
doppar = []
for (i = head + 1; i < init; i++) {
doppar.push(ar2[i])
}

par = []
for (i = init + 1; i < calc; i++) {
par.push(ar2[i])
}
vych = []
for (i = calc + 1; i < tpath; i++) {
vych.push(ar2[i])
}

ris = []
for (i = tpath + 1; i < dem; i++) {
ris.push(ar2[i])
}

razm = []
for (i = dem + 1; i < ar2.length; i++) {
razm.push(ar2[i])
}

zapolnitParametry()
}

function zapolnitParametry() {
bs = ''
Par.Clear()
for (i = 0; i < doppar.length; i++) {
estr = doppar[i]
eval(estr)
bs = bs + estr + '\n'
}

bs = bs + '\n ПАРАМЕТРЫ \n\n'
for (i = 0; i < par.length; i++) {
ps = par[i].split(',')
n = ps[0].split('(')[1]
tzn = ps[2].split(')')[0]

zn = parseInt(tzn)

if (isNaN(zn)) {
zn = parseInt(eval(tzn))

}
estr = "parr" + n.toString() + " = Par.NewNumber(ps[1],zn)"

eval(estr)
bs = bs + estr + '\n'
}
arPer = []
for (i = 0; i < vych.length; i++) {
system.log('')
system.log(vych[i])
system.log('Переводим на язык Базис скрипта:')
vs = vych[i].split('=')
Per = vs[0]
rasch = vs[1].toString()
var re = /FS_GetHeight\(\)/gi;
rasch = rasch.replace(re, "H.Value")
var re = /FS_GetWidth\(\)/gi;
rasch = rasch.replace(re, 'W.Value')
//////////////////////////////////////////////
poisk = 'FS_GetEditValue('
if (rasch.indexOf(poisk) > -1) {
retip = rasch.split(poisk)
r2 = []
r2.push(retip[0])
/////////////////// ------------
//retip = vsevhojdeniya( rasch,poisk)
for (ir = 1; ir < retip.length; ir++) {
podstr = retip[ir]
// system.log(podstr podstr )
//i1 = retip[ir]+ poisk.length

i1 = podstr.indexOf(')')
if ((i1 == 1) || (i1 == 2)) {
n = podstr.substring(0, i1)
podstr = "parr" + n + '.Value' + podstr.substring(i1 + 1, podstr.length)
}
r2.push(podstr)
}
//////////////--------------
rasch = ''
for (ir = 0; ir < r2.length; ir++) {
rasch = rasch + r2[ir]
}
}
/////////////////////////////////////// FS_Fillet2Lines_1(
rasch = Scrugl(rasch)






/////////// СЧИТАЕМ

arPerRazd = Per.toString().split('.') //делим переменную точкой
if (arPerRazd.length > 1) { // если поделилась
if (arPer.indexOf(arPerRazd[0]) == -1) {


arPer.push(arPerRazd[0])
estrP = arPerRazd[0] + ' = NewPoint(0,0)'
eval(estrP)

system.log(estrP + ' ')
}
if (arPerRazd[1] == 'X') {
arPerRazd[1] = 'x'
Per = arPerRazd[0] + '.' + arPerRazd[1]
// system.log(arPerRazd[1])
} else if (arPerRazd[1] == 'Y') {
arPerRazd[1] = 'y'
Per = arPerRazd[0] + '.' + arPerRazd[1]
// system.log(arPerRazd[1])
} else if (arPerRazd[1] == 'Z') {
//arPerRazd[1]='y'
Per = "Z"
// system.log(arPerRazd[1])
}

}


estr = '' + Per + '=' + rasch
system.log(estr)
eval(estr)
// nprop++

strev = "calcc" + n.toString() + " = Calc.NewString(estr)"

eval(strev)

}
cRis = NewContour()
fp = AddFrontPanel(0, 0, W.Value, H.Value, 0)
for (i = 0; i < ris.length; i++) {
str = ris[i].toString()

system.log('')
system.log(str)
system.log('Переводим РИСУНОК на язык Базис скрипта:')


poisk = 'FS_MoveToPoint('
poisk2 = 'FS_LineToPoint('
poisk3 = 'FS_ArcToPoint('
poisk4 = 'FS_Arc3PointToPoint('
if (str.indexOf(poisk) == 0) {
str = 'p1 = ' + str.substring(poisk.length, str.length - 2)
} else if (str.indexOf(poisk2) == 0) {
str = 'p2 = ' + str.substring(poisk2.length, str.length - 2) + '; \n' +
'cRis.AddLine(p1,p2); \n' +
'p1 = p2; \n'
} else if (str.indexOf(poisk3) == 0) {
arstr2 = (str.substring(poisk3.length, str.length - 2)).split(',')
if (arstr2[2].toString().trim() == 1) {
napr = true
} else {
napr = false
}

str = 'p2 = ' + arstr2[0] + '; \n' +
'coba=center2(p1, p2, ' + arstr2[1] + ') ; \n' +
' centre = TestC(coba,p1, p2, ' + arstr2[1] + ',napr) ; \n' +
'cRis.AddArc(p1, p2, centre, napr); \n' +
'p1 = p2; \n'
// system.log(str2)
}else if (str.indexOf(poisk4) == 0) {
arstr3 = (str.substring(poisk4.length, str.length - 2)).split(',')

str = 'p2 = ' + arstr3[0] + '; \n' +
'p3 = ' + arstr3[1] + '; \n' +

'cRis.AddArc3(p1, p2,p3); \n' +
'p1 = p3; \n'
// system.log(str2)
}
cRis2 = NewContour()
system.log(str )
eval(str)


fp.Name = str.toString()
Frezerovka(fp, cRis2, FrezaFigurnaya.Value, 'Фигурная')

//system.log
}
fp = AddFrontPanel(0, 0, W.Value, H.Value, 0)
Frezerovka(fp, cRis, FrezaFigurnaya.Value, 'Фигурная')

// fp = AddFrontPanel(-999990, -9999990, 999999999,9999999, 0)
//fp.Contour.Free()
// fp.Contour.Subtraction(cRis)



}



function Scrugl(rasch) {
poisk = 'FS_Fillet2Lines_1('

if (rasch.indexOf(poisk) > -1) {

retip = rasch.split(poisk)
//разбили всю строку Расчётов именем команды
// осталось собрать всё назад ?с заменой на команду базиса?
// ?и удалением скобки после переменных?

// !!!!! ПРЕДПОЛОГАЕМ ЧТО В ВЫЧИСЛЕНИИ ТОЛЬКО ЭТА КОМАНДА
// ТО ЕСТЬ РЕЗУЛЬАТОМ БУДЕТ ТОЧКА 1 ИЛИ 2


r2 = []
r2.push(retip[0])
system.log(retip[0] + ' -- retip[0]')
/////////////////// ------------
//retip = vsevhojdeniya( rasch,poisk)
// ? ДОРАБОТАТЬ
// ar_p1_ir =[]


for (ir = 1; ir < retip.length; ir++) {
podstr = retip[ir]
// system.log(podstr podstr )
//i1 = retip[ir]+ poisk.length

i1 = podstr.indexOf(')')
n4 = podstr.substring(0, i1)
an4 = n4.split(',')
testc = NewContour()
pr1 = eval(an4[0])
pr2 = eval(an4[1])
pr3 = eval(an4[2])
rr = parseInt(eval(an4[3]))

system.log(pr1 + ' -- ' + pr2.x + ' -- ' + pr3 + ' -- ' + rr + ' -- ' + an4[3])
l1 = testc.AddLine(pr1, pr2)
l2 = testc.AddLine(pr2, pr3)

testc.RoundingEx(l1, l2, (pr1.x + pr3.x) / 2, (pr1.y + pr3.y) / 2, rr)

// ? ДОРАБОТАТЬ
// ar_p1_ir.push( testc[2].Pos1)

p_1 = testc[2].Pos1
rasch = 'p_1'
}




}
poisk = 'FS_Fillet2Lines_2('

if (rasch.indexOf(poisk) > -1) {

retip = rasch.split(poisk)
//разбили всю строку Расчётов именем команды
// осталось собрать всё назад ?с заменой на команду базиса?
// ?и удалением скобки после переменных?

// !!!!! ПРЕДПОЛОГАЕМ ЧТО В ВЫЧИСЛЕНИИ ТОЛЬКО ЭТА КОМАНДА
// ТО ЕСТЬ РЕЗУЛЬАТОМ БУДЕТ ТОЧКА 1 ИЛИ 2 , ИЛИ НАПРАВЛЕНИЕ


r2 = []
r2.push(retip[0])
system.log(retip[0] + ' -- retip[0]')
/////////////////// ------------
//retip = vsevhojdeniya( rasch,poisk)
// ? ДОРАБОТАТЬ
// ar_p1_ir =[]


for (ir = 1; ir < retip.length; ir++) {
podstr = retip[ir]
// system.log(podstr podstr )
//i1 = retip[ir]+ poisk.length

i1 = podstr.indexOf(')')
n4 = podstr.substring(0, i1)
an4 = n4.split(',')
testc = NewContour()
pr1 = eval(an4[0])
pr2 = eval(an4[1])
pr3 = eval(an4[2])
rr = parseInt(eval(an4[3]))

fp = AddFrontPanel(0, 0, W.Value, H.Value, 0)
fpc = fp.GCenter
system.log(pr1 + ' -- ' + pr2.x + ' -- ' + pr3 + ' -- ' + rr + ' -- ' + an4[3])
l1 = testc.AddLine(pr1, pr2)
l2 = testc.AddLine(pr2, pr3)

testc.RoundingEx(l1, l2, (pr1.x + pr3.x) / 2, (pr1.y + pr3.y) / 2, rr)

// ? ДОРАБОТАТЬ
// ar_p1_ir.push( testc[2].Pos1)

p_2 = testc[2].Pos2
rasch = 'p_2'
}




}

poisk = 'FS_Fillet2Lines_Dir('

if (rasch.indexOf(poisk) > -1) {

// !!!!! ПРЕДПОЛОГАЕМ ЧТО В ВЫЧИСЛЕНИИ ТОЛЬКО ЭТА КОМАНДА
// ТО ЕСТЬ РЕЗУЛЬАТОМ БУДЕТ ТОЧКА 1 ИЛИ 2 , ИЛИ НАПРАВЛЕНИЕ

rasch = '1'





}

poisk = 'FS_FilletLineArc_1('

if (rasch.indexOf(poisk) > -1) {

retip = rasch.split(poisk)
//разбили всю строку Расчётов именем команды
// осталось собрать всё назад ?с заменой на команду базиса?
// ?и удалением скобки после переменных?

// !!!!! ПРЕДПОЛОГАЕМ ЧТО В ВЫЧИСЛЕНИИ ТОЛЬКО ЭТА КОМАНДА
// ТО ЕСТЬ РЕЗУЛЬАТОМ БУДЕТ ТОЧКА 1 ИЛИ 2


r2 = []
r2.push(retip[0])
system.log(retip[0] + ' -- retip[0]')


for (ir = 1; ir < retip.length; ir++) {
podstr = retip[ir]
// system.log(podstr podstr )
//i1 = retip[ir]+ poisk.length

i1 = podstr.indexOf(')')
n4 = podstr.substring(0, i1)
an4 = n4.split(',')
testc = NewContour()
pr1 = eval(an4[0])
pr2 = eval(an4[1])
pr3 = eval(an4[2])
pr4 = eval(an4[3])
rr = parseInt(eval(an4[4]))

system.log(pr1 + ' -- ' + pr2.x + ' -- ' + pr3 + ' -- ' + rr + ' -- ' + an4[3])
l1 = testc.AddLine(pr1, pr2)
l2 = testc.AddArc3(pr2, pr3, pr4)

testc.RoundingEx(l1, l2, (pr1.x + pr3.x) / 2, (pr1.y + pr3.y) / 2, rr)

// ? ДОРАБОТАТЬ
// ar_p1_ir.push( testc[2].Pos1)

p_1 = testc[2].Pos1
rasch = 'p_1'
}

}

poisk = 'FS_FilletLineArc_2('

if (rasch.indexOf(poisk) > -1) {

retip = rasch.split(poisk)
//разбили всю строку Расчётов именем команды
// осталось собрать всё назад ?с заменой на команду базиса?
// ?и удалением скобки после переменных?

// !!!!! ПРЕДПОЛОГАЕМ ЧТО В ВЫЧИСЛЕНИИ ТОЛЬКО ЭТА КОМАНДА
// ТО ЕСТЬ РЕЗУЛЬАТОМ БУДЕТ ТОЧКА 1 ИЛИ 2


r2 = []
r2.push(retip[0])
system.log(retip[0] + ' -- retip[0]')


for (ir = 1; ir < retip.length; ir++) {
podstr = retip[ir]
// system.log(podstr podstr )
//i1 = retip[ir]+ poisk.length

i1 = podstr.indexOf(')')
n4 = podstr.substring(0, i1)
an4 = n4.split(',')
testc = NewContour()
pr1 = eval(an4[0])
pr2 = eval(an4[1])
pr3 = eval(an4[2])
pr4 = eval(an4[3])
rr = parseInt(eval(an4[4]))

system.log(pr1 + ' -- ' + pr2.x + ' -- ' + pr3 + ' -- ' + rr + ' -- ' + an4[3])
l1 = testc.AddLine(pr1, pr2)
l2 = testc.AddArc3(pr2, pr3, pr4)

testc.RoundingEx(l1, l2, (pr1.x + pr3.x) / 2, (pr1.y + pr3.y) / 2, rr)

// ? ДОРАБОТАТЬ
// ar_p1_ir.push( testc[2].Pos1)

p_2 = testc[2].Pos2
rasch = 'p_2'
}

}


return rasch
}



function TestC(coba, p1, p2, r, napr) {
test = NewContour()
l1 = test.AddArc(p1, p2, coba[0], napr).ObjLength()
l2 = test.AddArc(p1, p2, coba[1], napr).ObjLength()
if (l1 > l2) {
return coba[1]
} else {
return coba[0]
}
}


function center2(p1, p2, r) {


x1 = p1.x
x2 = p2.x
y1 = p1.y
y2 = p2.y

system.log(x1 + ' -- ' + x2 + ' -- ' + y1 + ' -- ' + y2 + ' -- ' + r)


d = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
h = Math.sqrt(r * r - (d / 2) * (d / 2));

x01 = x1 + (x2 - x1) / 2 + h * (y2 - y1) / d;
y01 = y1 + (y2 - y1) / 2 - h * (x2 - x1) / d;

x02 = x1 + (x2 - x1) / 2 - h * (y2 - y1) / d
y02 = y1 + (y2 - y1) / 2 + h * (x2 - x1) / d;


c1 = NewPoint(x01, y01)
c2 = NewPoint(x02, y02)
coba = []
coba.push(c1, c2)
return coba
}

function vsevhojdeniya(str, poisk) {
retip = []
var i = 0;
while (x != -1) {
var x = str.indexOf(poisk, i);
i = x + 1;
if (x != -1) {
retip.push(x)
}
}

return retip
}


function Frezerovka(Obj, Contur, FileFreza, CutName) {


//FileFreza = 'Фреза1.frw';
if (system.fileExists(FileFreza)) {


// Obj = Obj.AsPanel;
StartEditing(Obj);

Cut = Obj.AddCut(CutName);
Traj = Cut.Trajectory;

Traj.AddList(Contur.MakeCopy());

//L1 = Traj.AddLine(100, 100, 200, 200);
Cut.Contour.Load(FileFreza);


//Cut.CutMode=0;
//Cut.CutType=0;
//Cut.IndexOfPanelElem=-1;






Cut.Contour.Move(0, Obj.Thickness);

Obj.Build();
}


}

[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
Am0ralist (21.08.2015), De_mon (20.08.2015), DTioutiou (20.08.2015), fanest (21.08.2015), zorro (20.08.2015)
Старый 26.08.2015, 09:00   #876
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Чтоб быть последовательным:

Прошу Базис софт сделать возможным в подготовке чертежей для фасадов сохранять только контуры фрезеровки без сечений.

Примитивный вариант решения этого вопроса:
Контуры фрезеровки фасадов

1) в моделе оставляем только фрезерованные фасады
2) рисуем многоугольник
3) Выделяем этот многоугольник
4) Запускаем скрипт
5) заходим в редактирование контура этого многоугольника
6) берём контуры и делаем сними что хотим, например копируем в чертёж и экспортируем в DXF.

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



ConS = Model.Selections[0].Contour


//p = Model.Selections[0]
//p= AddPanel(width, height)




Model.forEachPanel(function(p) {


ccp = NewContour()
c = p.Cuts
cc=p.Cuts.Count

nol = NewPoint(ConS.Width + 30, 0)
for(i=0;i<cc;i++)

{


con = c[i].Trajectory

con = con.MakeCopy()


ccp.Add(con)


}

ccp.Add(p.Contour.MakeCopy())

cw = ccp.Width
ch = ccp.Height

ccp.Fit(nol.x,nol.y,nol.x+cw,nol.y+ch)
ConS.Add(ccp.MakeCopy())
});

[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
Старый 27.08.2015, 15:09   #877
seserg
Новичок
 
Регистрация: 19.06.2013
Сообщений: 12
Сказал(а) спасибо: 5
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
seserg пока не определено
По умолчанию

Подскажите как можно разрушить созданный в скрипте блок на панели после манипуляций с ним(например копирования)?
seserg вне форума   Ответить с цитированием Вверх
Старый 01.09.2015, 01:03   #878
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 455
Сказал(а) спасибо: 243
Поблагодарили 1,099 раз(а) в 210 сообщениях
Вес репутации: 389
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от seserg Посмотреть сообщение
Подскажите как можно разрушить созданный в скрипте блок на панели после манипуляций с ним(например копирования)?
я бы попробовал присвоить объектам блока владельца пустой или модель (или бы посмотрел, кто владелец объектов вне блоков) и присвоил, а потом бы удалил пустой блок.

но не проверял....
v22884 вне форума   Ответить с цитированием Вверх
Старый 01.09.2015, 15:07   #879
seserg
Новичок
 
Регистрация: 19.06.2013
Сообщений: 12
Сказал(а) спасибо: 5
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
seserg пока не определено
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
я бы попробовал присвоить объектам блока владельца пустой или модель (или бы посмотрел, кто владелец объектов вне блоков) и присвоил, а потом бы удалил пустой блок.

но не проверял....
нашел другой путь обхода этой задачи. но спасибо, возможно попробую в будущем.

еще вопрос к знатокам, почему вертикальной панели задаю по x координату 0, а панель ставиться с координатой по x = толщине панели? http://prntscr.com/8bc806
seserg вне форума   Ответить с цитированием Вверх
Старый 01.09.2015, 15:55   #880
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 804 раз(а) в 179 сообщениях
Вес репутации: 360
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

это связано с тем, что вертикальная панель скриптах ставится на виде слева и поэтому её локальная система координата расположена на аздней пласти панели, которая имеет x равный толщине панели
Briz вне форума   Ответить с цитированием Вверх
Ответ

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


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1525 30.03.2024 15:03
БАЗИС 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


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


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

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