Форум профессиональных мебельщиков 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..
Просмотров: 994195
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 02.10.2014, 16:06   #521
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

function Ungroup(Group) {
for (i = Group.Count - 1; i >= 0; i--) {
Sbor = Group.Objects[i];
Undo.Transforming(Sbor);
Undo.OwnerChanging(Sbor);
Sbor.ReTransform(Group, Group.Owner);
Sbor.Owner = Group.Owner;
}
}
// пример:
Ungroup(Model.Selected);
Briz вне форума   Ответить с цитированием Вверх
Старый 03.10.2014, 08:07   #522
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Йищёо чуть исправленные подпятники(на вытянутых вниз не правильно ставились) :

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



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;



otsPered = Prop.NewNumber('Отступ Перед',50);
otsZad = Prop.NewNumber('Отступ Зад',70);


K_row = Prop.NewNumber('Количество на деталь',2);

K_row.OnChange = function() {

if (K_row.Value<1) {

K_row.Value=1
}
}

Krepej = Prop.NewFurniture('Ножки в торец или подпятники');
V_razniyeStorony = Prop.NewBool('В разные стороны')
V_Drugiye_razniyeStorony = Prop.NewBool('В ДРУГИЕ разные стороны')
PovernutDop = Prop.NewCombo('Развернить ножку на X', '0\n90\n180\n270');
PovernutDopY = Prop.NewCombo('Развернить ножку на Y', '0\n90\n180\n270');
PovernutDopZ = Prop.NewCombo('Развернить ножку на Z', '0\n90\n180\n270');
OtrazitX = Prop.NewBool('Отразить X')
OtrazitY = Prop.NewBool('Отразить Y')
OtrazitZ = Prop.NewBool('Отразить Z')



OkBtn = Prop.NewButton('Построить',true);


OkBtn.OnClick = function() {
Make(); //Вызываем функцию построения всех панелей
Action.Finish();
}







Prop.OnChange = function() {
//if (Fas.Value > Hd.Value) alert('Предупреждение! Фаска больше чем высота дна.')
Make(); //Вызываем функцию построения всех панелей
};


}





//Obj = Model.Selected;


function Make()
{
DeleteNewObjects();
//FileFreza = 'Фреза1.frw';
// conturFrezi=NewContour();
// conturFrezi.Load(FileFreza);
Model.forEach (function(Obj) {

if (Obj.Selected == true)

{
Nojki(Obj)




}
} )





}

function Nojki(Obj) {

//if (system.fileExists(Krepej.Value))
if (Krepej.Value)
{


otsPered_=otsPered.Value;
otsZad_=otsZad.Value;

ryadov = K_row.Value;


lnpv = GabarityContura(Obj);


ln =lnpv[0];
pv = lnpv[1];



//Niz = OpredelitNiz(Obj, ln, pv)

// NizWdol = p.ContourWidth
// NizH = p.ContourHeight

// пока не определили

if(V_razniyeStorony.Value)
{

ugolPovorotaPered=(-(135+(90*(ryad-1)/(ryadov-1)))) + Math.round(PovernutDop.Value)
ugolPovorotaZad=(-(45-(90*(ryad-1)/(ryadov-1)))) + Math.round(PovernutDop.Value)

}
else
{

ugolPovorotaPered=0
ugolPovorotaZad=0
}







mejdu_ryadov = (pv.x-ln.x-otsPered_-otsZad_)/(ryadov-1)

seredinaX = ln.x + (pv.x - ln.x) / 2

if (Math.round(ryadov)==1)
{

p1 = NewPoint(seredinaX, ln.y)

podp = Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)


}
else if (ryadov>1)
{
p1 = NewPoint( pv.x - otsPered_ , ln.y)

Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)

otsZad_ = ln.x + otsZad_
p1 = NewPoint(otsZad_, ln.y)


Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaZad)

ryad=3

while (ryad<ryadov+1)
{







p1 = NewPoint(otsZad_+mejdu_ryadov*(ryad-2), ln.y)





Ustanovit1Krepiyoj(Obj, p1, ugolPovorotaPered)



ryad++;
}
}
//Niz.Free()

}


}

function Ustanovit1Krepiyoj(Obj, p1, ugolPovorota, drstorona ) {


pos = Obj.ObjectToGlobal(NewVector(p1.x, p1.y,0))


podp = Krepej.Value.Mount1(Obj, pos, ugolPovorota);



podp.Rotate(podp.NToGlobal(AxisX), Math.round(PovernutDop.Value) * (Math.PI / 180))
podp.Rotate(podp.NToGlobal(AxisY), Math.round(PovernutDopY.Value) * (Math.PI / 180))
podp.Rotate(podp.NToGlobal(AxisZ), Math.round(PovernutDopZ.Value) * (Math.PI / 180))
// podp.Translate(NewVector(SmestitX.Value, SmestitY.Value, SmestitZ.Value))

return podp
}


function OpredelitNiz(Obj, ln, pv)
{
//Obj = Obj.AsPanel
tolshina = Obj.Thickness;
ln_ = Obj.ObjectToGlobal(ln);
pv_ = Obj.ObjectToGlobal(pv);
p = AddPanel(pv.x, tolshina)
p.Thickness = 0.000000001;
p.Translate(ln_)
p.Rotation = Obj.Rotation
p.Rotate(p.NToGlobal(AxisX), 90)

return p

}



function GabarityContura(Obj)

{
var text = '';


ln = NewPoint(0, 0); //левый низ
lv = NewPoint(0, 0); //левый верх
pn = NewPoint(0, 0); //правый низ
pv = NewPoint(0, 0); //правый верх контура

kontur = Obj.Contour;

kstoron = kontur.Count;
// var k_ne_krugov = 0;
for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) { //k_ne_krugov = k_ne_krugov+1

ln = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
lv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pn = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
}

};



for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) {
Pos1x = Math.round(kontur[i].Pos1.x * 10) / 10;
Pos1y = Math.round(kontur[i].Pos1.y * 10) / 10;
Pos2x = Math.round(kontur[i].Pos2.x * 10) / 10;
Pos2y = Math.round(kontur[i].Pos2.y * 10) / 10;


if (ln.x > Pos1x) {
ln.x = Pos1x
};
if (ln.x > Pos2x) {
ln.x = Pos2x
};
if (ln.y > Pos1y) {
ln.y = Pos1y
};
if (ln.y > Pos2y) {
ln.y = Pos2y
};

if (lv.x > Pos1x) {
lv.x = Pos1x
};
if (lv.x > Pos2x) {
lv.x = Pos2x
};
if (lv.y < Pos1y) {
lv.y = Pos1y
};
if (lv.y < Pos2y) {
lv.y = Pos2y
};

if (pn.x < Pos1x) {
pn.x = Pos1x
};
if (pn.x < Pos2x) {
pn.x = Pos2x
};
if (pn.y > Pos1y) {
pn.y = Pos1y
};
if (pn.y > Pos2y) {
pn.y = Pos2y
};

if (pv.x < Pos1x) {
pv.x = Pos1x
};
if (pv.x < Pos2x) {
pv.x = Pos2x
};
if (pv.y < Pos1y) {
pv.y = Pos1y
};
if (pv.y < Pos2y) {
pv.y = Pos2y
};

}
};

text4 = ('ln ---- ' + ln.x + ' - ' + ln.y + '\n' +
'lv ---- ' + lv.x + ' - ' + lv.y + '\n' +
'pn ---- ' + pn.x + ' - ' + pn.y + '\n' +
'pv ---- ' + pv.x + ' - ' + pv.y + '\n');
// alert(text4);
ln_v = ln; //левый низ выреза
pv_v = pv; //правый верх выреза

if (ln_v.x < lv.x) {
ln_v.x = lv.x
};
if (ln_v.y < pn.y) {
ln_v.y = pn.y
};

if (pv_v.x > pn.x) {
pv_v.x = pn.x
};
if (pv_v.y > lv.y) {
pv_v.y = lv.y
};





SeredinaVisotiPaneli = (pv_v.y - ln_v.y) * 0.5;
SeredinaShiriniPaneli = (pv_v.x - ln_v.x) * 0.5;






lnpv = []




lnpv.push(ln_v);
lnpv.push(pv_v);



return lnpv
}




[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
Анатолий.ru (23.01.2016)
Старый 04.10.2014, 03:00   #523
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Есть ли возможность Базис скриптом съмулировать нажания клавиш и сочетаний?

или скопировать выделенные в новую модель и сохранить по заданному пути?

наверно рыть в сторону NewCOMObject?

Сообщите, пожалуйста, стоящую ссылку по использованию NewCOMObject.
v22884 вне форума   Ответить с цитированием Вверх
Старый 05.10.2014, 07:28   #524
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Предъистория:
Верхняя задача: отправка в раскрой полностью автоматически, то есть без участия человека.

Для этого надо, чтоб файлы моделей были разложенны по определённым правилам, и т.п. и т.д.

Один из пунктов подготовки файлов: разложить модель на файл "прямых"(в прямолинейный раскрой) и файл "кривых"(в криволинейный раскрой).

Задача: Выделить "Кривые".
"Прямые" -- 1) прямоугольные,
2) треугольники
3) прямоугольные с любым количеством фасок(от 0 до 4) любого размера,
4) прямоугольные с любым количеством сопряжений(от 0 до 4) радиусом не более 30мм.
"Кривые" -- не "Прямые".

Решение:

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



UnSelectAll();


Model.forEachPanel(function(obj) {
if (!obj.IsContourRectangle)


{

if (Triugilnik_Li(obj))

{

// obj.Selected = true;


} else

{

if (!Na4uglahTolkoFaski_i_SkrugleniyaNebolshe30mm(obj)) {

obj.Selected = true;

}



}
//obj.Selected = true;


}
})

function Triugilnik_Li(obj)

{
c = obj.Contour
ck = c.Count
if (ck == 3) {

for (i = 0; i < ck; i++) {
if (!(c[i].ElType == 1)) {
return false
}
}

return true


} else {
return false
}

}


function Na4uglahTolkoFaski_i_SkrugleniyaNebolshe30mm(obj)

{
c = obj.Contour
ck = c.Count


// маскимум элементов 8 (если конечно не ящик с фигурным вырезом вместо ручки)
//возвращаем да если нет кругов
//если есть 4 стороны соответствующие сторонам прямоугольного габарита панели
// если на углах этих сторон либо просто угол 90,
//либо фаска то есть 1 линия от одной стороны до другой стороны,
// либо 1 дуга радиусом не более 30мм от одной стороны до другой


if (ck > 8) {
// докодить случай с ящиком
return false
} else {
if (yestKrugi(obj)) {

return false
} else {

MassStoron = StoronyVdolPriamougolnika(obj)
Storony = MassStoron[0]

if (Storony.length == 4) {

if (tolkoFaski_i_SkrugleniyaDo30mm(c, MassStoron)) {

// alert('tolkoFaski_i_SkrugleniyaDo30mm')
return true

}
else
{

// return true
return false
}
}






}
return false
}
}

function tolkoFaski_i_SkrugleniyaDo30mm(c, MassStoron) {
//здесь у нас всегда 4 стороны
// но сколько дуг или линий между ними не известно
//поэтому надо однозначно убедится что
//в каждом углу не болеечем по 1линии или по 1 дуге
// чтоб убедиться что нет внутреннего триугольника или четырёхугольника
Storony = MassStoron[0]
StoronyGde = MassStoron[1]

ck = c.Count
kolichestvoPoschitannyhStoron = 4
lnpv = GabarityContura(obj);


ln = lnpv[0];
pv = lnpv[1];

//---------------------
lv_sostoyaniye = S_Uglom_Vsio_Horosho('verh', 'levo', NewPoint(ln.x, pv.y), ln, pv, c, MassStoron)

lv_ok = lv_sostoyaniye[0]
kolichestvoPoschitannyhStoron = kolichestvoPoschitannyhStoron + lv_sostoyaniye[1]
if (!lv_ok)
{
// alert('плохой контур')
return false
} else {

//---------------------
pv_sostoyaniye = S_Uglom_Vsio_Horosho('verh', 'pravo', pv, ln, pv, c, MassStoron)

pv_ok = pv_sostoyaniye[0]
kolichestvoPoschitannyhStoron = kolichestvoPoschitannyhStoron + pv_sostoyaniye[1]
if (!pv_ok)
{
// alert('плохой контур')
return false
} else {
//---------------------
ln_sostoyaniye = S_Uglom_Vsio_Horosho('niz', 'levo', ln, ln, pv, c, MassStoron)

ln_ok = ln_sostoyaniye[0]
kolichestvoPoschitannyhStoron = kolichestvoPoschitannyhStoron + ln_sostoyaniye[1]
if (!ln_ok)
{
// alert('плохой контур')
return false
} else {
//---------------------
pn_sostoyaniye = S_Uglom_Vsio_Horosho('niz', 'pravo', NewPoint(pv.x, ln.y), ln, pv, c, MassStoron)

pn_ok = pn_sostoyaniye[0]
kolichestvoPoschitannyhStoron = kolichestvoPoschitannyhStoron + pn_sostoyaniye[1]
if (!pn_ok)
{
// alert('плохой контур')
return false
} else {

if (ck==kolichestvoPoschitannyhStoron)
{
// alert('хороший контур')
return true
} else
{
// alert('плохой контур')
return false
}
}}}}

}





function S_Uglom_Vsio_Horosho(imia1, imia2, tochkaUgla, ln, pv, c, MassStoron) {
//левый верхний угол-------------------------
//берём сторону "верх"
//берём сторону "лево"
//проверяем не соеденены ли они по ближним к углу(в_лв,л_лв) поз1 или поз2
//если нет, то перебором элементов контура ищем по в_лв/л_лв точкам
// дугу или линию у которой и поз1 и поз2 должны быть соеденены
//с в_лв/л_лв
//если Дуга проверяем, что от угла контура в_лв/л_лв на равном расстоянии
//равном радиусу Дуги и и этот радиус не более 30мм.
// далее с остальными тремя углами также.
// ---не-ВСЁ!!! -- проверить все ли элементы контура проверели
// в контуре всё ещё могут пройти вариации из дуг и линий числом не больше 4
// поэтому надо посчитать не соеденённые под 90гр углы и сравнить их количество
//с количеством элементов контура
// теперь вроде всё...(пока)

Storony = MassStoron[0]
st1 = DayStoronu(MassStoron, imia1)
st2 = DayStoronu(MassStoron, imia2)

// alert(c + ' -- ' +st1+ ' - ' +st2 + ': ' + c[st1].Pos1.x + '; ' +c[st1].Pos1.y)



toshka_st1 = blijniaya(tochkaUgla, c[st1])
toshka_st2 = blijniaya(tochkaUgla, c[st2])

// alert(imia1+ ' - ' +imia2 + ': ' + toshka_st1.x + '; ' +toshka_st1.y)

sostoyaniye = [];


if (!((toshka_st1.x == toshka_st2.x) && (toshka_st1.y == toshka_st2.y))) {
// alert("Стороны не соеденены!")

//alert(el == c[Storony[0]])
if (soyedenenyLiLiniyey_ili_DugoyDo30mm(toshka_st1, toshka_st2, tochkaUgla, ln, pv))
//(!(el.x == c[Storony[0]])) && (!(el == c[Storony[1]]))
//&& (!(el == c[Storony[2]]))&& (!(el == c[Storony[3]])) )


{
sostoyaniye.push( true ,1)

return sostoyaniye

//return true
} else {

// return false
sostoyaniye.push( false ,0)

return sostoyaniye
}


} else {


sostoyaniye.push( true ,0)

return sostoyaniye
}





}

function soyedenenyLiLiniyey_ili_DugoyDo30mm(t1, t2, tochkaUgla, ln, pv) {
for (i = 0; i < ck; i++) {
el = c[i]

x1 = okr(el.Pos1.x)
x2 = okr(el.Pos2.x)
y1 = okr(el.Pos1.y)
y2 = okr(el.Pos2.y)

// p = AddPanel(50, 50)
// p.Translate(obj.ToGlobal(el.Pos1))
// p = AddPanel(50, 50)
// p.Translate(obj.ToGlobal(el.Pos2))

//alert(t1.x+ ' -- ' +t2.x+ ' -- ' +x1+ ' -- ' +x2)
//alert ((x2==t1.x && y2==t1.y))





if (((x1 == t1.x && y1 == t1.y) && (x2 == t2.x && y2 == t2.y)) || ((x2 == t1.x && y2 == t1.y) && (x1 == t2.x && y1 == t2.y))) {
//alert(el)
if (el.ElType == 2) {
rad = el.ArcRadius()
// alert(rad < 21)
if (rad > 30) {
return false
} else {
// предпологается что токое скругление всегда обычное сопряжение
//, а не какое-нибудь хитрое соединение дугой
//хотя конечно варианты лучше обработать: оно ж может быть и во внутрь!!!

if (obychnoyeLiSopriajeniye(el, t1, t2, tochkaUgla, ln, pv))
{ return true} else { return false}






}

} else {
return true
}

}

}
return false
}

function obychnoyeLiSopriajeniye(el, t1, t2, tochkaUgla, ln, pv)
{
rad = el.ArcRadius()
conturProverki = NewContour()
cp = conturProverki
cp.AddRectangle(ln.x, ln.y, pv.x, pv.y)
skrDuga = cp.Rounding(tochkaUgla.x, tochkaUgla.y, rad);
// alert(skrDuga)
// pp1 = AddPanel(0, 0)
// pp1.Contour.Clear()
// pp1.Contour.Addition(cp)

cX_el = okr(el.Center.x )
cY_el = okr(el.Center.y )
cX_skr = okr(skrDuga.Center.x )
cY_skr = okr(skrDuga.Center.y )

if (cX_el == cX_skr && cY_el == cY_skr)
{
return true
}
else {
return false
}



}
function blijniaya(tochkaKontura, storona) {

//здесь всегда storona - линия вдоль измерения x или y

xx = okr(tochkaKontura.x)

yy = okr(tochkaKontura.y)

x1 = okr(storona.Pos1.x)
x2 = okr(storona.Pos2.x)


y1 = okr(storona.Pos1.y)
y2 = okr(storona.Pos2.y)


// alert ('Здесь - '+xx + ' -- ' + x1+ ' -- ' + x2)


if (x1 == x2) {
x_ = x1
if (Math.abs(yy - y1) < Math.abs(yy - y2)) {
y_ = y1
} else {
y_ = y2
}
} else
y_ = y1
if (Math.abs(xx - x1) < Math.abs(xx - x2)) {
x_ = x1
} else {
x_ = x2
}

ppp = NewPoint(x_, y_)
return ppp


}

function DayStoronu(MassStoron, imia) {
Storony = MassStoron[0]
StoronyImia = MassStoron[1]

for (i = 0; i < Storony.length; i++) {
//alert( StoronyImia[i] +' - ' +imia + ' - ' + Storony[i]+ ' - ' +Storony.length)
if (StoronyImia[i] == imia) {
// alert( 'Возврат - ' + Storony[i])
return Storony[i]
}
}
alert("Какая-то ошибка!!!\n -- Нет такого имени в названиях сторон.")

}

function yestKrugi(obj) {
c = obj.Contour
ck = c.Count

for (i = 0; i < ck; i++) {
if ((c[i].ElType == 3)) {
return true
}
}

return false




}





function StoronyVdolPriamougolnika(obj) {
c = obj.Contour
ck = c.Count

w = c.Width
h = c.Hight

lnpv = GabarityContura(obj);


ln = lnpv[0];
pv = lnpv[1];

niz = okr(ln.y)
levo = okr(ln.x)
verh = okr(pv.y)
pravo = okr(pv.x)

Storony = [];
StoronyGde = [];
kl = 0
for (i = 0; i < ck; i++) {
if ((c[i].ElType == 1)) {




x1 = okr(c[i].Pos1.x)
x2 = okr(c[i].Pos2.x)

y1 = okr(c[i].Pos1.y)
y2 = okr(c[i].Pos2.y)

// alert(x1 +' -- ' + x2 +' -- ' + levo +'\n'+
// x1 +' -- ' + x2 +' -- ' + pravo +'\n'+
// y1 +' oo ' + y2 +' oo ' + verh +'\n'+
// y1 +' -- ' + y2 +' -- ' + niz )


//if (

if (x1 == x2 & x1 == levo) // |
{

StoronyGde.push('levo');
Storony.push(i);
kl = kl + 1
}

if (x1 == x2 & x1 == pravo) // | ==
{

StoronyGde.push('pravo');
Storony.push(i);
kl = kl + 1
}

if (y1 == y2 & y1 == verh) // |
{

StoronyGde.push('verh');
Storony.push(i);
kl = kl + 1
}

if (y1 == y2 & y1 == niz) // )

{

StoronyGde.push('niz');
Storony.push(i);
kl = kl + 1
}
}
}
// alert (kl)
massivy = [];
massivy.push(Storony);
massivy.push(StoronyGde);
return massivy

}

function okr(chislo) {
return Math.round(chislo * 10) / 10
}


function GabarityContura(Obj)

{
var text = '';


ln = NewPoint(0, 0); //левый низ
lv = NewPoint(0, 0); //левый верх
pn = NewPoint(0, 0); //правый низ
pv = NewPoint(0, 0); //правый верх контура

kontur = Obj.Contour;

kstoron = kontur.Count;
// var k_ne_krugov = 0;
for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) { //k_ne_krugov = k_ne_krugov+1

ln = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
lv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pn = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
pv = NewPoint(Math.round(kontur[i].Pos1.x * 10) / 10, Math.round(kontur[i].Pos1.y * 10) / 10);
}

};



for (i = 0; i < kstoron; i++) {
if (kontur[i].ElType != 3) {
Pos1x = Math.round(kontur[i].Pos1.x * 10) / 10;
Pos1y = Math.round(kontur[i].Pos1.y * 10) / 10;
Pos2x = Math.round(kontur[i].Pos2.x * 10) / 10;
Pos2y = Math.round(kontur[i].Pos2.y * 10) / 10;


if (ln.x > Pos1x) {
ln.x = Pos1x
};
if (ln.x > Pos2x) {
ln.x = Pos2x
};
if (ln.y > Pos1y) {
ln.y = Pos1y
};
if (ln.y > Pos2y) {
ln.y = Pos2y
};

if (lv.x > Pos1x) {
lv.x = Pos1x
};
if (lv.x > Pos2x) {
lv.x = Pos2x
};
if (lv.y < Pos1y) {
lv.y = Pos1y
};
if (lv.y < Pos2y) {
lv.y = Pos2y
};

if (pn.x < Pos1x) {
pn.x = Pos1x
};
if (pn.x < Pos2x) {
pn.x = Pos2x
};
if (pn.y > Pos1y) {
pn.y = Pos1y
};
if (pn.y > Pos2y) {
pn.y = Pos2y
};

if (pv.x < Pos1x) {
pv.x = Pos1x
};
if (pv.x < Pos2x) {
pv.x = Pos2x
};
if (pv.y < Pos1y) {
pv.y = Pos1y
};
if (pv.y < Pos2y) {
pv.y = Pos2y
};

}
};

text4 = ('ln ---- ' + ln.x + ' - ' + ln.y + '\n' +
'lv ---- ' + lv.x + ' - ' + lv.y + '\n' +
'pn ---- ' + pn.x + ' - ' + pn.y + '\n' +
'pv ---- ' + pv.x + ' - ' + pv.y + '\n');
// alert(text4);
ln_v = ln; //левый низ выреза
pv_v = pv; //правый верх выреза

if (ln_v.x < lv.x) {
ln_v.x = lv.x
};
if (ln_v.y < pn.y) {
ln_v.y = pn.y
};

if (pv_v.x > pn.x) {
pv_v.x = pn.x
};
if (pv_v.y > lv.y) {
pv_v.y = lv.y
};





SeredinaVisotiPaneli = (pv_v.y - ln_v.y) * 0.5;
SeredinaShiriniPaneli = (pv_v.x - ln_v.x) * 0.5;






lnpv = []




lnpv.push(ln_v);
lnpv.push(pv_v);



return lnpv
}

[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
Старый 05.10.2014, 08:38   #525
Oldman
VIP
 
Аватар для Oldman
 
Регистрация: 26.12.2008
Адрес: Минск
Сообщений: 1,414
Сказал(а) спасибо: 6,648
Поблагодарили 4,881 раз(а) в 1,099 сообщениях
Вес репутации: 1322
Oldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспоримаOldman репутация неоспорима
По умолчанию

Цитата:
Верхняя задача: отправка в раскрой полностью автоматически
Еще хорошо было бы добавить детали с пазами и с облицованной пластью.
Oldman вне форума   Ответить с цитированием Вверх
Старый 05.10.2014, 19:41   #526
PEHAT
Местный
 
Регистрация: 07.09.2014
Сообщений: 187
Сказал(а) спасибо: 182
Поблагодарили 211 раз(а) в 69 сообщениях
Вес репутации: 178
PEHAT - весьма и весьма положительная личностьPEHAT - весьма и весьма положительная личностьPEHAT - весьма и весьма положительная личность
По умолчанию

Помогите разобраться. Делаю возможность уменьшить панель по оси Х, с обоих сторон. При перестроении контура в расчёт берётся СК панели, в следствии чего панель строится не на прежних координатах, а со смещением на величину изначальных координат панели. Пробовал перевести в глобальную СК, никаких изменений не произошло. Удалил строки (перевода в глобальную СК) и после этого панель стала строиться как надо. Установка новой панели и попытка её изменить приводит к смещению панели. Теперь у меня две панели, одна (старая) строится как мне нужно, а вторая (новая) строиться со смещением. В скрипте убрал строки с попыткой перевода в глобальную СК.

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

AddFrontPanel(-800, 0,-300, 500, 0)
Action.Commit();

Obj = Model.Selected;
if (Obj)
Obj = Obj.AsPanel;
if (!Obj)
Obj = GetPanel("Укажите панель");
if (Obj) {
C = Obj.Contour;
StartEditing(Obj);

C.Fit(Obj.GabMin.x + 20, Obj.GabMin.y, Obj.GabMax.x - 20, Obj.GabMax.y);
Obj.Build();
Action.Commit();
};
[свернуть]
PEHAT вне форума   Ответить с цитированием Вверх
Старый 05.10.2014, 20:13   #527
Briz
Местный
 
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
Briz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личностьBriz - просто великолепная личность
По умолчанию

Замените GabMin/GabMax на GMin/GMax
Briz вне форума   Ответить с цитированием Вверх
Старый 07.10.2014, 06:05   #528
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Труба Вертикальная:

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



Krepej = NewFurnitureInput('Трубодержатель');

Bok1 = GetPanel("Укажите Нижнюю панель");
Bok2 = GetPanel("Укажите Верхнюю панель");
//TPro = Bok2.Contour.TProjection;
//alert(Bok1);

//SetCamera(Bok1.PanelSideEnum(true));

//SetCamera(Bok1.PanelSideEnum=true);
y1k = Bok1.GabMax.y
y2k = Bok2.GabMin.y

//x1 = x1k + 1;
//x2 = x2k - 1;

SetCamera(p3dTop )

z1 = Bok1.GabMin.z + 1;
z2 = Bok1.GabMax.z - 20;








function MoveOdj()
{
DeleteNewObjects()

Ext = AddExtrusion('Труба D25');

// выталкиваемый профиль
//truba = 'Труба25.frw'
Ext.Contour.AddCircle(0, 0, 12.5)

// вытянем профиль вдоль оси X
Ext.Orient(AxisY, AxisZ);
// установим длину профиля
Ext.Thickness =y2k-y1k;
Ext.PositionX = Action.Pos3.x
Ext.PositionY = Action.Pos3.y
Ext.PositionZ = Action.Pos3.z
Ext.Translate(NewVector(0, y1k, 0))

Krepej.Mount1(Bok1, Action.Pos3.x, y1k, Action.Pos3.z, 0)
Krepej.Mount1(Bok2, Action.Pos3.x,y2k, Action.Pos3.z, 0)


}

Action.ShowPoints = true;
Action.OnMove = function() {MoveOdj()};
Action.OnClick = function() {Action.Finish()};
Action.Continue();


[свернуть]
v22884 вне форума   Ответить с цитированием Вверх
Старый 09.10.2014, 00:04   #529
AndrianoS
Пользователь
 
Регистрация: 21.08.2009
Адрес: Санкт-Петербург
Сообщений: 59
Сказал(а) спасибо: 73
Поблагодарили 15 раз(а) в 9 сообщениях
Вес репутации: 187
AndrianoS на пути к лучшему
По умолчанию

Подскажите пожалуйста,можно ли такое организовать.Когда мы создаем панель свойств с разными группами и подгруппами,то по умолчанию они все развернутые.Можно ли их сделать свернутыми?


Код:
prop();
Action.Continue();

function prop() {
  Prop       = Action.Properties;

  PropGroup1 = Prop.NewGroup('Группа 1:');
    Prop1    = PropGroup1.NewNumber('Свойство 1');
    Prop2    = PropGroup1.NewNumber('Свойство 2');
    Prop3    = PropGroup1.NewNumber('Свойство 3');

  PropGroup2 = Prop.NewGroup('Группа 2:');
    Prop4    = PropGroup2.NewNumber('Свойство 1');
    Prop5    = PropGroup2.NewNumber('Свойство 2');
    Prop6    = PropGroup2.NewNumber('Свойство 3');

  PropGroup3= Prop.NewGroup('Группа 3:');
    Prop7    = PropGroup3.NewNumber('Свойство 1');
    Prop8    = PropGroup3.NewNumber('Свойство 2');
    Prop9    = PropGroup3.NewNumber('Свойство 3');

  PropGroup4 = Prop.NewGroup('Группа 4:');
    Prop10   = PropGroup4.NewNumber('Свойство 1');
    Prop11   = PropGroup4.NewNumber('Свойство 2');
    Prop12   = PropGroup4.NewNumber('Свойство 3');
}
Миниатюры
рис1.jpg   рис2.jpg  
AndrianoS вне форума   Ответить с цитированием Вверх
Старый 09.10.2014, 06:48   #530
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от AndrianoS Посмотреть сообщение
Можно ли их сделать свернутыми?
видимо надо присвоить

PropGroup1.Expanded = false

или Store (не проверял).

пользуйтесь

key

сообщение от Briz'a на двадцать какой-то странице.
v22884 вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков 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


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


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

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