|
|
|
|
|
06.06.2017, 08:56
|
|
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565
Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
06.06.2017, 08:56
Рейтинг:
()
Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
Последний раз редактировалось systland; 26.12.2017 в 11:52..
|
Просмотров: 434854
|
15.05.2018, 16:03
|
#131
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от wizardpnz
в свойствах кромки получается нет?
|
Увы, нет.
|
|
|
16.05.2018, 11:08
|
#132
|
Пользователь
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
|
Приветствую всех ! Наше начальство раскошелелось на базис 10. Раньше пользовался скриптом установки регулируемой пятки М6. Но в 10 базисе криво его ставит. Гляньте кто соображает, что там мешает ставить.
|
|
|
16.05.2018, 12:01
|
#133
|
Новичок
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
|
Всем привет.
Даже не знаю с чего начать. В общем есть функция:
Скрытый текст
function CreateGofBox() {
switch(Window1.Selector1.ItemIndex){
case 0:
//ни чего не добавлять
break;
case 1:
GofBox = AddAssembly("Гофроящик 400х110х45 мм");
//GofBox.ArtPos = 531001;
GofBox.Owner = Pack;
break;
case 2:
GofBox = AddAssembly("Гофроящик 400х110х55 мм");
//GofBox.ArtPos = 531002;
GofBox.Owner = Pack;
break;
case 3:
GofBox = AddAssembly("Гофроящик 430х90х23 мм");
//GofBox.ArtPos = 531003;
GofBox.Owner = Pack;
break;
.
.
.
default:
break;
}
}
[свернуть]
Она добавляет пустую сборку, обзывает его гофроящиком который был выбран в форме через Combo.
Дальше когда запускаем смету она сама по имени из базы данных подцепляет и артикул и цену. И всё было не плохо, пока на двух других компьютерах смета вместо гофроящика стала выдавать рандомные направляющие и что угодно кроме нужного. То есть сборка добавляется, имя добавляется, смета чудит. На моём компе всё гладенько. По этому даже не знаю с чего начинать это всё раскурочивать. Думаю может пройдёт если явно указать артикул сборки.
И так, основной вопрос, как присвоить сборке артикул, но не тот что через ArtPos
|
|
|
16.05.2018, 13:47
|
#134
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Kartuz
Приветствую всех ! Наше начальство раскошелелось на базис 10. Раньше пользовался скриптом установки регулируемой пятки М6. Но в 10 базисе криво его ставит. Гляньте кто соображает, что там мешает ставить.
|
Что в Вашем понятии "криво ставит"? Я нашел ранее обсуждаемую ошибку с неправильным углом поворота (градусы-радианы). Если это Вам не поможет, опишите детальнее, что происходит не так, как раньше.
|
|
|
Пользователь сказал cпасибо:
|
|
16.05.2018, 14:00
|
#135
|
Местный
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 734
Сказал(а) спасибо: 1,529
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 403
|
Цитата:
Сообщение от Sergenald
И всё было не плохо, пока на двух других компьютерах смета вместо гофроящика стала выдавать рандомные направляющие и что угодно кроме нужного.
|
В настройках Сметы на Вашем компьютере и на "двух других" способ сравнивания материалов из модели с базой совпадает?
|
|
|
Пользователь сказал cпасибо:
|
|
16.05.2018, 14:03
|
#136
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Sergenald
И так, основной вопрос, как присвоить сборке артикул, но не тот что через ArtPos
|
Отдельного поля под артикул, похоже, нет, но он содержится в имени объекта. Вот пример, как считать и записать артикул:
Код:
var obj = Model.Selected;
var splitName = obj.Name.split('\r');
var art = splitName[1];
var newArt = '123';
Undo.Changing(obj);
obj.Name = splitName[0] + '\r' + newArt;
Кстати, работает такой артикул для всех объектов. Случайно применил скрипт на панели и в структуре у меня отобразилось "Вертикальная1 (Артикул 123)".
|
|
|
4 пользователя(ей) сказали cпасибо:
|
|
16.05.2018, 15:05
|
#137
|
Пользователь
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от Letos
Что в Вашем понятии "криво ставит"? Я нашел ранее обсуждаемую ошибку с неправильным углом поворота (градусы-радианы). Если это Вам не поможет, опишите детальнее, что происходит не так, как раньше.
|
Да, всё верно. Таже самая ошибка была. Теперь всё работает прекрасно !
|
|
|
16.05.2018, 16:12
|
#138
|
Новичок
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от Ovsyanicov
В настройках Сметы на Вашем компьютере
|
как оказалось про существование этой вкладки ни кто не знал спасибо
Цитата:
Сообщение от Letos
Вот пример, как считать и записать артикул
|
надо будет сделать так, чтоб наверняка )) спасибо
|
|
|
17.05.2018, 10:34
|
#139
|
Пользователь
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
|
Продолжаю вычислять неработающие скрипты после перехода на 10 версию.
Вот скрипт, которым я чищу модель от мусора ( удаляет по названию ). Не хочет выделять
Скрытый текст
PHP код:
function MaskToRegExp(Str) {
function replaceAll(Str, What, To) {
return Str.split(What).join(To);
};
var Res = Str;
var Arr = ['\\', '#', '|', '(', ')', '[', ']', '{', '}', '^', '$', '+', '.'];
for (var i = 0; i < Arr.length; i++) {
Res = replaceAll(Res, Arr[i], '\\' + Arr[i]);
};
Res = replaceAll(Res, '*', '.*');
Res = replaceAll(Res, '?', '.');
return eval('/^' + Res + '$/i');
};
var Masks = new Array('УДАЛИТЬ','Отрезок','Размер');
var RegExps = new Array();
for (var i = 0; i < Masks.length; i++) {
var Mask = Masks[i].replace(/\s+$/, '').replace(/^\s+/, '');
if (Mask.length) {
RegExps.push(MaskToRegExp(Mask));
};
};
Model.UnSelectAll();
Model.forEach(function(Object) {
for (var i = 0; i < RegExps.length; i++) {
if (RegExp(RegExps[i]).test(Object.Name)) Object.Selected = true;
};
});
[свернуть]
|
|
|
17.05.2018, 12:23
|
#140
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Kartuz
Продолжаю вычислять неработающие скрипты после перехода на 10 версию.
Вот скрипт, которым я чищу модель от мусора ( удаляет по названию ). Не хочет выделять
Скрытый текст
PHP код:
function MaskToRegExp(Str) {
function replaceAll(Str, What, To) {
return Str.split(What).join(To);
};
var Res = Str;
var Arr = ['\\', '#', '|', '(', ')', '[', ']', '{', '}', '^', '$', '+', '.'];
for (var i = 0; i < Arr.length; i++) {
Res = replaceAll(Res, Arr[i], '\\' + Arr[i]);
};
Res = replaceAll(Res, '*', '.*');
Res = replaceAll(Res, '?', '.');
return eval('/^' + Res + '$/i');
};
var Masks = new Array('УДАЛИТЬ','Отрезок','Размер');
var RegExps = new Array();
for (var i = 0; i < Masks.length; i++) {
var Mask = Masks[i].replace(/\s+$/, '').replace(/^\s+/, '');
if (Mask.length) {
RegExps.push(MaskToRegExp(Mask));
};
};
Model.UnSelectAll();
Model.forEach(function(Object) {
for (var i = 0; i < RegExps.length; i++) {
if (RegExp(RegExps[i]).test(Object.Name)) Object.Selected = true;
};
});
[свернуть]
|
На всякий случай замените вызов Model.forEach на следующий код:
Код:
function forEachInList(list, func) {
if (!func)
return;
for (var i = 0; i < list.Count; i++) {
var obj = list.Objects[i];
func(obj);
if (obj.List) {
forEachInList(obj.AsList(), func);
}
}
}
forEachInList(Model, function (Object) {
for (var i = 0; i < RegExps.length; i++) {
if (RegExp(RegExps[i]).test(Object.Name))
Object.Selected = true;
};
});
В 10 криво работает Model.forEach и вместо некоторых объектов он передает undefined.
И еще меня смутили конечные регулярные выражения, которыми проверяются объекты. У меня выдало такой массив: [/^УДАЛИТЬ$/, /^Отрезок$/, /^Размер$/]. Судя по синтаксису RegExp, такое выражение эквивалентно проверке имени на равенство (то есть, объект с именем "Отрезок2" уже не пройдет проверку таким регулярным выражением). Поэтому интересно, как именно Вы хотите проверять имя объекта, или Вам достаточно того, как проверка происходит на данный момент (тогда логичнее было бы проверять имя на равенство без всяких регулярных выражений)?
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 06:06. Часовой пояс GMT +3.
|