Местный
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 211
|
скрипт из двух форм генерирующий название видов покраски и красящий детали согласно ценовой группе. Внимание скрипт определяет ценовую группу по цифрам артикула материала.
для каждой ценовой группы свой список расцветок и эффектов покраски.
Скрытый текст
покраска
PHP код:
//форма выбора набора красок и эффектов
function Ztifr(txt, n) { // функция возвращает цифры из куска строки // ch - число // n - количество знаков слева var ets = txt.substring(0, n); //alert(ets); return parseInt(ets.match(/\d+/)); }
Materials = []; PanelByMaterial = []; var PanelChanged = 0;
Model.forEachPanel( function(Obj) { var MtName = Ztifr(ExtractMatCode(Obj.MaterialName), 50); if (MtName >=1) {}else{MtName = "";} var Index = Materials.indexOf(MtName); if (Index < 0) { Index = Materials.push(MtName) - 1; var Panels = []; PanelByMaterial.push(Panels); } PanelByMaterial[Index].push(Obj); });
function GetKrask(__k) { // функция возвращает списки красски и отделки получив цифру ценовой группы var kras = []; var effe = [];
switch (__k){ case 1: kraska = ["", "эмаль_АВОРИО", "эмаль_АКВА", "эмаль_АКВАМАРИН", "эмаль_АНТРАЦИТ", "эмаль_БАЗАЛЬТ", "эмаль_БЕЖЕВЫЙ", "эмаль_БЕЛЫЙ", "эмаль_БОРДО", "эмаль_ВАНИЛЬ", "эмаль_ВОЛНА", "эмаль_ГАВАНА", "эмаль_ГЛИНЯНЫЙ", "эмаль_ГОЛУБОЙ", "эмаль_ГРАНАТ", "эмаль_ГРИДЖИО", "эмаль_ДИП БЛЕК", "эмаль_ЕЖЕВИКА СО СЛИВКАМИ", "эмаль_ЖЕЛТЫЙ", "эмаль_ЗЕЛЕНЫЙ", "эмаль_КАКАО", "эмаль_КАППУЧИНО", "эмаль_КВАРЦ", "эмаль_КОРДА", "эмаль_КОФЕ", "эмаль_КРАСНЫЙ", "эмаль_КРЕМ", "эмаль_ЛАЙМ", "эмаль_ЛАЙТ ГРЕЙ", "эмаль_ЛАТТЕ", "эмаль_МАРЕНГО", "эмаль_МАСЛО", "эмаль_МОЛОКО", "эмаль_ОБЛАКО", "эмаль_ОЛИВКОВО-СЕРЫЙ", "эмаль_ОПАЛ", "эмаль_ОРАНЖЕВЫЙ", "эмаль_ПЕПЕЛЬНЫЙ", "эмаль_ПЕТРОЛ", "эмаль_РУБИНОВЫЙ", "эмаль_СВЕТЛО-СЕРЫЙ", "эмаль_СЕРО-БЕЖЕВЫЙ", "эмаль_СЕРЫЙ", "эмаль_СЕРЫЙ ЖЕМЧУГ", "эмаль_СИНИЙ", "эмаль_СИРЕНЬ", "эмаль_СЛИВКИ", "эмаль_СНЕЖНЫЙ", "эмаль_ТЕМНО-СЕРЫЙ", "эмаль_ТЕПЛЫЙ БЕЖ", "эмаль_ТОПЛЕНОЕ МОЛОКО", "эмаль_ТУРЕЦКАЯ ЛАЗУРЬ", "эмаль_ФИСТАШКОВЫЙ", "эмаль_ЧЕРНЫЙ", "эмаль_ШОКОЛАД", "эмаль_СЕРЕБРИСТЫЙ"]; effekt = ["", '&матовая','&глянец','&Велюр','&X-matt']; break; case 2: kraska = ["", "эмаль_АВОРИО", "эмаль_АКВА", "эмаль_АКВАМАРИН", "эмаль_АНТРАЦИТ", "эмаль_БАЗАЛЬТ", "эмаль_БЕЖЕВЫЙ", "эмаль_БЕЛЫЙ", "эмаль_БОРДО", "эмаль_ВАНИЛЬ", "эмаль_ВОЛНА", "эмаль_ГАВАНА", "эмаль_ГЛИНЯНЫЙ", "эмаль_ГОЛУБОЙ", "эмаль_ГРАНАТ", "эмаль_ГРИДЖИО", "эмаль_ДИП БЛЕК", "эмаль_ЕЖЕВИКА СО СЛИВКАМИ", "эмаль_ЖЕЛТЫЙ", "эмаль_ЗЕЛЕНЫЙ", "эмаль_КАКАО", "эмаль_КАППУЧИНО", "эмаль_КВАРЦ", "эмаль_КОРДА", "эмаль_КОФЕ", "эмаль_КРАСНЫЙ", "эмаль_КРЕМ", "эмаль_ЛАЙМ", "эмаль_ЛАЙТ ГРЕЙ", "эмаль_ЛАТТЕ", "эмаль_МАРЕНГО", "эмаль_МАСЛО", "эмаль_МОЛОКО", "эмаль_ОБЛАКО", "эмаль_ОЛИВКОВО-СЕРЫЙ", "эмаль_ОПАЛ", "эмаль_ОРАНЖЕВЫЙ", "эмаль_ПЕПЕЛЬНЫЙ", "эмаль_ПЕТРОЛ", "эмаль_РУБИНОВЫЙ", "эмаль_СВЕТЛО-СЕРЫЙ", "эмаль_СЕРО-БЕЖЕВЫЙ", "эмаль_СЕРЫЙ", "эмаль_СЕРЫЙ ЖЕМЧУГ", "эмаль_СИНИЙ", "эмаль_СИРЕНЬ", "эмаль_СЛИВКИ", "эмаль_СНЕЖНЫЙ", "эмаль_ТЕМНО-СЕРЫЙ", "эмаль_ТЕПЛЫЙ БЕЖ", "эмаль_ТОПЛЕНОЕ МОЛОКО", "эмаль_ТУРЕЦКАЯ ЛАЗУРЬ", "эмаль_ФИСТАШКОВЫЙ", "эмаль_ЧЕРНЫЙ", "эмаль_ШОКОЛАД", "эмаль_СЕРЕБРИСТЫЙ", "эмаль_ЗОЛОТОЙ МЕТ.", "эмаль_ШАМПАНЬ МЕТ."]; effekt = ["", "&матовая", "&глянец", "&Велюр", "&X-matt", "&металлик"]; break; case 3: kraska = ["", "шпон_FL ВЕНГЕ", "шпон_FL ВЕНГЕ РАДИАЛЬНЫЙ", "шпон_FL ГРЕЦКИЙ ОРЕХ", "шпон_FL ДЕРЕВО ЭБЕНОВОЕ", "шпон_FL ДУБ КАКАО", "шпон_FL ЗЕБРАНО ", "шпон_FL ЗЕБРАНО ГРАФИТ", "шпон_FL ИНДИЙСКИЙ ЭБЕН", "шпон_FL ОРЕХ ФРАНЦУЗСКИЙ", "шпон_FL ПАЛИСАНДР", "шпон_FL ПАЛИСАНДР ОГНЕННЫЙ", "шпон_FL ПАЛИСАНДР РИО", "шпон_FL ТИК", "шпон_ДУБ НАТУРАЛЬНЫЙ", "шпон_АМЕРИКАНСКИЙ ОРЕХ", "шпон_ЕВРОПЕЙСКИЙ ОРЕХ", "шпон_ОЛИВКОВЫЙ ЯСЕНЬ", "шпон_СЕРЫЙ ГРАБ", "шпон_ТИГРОВЫЙ ЭБЕН", "шпон_АМЕРИКАНСКИЙ ОРЕХ 3D", "шпон_ДУБ ВИНТАЖ 3D", "шпон_ДУБ НАТУРАЛЬНЫЙ 3D", "шпон_ЭВКАЛИПТ 3D", "шпон_ЭВКАЛИПТ МОРЕНЫЙ 3D"]; effekt = ["", "&ЭКО", "&матовый Открытая пора", "& полиэфир матовый", "&глянец"]; break; case 4: kraska = ["", "шпон_ДУБ БЕЛОГО ЦВЕТА", "шпон_ДУБ В ЦВЕТЕ ВЕНГЕ", "шпон_ДУБ ГЛИНЯНОГО ЦВЕТА", "шпон_ДУБ МАСЛЯННОГО ЦВЕТА", "шпон_ДУБ ОЛИВКОВОГО ЦВЕТА", "шпон_ДУБ СЕРЫЙ ЖЕМЧУГ", "шпон_ДУБ ЧЕРНЫЙ", "шпон_ДУБ КОНЬЯК 3D", "шпон_ДУБ ЛЕН 3D", "шпон_ДУБ ПЕПЕЛ 3D", "шпон_ДУБ СЕРЫЙ 3D", "шпон_ДУБ ТАБАККО 3D", "шпон_ДУБ УМБРА 3D"]; effekt = ["", "&окрашенный матовый", '']; break; case 5: kraska = ["", "эмаль_СИРЕНЕВЫЙ МЕТ.", "эмаль_МЕТАЛЛ АНТИК", "эмаль_МЕТАЛЛ", "эмаль_БЕЛЫЙ ПЕРЛАМУТР", "эмаль_БОЛОТНЫЙ МЕТ.", "эмаль_ГОЛУБОЙ МЕТ.", "эмаль_ЖЕМЧУГ", "эмаль_ЗЕЛЕНЫЙ МЕТ. ", "эмаль_РОЗОВО-БЕЖЕВЫЙ МЕТ.", "эмаль_РОЗОВЫЙ МЕТ.", "эмаль_САЛАТОВЫЙ МЕТ.", "эмаль_СВЕТЛО-СИРЕНЕВЫЙ МЕТ.", "эмаль_ГРАФФИТИ", "эмаль_ЭЛЬДОРАДО ГОЛД"]; effekt = ["", "&металлик", "&cпецэффект"]; break; case 6: kraska = ["", "шпон_FL ВЕНГЕ", "шпон_FL ВЕНГЕ РАДИАЛЬНЫЙ", "шпон_FL ГРЕЦКИЙ ОРЕХ", "шпон_FL ДЕРЕВО ЭБЕНОВОЕ", "шпон_FL ДУБ КАКАО", "шпон_FL ЗЕБРАНО ", "шпон_FL ЗЕБРАНО ГРАФИТ", "шпон_FL ИНДИЙСКИЙ ЭБЕН", "шпон_FL ОРЕХ ФРАНЦУЗСКИЙ", "шпон_FL ПАЛИСАНДР", "шпон_FL ПАЛИСАНДР ОГНЕННЫЙ", "шпон_FL ПАЛИСАНДР РИО", "шпон_FL ТИК", "шпон_ДУБ НАТУРАЛЬНЫЙ", "шпон_АМЕРИКАНСКИЙ ОРЕХ", "шпон_ЕВРОПЕЙСКИЙ ОРЕХ", "шпон_ОЛИВКОВЫЙ ЯСЕНЬ", "шпон_СЕРЫЙ ГРАБ", "шпон_ТИГРОВЫЙ ЭБЕН"]; effekt = ["", "&ЭКО", "&матовый Открытая пора ", "& полиэфир матовый", "& глянец"]; break; case 7: kraska = ["", "шпон_МАКАССАР - LIGHT", "шпон_ДУБ БОРДО С МЕДНОЙ ПАТИНОЙ", "шпон_ОЛИВА - LIGHT", "шпон_ЗИРИКОТЕ - LIGHT", "шпон_ДУБ ЧЕРНЫЙ С СЕРЕБРЯНОЙ ПАТИН", "шпон_ВЕНГЕ НАТУРАЛЬНЫЙ", "шпон_ПАЛИСАНДР ВОСТОЧНЫЙ", "шпон_РЕД ГАМ", "шпон_САНТОС ПАЛИСАНДР", "шпон_ТИК НАТУРАЛЬНЫЙ", "шпон_МАКАССАР"]; effekt = ["", "&Натуральный матовый", "&полиэфир матовый", "&полиэфир глянец"]; break; case 8: kraska = ["", "шпон_ЗИРИКОТЕ - LIGHT", "шпон_ДУБ АВОРИО С КОРИЧНЕВОЙ ПАТИНОЙ", "шпон_ДУБ БОРДО С МЕДНОЙ ПАТИНОЙ", "шпон_ДУБ ЧЕРНЫЙ С БОРДОВОЙ ПАТИНОЙ", "шпон_ДУБ ЧЕРНЫЙ С ЗОЛОТОЙ ПАТИНОЙ", "шпон_ДУБ ЧЕРНЫЙ С СЕРЕБРЯНОЙ ПАТИНОЙ"]; effekt = ["", "&полиэфир матовый", "&полиэфир глянец"]; break; case 9: kraska = ["", "шпон_ВЕНГЕ НАТУРАЛЬНЫЙ", "шпон_ПАЛИСАНДР ВОСТОЧНЫЙ", "шпон_РЕД ГАМ", "шпон_САНТОС ПАЛИСАНДР", "шпон_ТИК НАТУРАЛЬНЫЙ", "шпон_ОЛИВА", "шпон_МАКАССАР"]; effekt = ["", "&ЭКО", "&матовый Открытая пора ", "& полиэфир матовый", "& глянец"]; break; case 10: kraska = ["", "нет данных"]; effekt = ["", "нет эффектов"]; break; case 11: kraska = ["", "эмаль_БЕТОН АНТРАЦИТ", "эмаль_БЕТОН ДЖАСП", "эмаль_МЕДЬ АНТИК", "эмаль_ЛАТУНЬ АНТИК", "эмаль_СТАЛЬ", "шпон_МАКАССАР", "шпон_ОЛИВА"]; effekt = ["", "&METALL", "&бетон"]; break; case 12: kraska = ["", "шпон_ЗИРИКОТЕ"]; effekt = ["", "&полиэфир матовый", "&полиэфир глянец"]; break; default: alert( 'Вы не выбрали ценовую группу' ); break; } var otdelka = {kras: kraska, effe: effekt }; return otdelka; };
//-- window Window2 Window2 = { Form : NewForm() }; Props = Window2.Form.Properties; Window2.Form.Width = 245; Window2.Form.Height = 150; Window2.Form.Caption = "Ценовая группа?"; Window2.Form.OKButton = true; Window2.Form.CancelButton = false; Window2.Form.Resizable = true; //-- window Window2 properties
Window2.Combo1 = Props.NewCombo("ценовая группа",""); Window2.Combo1.SetLayout(5, 42, 206, 22); Window2.Combo1.ComboItems = Materials;
Window2.Label1 = Props.NewLabel("выверите ценовую гриппу"); Window2.Label1.SetLayout(5, 20, 319, 22); //-- window Window2 events
//-- window Window2 ends Window2.Form.ShowModal(); var _k = Ztifr(Window2.Combo1.Value, 3) ; // alert ("выбрана ценовая группа " + _k ); //-- window Window1 Window1 = { Form : NewForm() }; Props = Window1.Form.Properties; Props = Window1.Form.Properties; Window1.Form.Width = 400; Window1.Form.Height = 220; Window1.Form.Caption = "покраска"; Window1.Form.OKButton = true; Window1.Form.Resizable = true; Window1.Form.CancelButton = false; Window1.Form.MinHeight = 180;
Window1.Form.CancelButton = true; Window1.Form.OKButton = true; //-- window Window1 properties
Window1.Combo1 = Props.NewCombo("отделки",""); Window1.Combo1.SetLayout(24, 16, 294, 22); Window1.Combo1.ComboItems = GetKrask(_k).kras; Window1.Combo2 = Props.NewCombo("эффекты",""); Window1.Combo2.SetLayout(24, 51, 294, 22); Window1.Combo2.ComboItems = GetKrask(_k).effe; Window1.usl = Props.NewBool("выбрать панели вручную",false); Window1.usl.SetLayout(23, 108, 295, 22); //-- window Window1 events
//-- window Window1 ends
Window1.Form.ShowModal();
var Pan; var ruch = Window1.usl.Value; //значение ручного выбора var _n = Window2.Combo1.Value; //значение ценовой группы _n = Ztifr( _n, 5); var _i = 0; // счетчик окрашенных панелей
if (ruch) //выбрать вручную окраску панелей {
BtnStop = NewButtonInput("Закончить"); var knop = true; var plastMat; // выполняем выделение в бесконечном цикле // при нажатии на отмену команды скрипт все равно завершится, т.к. // он вызывает функцию GetObject()
while (knop) { BtnStop.OnChange = function() { //alert('Нажата Кнопка "Закончить"'); return knop = false; } if (knop) { Pan = GetPanel("Укажите панель");
}else { alert('конец скрипта'); } // условие Pan.Plastics. проверяет, // что у выбранной не свойства пластик if (ZcnGr(Pan, _n)) { if (Pan.Plastics.Count == 0) { Pan.AddPlastic(plastMat, true); plastMat = Pan.Plastics.Plastics[0]; plastMat.Material = Window1.Combo1.Value + Window1.Combo2.Value; plastMat.Thickness = 0.1; ++_i; Pan.Color = 100; Pan.Selected = true; } else { alert('Панель уже покрашена'); } } else { alert('Панель другой ценовой группы'); }
}
} else {
Model.forEachPanel(function(Pan) { if (ZcnGr(Pan, _n)) if (Pan.Plastics.Count == 0) { Pan.AddPlastic(plastMat, true); plastMat = Pan.Plastics.Plastics[0]; plastMat.Material = Window1.Combo1.Value + Window1.Combo2.Value; plastMat.Thickness = 0.1; Pan.Color = 200; Pan.Selected = true; ++_i; }
}); alert("окрашено " + _i +" панелей " + _n +" цн.гр. "); }
function ZcnGr(obj, nGr) { var artiqul = ExtractMatCode(obj.MaterialName); //извлекаем артикул из названия материала var tzGr = Ztifr(artiqul, 100); //извлекаем цифры из артикула материала if (tzGr == nGr) { return true; } else {return false; } }
[свернуть]
скрипт может быть интересен, если вам нужно создавать формы-пользователя с динамически обновляемыми списками.
работает в 10 и 11 версиях
__________________
С уважением Кузнецов Александр
|