|
|
|
|
|
21.03.2018, 14:48
|
|
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
21.03.2018, 14:48
Рейтинг:
()
Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Обратите внимание на полезные ответы в этой теме!
|
Просмотров: 243601
|
2 пользователя(ей) сказали cпасибо:
|
|
21.10.2019, 16:17
|
#171
|
Новичок
Регистрация: 21.10.2019
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от Letos
Могу быть неправ, но, насколько мне известно, самого функционала скриптов в Раскрое нет.
|
Вот мне тоже не ясно, даже если что-то напишешь, как вообще из Раскроя их запусть?
Сотрудник попросил решить задачу быстрого автоматизированного сброса в Эксель содержимого кроя по всем материалам. По одному-то материалу экспорт встроен в Раскрой.
|
|
|
21.10.2019, 18:47
|
#172
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Metabol
Сотрудник попросил решить задачу быстрого автоматизированного сброса в Эксель содержимого кроя по всем материалам.
|
Если есть Мебельщик и необходимая информация находится в модели/моделях мебельщика - сделайте скриптами в БМ с выгрузкой в Эксель, это возможно.
|
|
|
22.10.2019, 09:23
|
#173
|
Новичок
Регистрация: 21.10.2019
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Скрипт вывода списка размеров деталей из Раскроя
Заковыка в том, что крой черновой, т.е. с припусками на деталь или на группу деталей. Фактически размеры забиваются вручную, исходя из визуального анализа раскладки фанерованных деталей
|
|
|
01.11.2019, 03:52
|
#174
|
Новичок
Регистрация: 29.04.2019
Сообщений: 26
Сказал(а) спасибо: 11
Поблагодарили 16 раз(а) в 2 сообщениях
Вес репутации: 0
|
Translate и TranslateGCS, Rotate и RotateGCS
Не могу понять как работают эти методы для объектов:
Translate — Сместить объект.
Rotate — Повернуть вокруг заданной оси.
TranslateGCS — Сместить объект в глобальной СК.
RotateGCS — Повернуть объект в глобальной СК.
В описании для метод ...GCS указано, что они смещают объекты относительно Глобальной Системы координат. Но по факту создав панель и сместив ее от начало координат (ГСК) она вращается относительно себя при применении методов Rotate и RotateGCS, а смещается всегда относительно ГСК. Коллеги, объясните как ими правильно пользоваться?
У меня стоит задача повернутую относительно всех осей панель сместить на ее толщину. Это из глобальной задачи. Вот изучаю методы и столкнулся с непонятным для меня результатом.
|
|
|
01.11.2019, 09:57
|
#175
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Vogel
Не могу понять как работают эти методы для объектов:
Translate — Сместить объект.
Rotate — Повернуть вокруг заданной оси.
TranslateGCS — Сместить объект в глобальной СК.
RotateGCS — Повернуть объект в глобальной СК.
В описании для метод ...GCS указано, что они смещают объекты относительно Глобальной Системы координат. Но по факту создав панель и сместив ее от начало координат (ГСК) она вращается относительно себя при применении методов Rotate и RotateGCS, а смещается всегда относительно ГСК. Коллеги, объясните как ими правильно пользоваться?
У меня стоит задача повернутую относительно всех осей панель сместить на ее толщину. Это из глобальной задачи. Вот изучаю методы и столкнулся с непонятным для меня результатом.
|
Translate - смещает относительно ЛСК родительского объекта. Если у вас панель в корне модели, то родительский объект панели - модель и разницы в этому случае между Translate и TranslateGCS нет. Для смещения относительно ЛСК объекта есть метод TranslateLCS.
Посмотрел, как работает RotateGCS. Он действительно поворачивает панель относительно её нулевой точки, но поворачивает относительно оси в ГСК, в отличие от Rotate, который поворачивает относительно оси в ЛСК.
|
|
|
01.11.2019, 11:27
|
#176
|
Новичок
Регистрация: 29.04.2019
Сообщений: 26
Сказал(а) спасибо: 11
Поблагодарили 16 раз(а) в 2 сообщениях
Вес репутации: 0
|
Цитата:
Сообщение от Letos
Посмотрел, как работает RotateGCS. Он действительно поворачивает панель относительно её нулевой точки, но поворачивает относительно оси в ГСК, в отличие от Rotate, который поворачивает относительно оси в ЛСК.
|
Т.е. Если у нас создана "Фронтальная панель" не помещена в блок, то мы эффекта не увидим, если будем вращать вокруг оси Z, которая совпадает в этом случае с ЛСК панели и ГСК. А если мы повернем панель и вокруг оси Y "ручками", поместим в блок и применим те же методы, то увидим разницу. попробовал работает.
Подскажите, метод TranslateLCS применим к панели или к панели, помещенной в блок? // Проверил - работает для ЛСК объекта. Т.е. для панели.
|
|
|
05.11.2019, 02:56
|
#177
|
Новичок
Регистрация: 29.04.2019
Сообщений: 26
Сказал(а) спасибо: 11
Поблагодарили 16 раз(а) в 2 сообщениях
Вес репутации: 0
|
[object TFurnBlock],[object TFurnAsm],[object TDraftBlock]
Коллеги, добраться до типа объекта Родителя, в который помещен объект под курсором. Определить что это. Но не просто в строке состояния увидеть надпись: [object TFurnBlock] или [object TFurnAsm] или[object TDraftBlock] или ... , а именно свойство. С помощью этого свойства хочу выбрать действие для каждого из типов. Можно ли как-то опрашивать объект, на принадлежность его к какому-то типу?
Скрытый текст
function BT(Obj){
T_List = new Array('[object TFurnBlock]','[object TFurnAsm]','[object TDraftBlock]');
T_NameList = new Array('Блок', 'Сборка', 'Полуфабрикат');
for(i=0;i<TList.length;++i){
if(Obj.Owner==TList[i]){
A = T_NameList[i];
}
}
return A;
}
Action.OnMove = function(){
DeleteNewObjects();
A = Action.Get3DObject();
TB = BT(A);
Action.Hint = TB;
}
Action.OnClick= function(){
//
DeleteNewObjects();
Action.Finish();
}
Action.Continue();
[свернуть]
|
|
|
05.11.2019, 17:17
|
#178
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Vogel
Можно ли как-то опрашивать объект, на принадлежность его к какому-то типу?
|
instanceof
Скрытый текст
PHP код:
var obj;
if (obj instanceof T2DTrajectoryBody) {
}
else if (obj instanceof TExtrusionBody) {
}
else if{obj instanceof TFurnPanel){
}
else{
}
[свернуть]
|
|
|
Пользователь сказал cпасибо:
|
|
06.11.2019, 11:31
|
#179
|
VIP
Регистрация: 04.07.2012
Сообщений: 1,956
Сказал(а) спасибо: 3,991
Поблагодарили 3,545 раз(а) в 1,167 сообщениях
Вес репутации: 1048
|
Есть такая проблема: отрисованные склейкой по пласти панели (например, 16+16) нуждаются в обработке на чпу еще до склейки, то есть каждая 16-тая по-отдельности. Конструкторы отрисовывают данные "обработки" в виде доп. панелей, то есть в итоге в приведенном выше примере рисуются три панели:
1. 16мм (1ый слой склееной панели)
2. 16мм (2ой слой склееной панели)
3. 32м (собственно итоговая панель)
на каждую из этих трех панелей наносятся те обработки (отверстия, пазы и проч.) , которые должны быть произведены с панелью. С ЧПУ вопрос таким образом решается, но есть задача передачи данных в управляющую программу, которая должна сформировать соответствующие этапы поизводства. И здесь возникает проблема: поскольку панели никак не связаны, то идентифицировать их принадлежность друг к другу не представляется возможным (без доп. телодвижений). Идентификация по номеру позиции (или по обозначению) тоже не слишком удобный вариант .. то есть записывая позицию ассоциируемой панели в пользовательское свойство, получаем мину замедленного действия, приводимую в действие при перерастановке позиций.
Собственно обращаюсь за поддержкой коллективного разума .. Решение представляется в след.виде: нужно написать скрипт, который бы генерировал некий уникальный идентификатор и по указанию пользователя записывал его в пользовательские свойства выбранных пользователем панелей. Можно ли сформировать такой уникальный идентификатор средствами скрипта?
для идентификатора вполне подойдет строка полученая из даты:
var now = new Date();
id = String(now);
как организовать в коде такой механизм работы:
1. запускаем скрипт
2. выделяем панели
3. присваиваем идентификатор
4. снимаем выделение
пп 2,3,4 - в цикле
выход из цикла по кнопке "Завершить"
__________________
Автоматизация автоматизаций на АСУ, ТП и тд и тп..
Комплексное решение
|
|
|
06.11.2019, 15:04
|
#180
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от bbb i ko
как организовать в коде такой механизм работы:
1. запускаем скрипт
2. выделяем панели
3. присваиваем идентификатор
4. снимаем выделение
пп 2,3,4 - в цикле
выход из цикла по кнопке "Завершить"
|
Надеюсь, правильно понял задачу. В данном скрипте пункты 3 и 4 выполняются одновременно по нажатию кнопки. Идентификатор беру числовой и увеличиваю его в зависимости от идентификаторов других объектов в модели.
Код
PHP код:
const PropName = 'UID_PROP';
Model.UnSelectAll();
// получить новый ID перебором всех объектов
function GetNewID(){
var result = 1;
Model.forEach(function (obj){
if (obj){
for (var i = 0; i < obj.UserPropCount; i++){
if (obj.UserPropertyName[i] == PropName){
var value = obj.UserProperty[i];
if (Number(value) >= result){
result = Number(value) + 1;
}
}
}
}
})
return result;
}
Action.Continue();
// список текущих панелей
var pList = [];
Action.Properties.NewButton('Назанчить ID').OnClick = ()=>{
var id = GetNewID();
for (var i = 0; i < pList.length; i++){
var obj = pList[i];
obj.Selected = false;
obj.UserProperty[PropName] = id;
}
// очищаем список
pList.length = 0;
}
var running = true;
Action.OnFinish = function (){
running = false;
}
while (running){
var p = GetPanel('Выделите панель');
p.Selected = true;
pList.push(p);
}
[свернуть]
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 06:11. Часовой пояс GMT +3.
|