Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Базис-мебельщик. Скрипты (https://промебельклуб.рф/forum/forumdisplay.php?f=273)
-   -   БАЗИС 10 - Скрипты (https://промебельклуб.рф/forum/showthread.php?t=12463)

systland 06.06.2017 08:56

БАЗИС 10 - Скрипты
 
Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.

AndrianoS 26.06.2017 10:48

Здравствуйте!
Как можно перебрать все объекты?
В базис 9 данный код работал.Сейчас,я так понимаю, видит только внешние объекты,вложенные нет.Если есть слои в проекте,то останавливается на слоях.
Возможно нужно рекурсивно обходить,только как,пока не понимаю.

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


//Перебираем все объекты
Model.forEach (function(obj) {
alert(obj.Name);
if (obj.Name[0]=="#") {
StartEditing(obj);
obj.Selected = true;
if (obj.Name[1]=="M" || obj.Name[3]=="M") {
create_article_milan(obj);
obj.Name = name_block;
// Задаем артикул для серии Quadro
} else if (obj.Name[1]=="Q" || obj.Name[3]=="Q") {
create_article_Quadro(obj);
obj.Name = name_block;
// Задаем артикул для ателье
} else if (obj.Name[1]=="A") {
create_article_Atelie(obj);
obj.Name = name_block;
}

}

});
[свернуть]

AndrianoS 26.06.2017 11:44

Получилось решить самостоятельно.Вот решение,как перебрать объекты
Решение через рекурсию:

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


Код:

Recurse(Model);

 function Recurse(List) {
 for (var i = 0; i < List.Count; i++) {
        Obj = List[i];
        if (Obj.List){
            call_nameObj(Obj);
            Recurse(Obj);
        }
        else {
            call_nameObj(Obj);
        }
    }
}

[свернуть]

IStiv 26.06.2017 19:14

Всем привет.
Возникла необходимость переноса скриптов на Базис 10.

1.node.js надо ставить или оно в комплекте? или оно надо только если использовать TypeScript ,debug и модули от node?

2. почему в комплекте поставке Базис 10 не работающие скрипты ?(здесь ведь есть представители Базиса?). в частности require же в node по другому работает.

3.Документация по скриптам актуализирована?(насколько я понял нет). Будет ли это сделано в ближайщее время?
Господа из Базиса Вы делаете хороший продукт. Но без документации это пипец просто ( да я слышал что "скрипты поставляются как есть"), но зачем тратить время людей - напишите документацию по человечески. Нашел аккаунт на GitHub - там тоже какие то обрывки информации. Хорошо хоть инструкцию как настроить debug выложили. Правда на этот GitHub ссылок как бы нигде особо нет. В Базис 9 свойства объектов по перебору вычислял , сейчас еще веселее видимо будет. Извините если что вообщем. Хочется просто работать, а не искать и догадываться как тут у Вас все устроено, и не "выковыривать" свойства объектов перебором.

Letos 28.06.2017 11:42

Цитата:

Сообщение от IStiv (Сообщение 425804)
1.node.js надо ставить или оно в комплекте? или оно надо только если использовать TypeScript ,debug и модули от node?

Весь движок скриптов в библиотеке node.dll. Так что Node.js устанавливать не надо.

Цитата:

Сообщение от IStiv (Сообщение 425804)
2. почему в комплекте поставке Базис 10 не работающие скрипты ? в частности require же в node по другому работает.

Со слов разработчика, system.require был попыткой сымитировать стандартный require, попытка не удалась, но (непонятно почему) было написано несколько примеров с ним. Вместо него лучше использовать system.include, с обновлением system.require будет работать, но не будет в подсказке.
В самом Node.js require работает иначе и работает с т.н. "модулями", для которых нужен свой стиль написания (возможно, скоро на гитхабе это будет описано)

Цитата:

Сообщение от IStiv (Сообщение 425804)
3.Документация по скриптам актуализирована?

Нет, но надеюсь, в ближайшее время обновится.

IStiv 29.06.2017 19:02

Цитата:

Сообщение от Letos (Сообщение 425917)
Весь движок скриптов в библиотеке node.dll. Так что Node.js устанавливать не надо.

Спасибо за ответы.По возможности прошу еще ответить на вопросы.

1.этот "весь движок" . к нему можно подключать модули от node ? npm и все такое? если "да" то как?

2. на гитхаб есть свежий пример использования модуля "fs" как он подключен? или часть модулей защиты в .dll? (хотелось бы толковый обзор что да как там у Вас реализовано..)

3. Так как же теперь использовать require? очень хотелось бы инструкцию. (в коде много строк только require и спасал..)

4. Как теперь организовывать работу с COM объектами? (пример (который старый в новом Базисе) конечно же работает криво). в node надо отдельный модуль подключать для COM . Или минимальный пример бы как записать даннные в ячейку Exel через COM (данные из Базиса).

Вопросов вообщем много,а примеров и документации нет. Спасибо если внесете какую то ясность.

Letos 30.06.2017 12:05

Прежде всего: Давайте, чтобы не засорять тему, все вопросы по поводу "что нового и как этим пользоваться" задавать мне в личные сообщения или на почту, а я буду править вики на гитхабе.

Цитата:

Сообщение от IStiv (Сообщение 426026)
1.этот "весь движок" . к нему можно подключать модули от node ? npm и все такое? если "да" то как?

Этот "весь движок" основан целиком и полностью на Node.js (правда, относительно старой версии). Так что дополнительные модули подключать можно, надеюсь сегодня или в выходные напишу инфу на гитхабе (ибо объяснять тут, думаю, долго). Но чтобы устанавливать модули из npm, необходимо установить Node.js

Цитата:

Сообщение от IStiv (Сообщение 426026)
2. на гитхаб есть свежий пример использования модуля "fs" как он подключен? или часть модулей защиты в .dll? (хотелось бы толковый обзор что да как там у Вас реализовано..)

Все стандартные модули Node.js (fs, path, net и т.д.) зашиты внутри библиотеки. Внешние (из npm) придется устанавливать вручную.

Цитата:

Сообщение от IStiv (Сообщение 426026)
3. Так как же теперь использовать require? очень хотелось бы инструкцию. (в коде много строк только require и спасал..)

Стандартный require в ноде подключает модули (у модуля немного другая структура кода). Как я понял, речь идет о функции system.require - она работает так же, как system.include и просто выполняет подключаемый файл, добавляя из него все переменные и функции.

Цитата:

Сообщение от IStiv (Сообщение 426026)
4. Как теперь организовывать работу с COM объектами? (пример (который старый в новом Базисе) конечно же работает криво). в node надо отдельный модуль подключать для COM . Или минимальный пример бы как записать даннные в ячейку Exel через COM (данные из Базиса).

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

AndrianoS 30.06.2017 13:25

Не знаю как у других,у меня одно большое КАК?Вышли новые инструменты,новые возможности.Что это такое,как настраивать,как устанавливать,как с этим работать и что это дает.Если есть возможность записать видео,то это было бы очень круто.

Klim Bassenger 21.07.2017 14:38

Вложений: 2
function ArrangePositions() {
if (Action.Control.Owner.Owner.dpModelTree.Visible == False) {
Action.Control.Owner.Owner.a3ModelTreeExecute();
}
if(confirm('Будет выполнена расстановка позиций. Продолжить?')) {
if (Action.Control.Owner.Owner.dpModelTree.Visible == True) {
Action.Hint = 'Расстановка позиций...';
Action.Control.Owner.Owner.dpModelTree.Controls[1].BtnArrangeClick();
return True;
}
else {
alert('Закрыт инструмент <Структура модели>!');
}
} else {
alert('Отменено пользователем!');
}
return False;
}

У меня тоже перестал работать скрипт, который постоянно использую.
Пишет ошибку:
TypeError: Cannot read property 'Visible' of undefined
(см. картинку).
Может есть тут гуру скриптов, которые смогут помочь "подкрутить скрипт".

Klim Bassenger 21.07.2017 15:01

На самом деле немного странное решение с новым движком для скриптов. У многих, я знаю, почти вся работа завязана на скриптах.
Им теперь получается всё переписывать заново? Вроде бы никто не писал, что что-то не устраивает. Зачем были эти нововведения, когда ТП отвечает, мол мы возможность скриптов сделали - а дальше сами думайте как с этим работать.
Может есть какой-то шаблон по переводу скриптов на новый движок? Может переменный как-то по другому объявлять или синтаксис поменять....

Ovsyanicov 21.07.2017 17:09

Цитата:

Сообщение от Klim Bassenger (Сообщение 427952)
Action.Control.Owner.Owner.dpModelTree.Visible == False

Этот участок кода проверяет открыта ли панель "Структура модели". Сообщение с ошибкой говорит о том, что скрипт не может проверить свойство Visible, так как не находит нужный объект. Видимо, в 10-ке путь к этому объекту или его имя изменилось. К сожалению, больше ничем не могу помочь так как на 10-ку перейду только через несколько дней.

Цитата:

Сообщение от Klim Bassenger (Сообщение 427953)
На самом деле немного странное решение с новым движком для скриптов. У многих, я знаю, почти вся работа завязана на скриптах.
Им теперь получается всё переписывать заново? Вроде бы никто не писал, что что-то не устраивает. Зачем были эти нововведения, когда ТП отвечает, мол мы возможность скриптов сделали - а дальше сами думайте как с этим работать.
Может есть какой-то шаблон по переводу скриптов на новый движок? Может переменный как-то по другому объявлять или синтаксис поменять....

Непонятно почему БЦ не выпускает своевременно документацию по Базис-Скрипту. То, что по скриптам не оказывается техподдержка, это с одной стороны логично, но не сообщать вообще никаких деталей о нововведениях в движке и ограничиваться скудным и малоинформативным руководством пользователя трехгодичной давности, по-моему, неправильно по отношению к пользователям.

Klim Bassenger 21.07.2017 18:25

Цитата:

Сообщение от Ovsyanicov (Сообщение 427960)
Этот участок кода проверяет открыта ли панель "Структура модели". Сообщение с ошибкой говорит о том, что скрипт не может проверить свойство Visible, так как не находит нужный объект. Видимо, в 10-ке путь к этому объекту или его имя изменилось. К сожалению, больше ничем не могу помочь так как на 10-ку перейду только через несколько дней.

Может можно вообще эту проверку убрать?

Ovsyanicov 21.07.2017 18:52

Цитата:

Сообщение от Klim Bassenger (Сообщение 427966)
Может можно вообще эту проверку убрать?

Если убрать проверку, то запускать скрипт можно будет только при открытой панели Структура модели, иначе он выведет сообщение "Закрыт инструмент <Структура модели>!"
Сейчас он открывает панель, если она закрыта, и продолжает работу.

ups 11.08.2017 09:25

Доброго.
Подскажите, возможно ли с помощью скрипта реализовать такую задачу?
Необходимо нужные панели с модели перенести в чертёж и образмерить. Панели могут находится в разных плоскостях. Но выносится они должны на один лист, а не по отдельности.
В итоге нужно получить развёртку всех фасадов кухни в одной плоскости на одном листе.
Знающие, подскажите, возможно ли такое реализовать?

IStiv 12.08.2017 22:02

Цитата:

Сообщение от ups (Сообщение 429753)
В итоге нужно получить развёртку всех фасадов кухни в одной плоскости на одном листе.
Знающие, подскажите, возможно ли такое реализовать?

Базис API только для модели, Базис ые чертежи Вы не создадите скриптом.
Но есть обходные пути типа :
1.Node.js позволяет работать с COM объектами(хотя и довольно проблематично).
Вытаскиваем из Базиса данные (это легко) - подключаемся по COM к API , имеющегося какого нибудь приличного САПР - с помощью API этого САПР, формируем необходимые Вам чертежи , в каком нибудь .dxf, или чего там Ваша САПР поддерживает.

2. Вытаскиваем из Базиса данные (это легко) и транслируем в какой нибудь промежуточный формат (.xlsx .xml или еще чего) , для node.js готовых трансляторов вагон. я в Exel легко доступные данные выгружаю.
Теперь, опять же берем имеющуюся САПР, и с помощью ее API парсим получившийся файл и отрисовываем чертеж.

я бы выбрал второй путь, т.к. COM из Node.js - у меня пока нет столько skills, да и вообще это один большой "костыль" как мне думается.
из минусов второго пути - это два отдельных скрипта, запускать надо будет по отдельности. ну и надо какой нибудь САПР + прямые руки ).

P.S.САПР -система автоматизированного проектирования (AutoCAD,nanoCAD,SolidWorks,Компас) и т.д.

avmir 14.08.2017 02:00

Цитата:

Сообщение от Ovsyanicov (Сообщение 427960)
Непонятно почему БЦ не выпускает своевременно документацию по Базис-Скрипту.

В БЦ лежит руководство по Базис-Мебельщику двухгодичной давности. Я думаю, что оно хотя бы должно было обновится... А Вы хотите по скрипту...

AlexBolton 14.08.2017 08:02

Цитата:

Сообщение от avmir (Сообщение 429946)
В БЦ лежит руководство по Базис-Мебельщику двухгодичной давности.

Ну это не правда Руководства свежие, а вот по скриптам... вложить руководство 2016 года в дистрибутив второго релиза 10-ки :)
http://s014.radikal.ru/i326/1708/80/f5c15199adf7t.jpg http://s018.radikal.ru/i521/1708/e0/b8fc97d93af5t.jpg

avmir 18.08.2017 02:19

Цитата:

Сообщение от AlexBolton (Сообщение 429965)
Ну это не правда Руководства свежие

как говорится, "спешиал фо ю" видеозапись.

AlexBolton 18.08.2017 11:26

Цитата:

Сообщение от avmir (Сообщение 430410)
как говорится, "спешиал фо ю" видеозапись

никакого отношения к теме, но как говорится к чему слова, когда вот оно
Все актуальные руководства укомплектованы в актуальных релизах.
А перед тратой времени на съемку внимательно прочитали бы, что написано на сайте в разделе [Файловый архив]
Цитата:

PDF версии руководств пользователя для ознакомления с модулями системы БАЗИС
;)

IStiv 28.08.2017 18:09

Всем добрый день.
Возник следующий вопрос

Создаю блок
Код:

var newBlock = AddBlock(blockName);
newBlock.Load(onePath);
 newBlock.Build();

Потом делаю над блоком различные операциии (а именно удаляю с него панели ).
При этом я НЕ делаю
Код:

Action.Commit();
Собственно вопрос можно ли без Action.Commit(); как то сохранить блок в файл?

Дело в том что я нашел только
Код:

Action.SaveModel();
но тогда нужно коммитить изменения в модель (насколько я понял) , а это не нужно, т.к. необходимо сохранить только ранее загруженный и измененный блок.

Если я использую Action.Commit(); , у меня еще и ссылки на ранее загруженные блоки почему то слетают. Плюс насколько я понял нужно сперва удалить все с модели (кроме необходимого блока) - потом сохранить модель - потом откатить изменения - как то это проблематично.
Action.SaveModel(); это единственный путь в данном случае?

seserg 29.08.2017 15:05

Подскажите добрые люди, как теперь в скриптах использовать схемы крепежа?

Letos 05.09.2017 16:19

Цитата:

Сообщение от seserg (Сообщение 431572)
Подскажите добрые люди, как теперь в скриптах использовать схемы крепежа?

Схемы крепежа используются также, как и в девятке.
Два варианта взаимодействия со схемами: создание с нуля и загрузка из старого формата (файла fasteners.config).
Нашел еще один хак: Можно через поле выбора фурнитуры выбрать схему и у поля вызвать метод Mount. Вот упрощенный пример:
Код:

  var furnSel = NewFurnitureInput("схема");
  furnSel.OnChange = ()=>{
    furnSel.Mount(panel1, panel2, x, y, z);
  }

Если создавать схему с нуля, то там нужно прописывать кучу параметров схемы. Если вы пишите скрипты через VSCode, можно добавить в файл определений d.ts следующие строки, которые упростят поиск нужного параметра:

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

Код:

/**
 * Позиция фурнитуры при установке крепежа
 */
declare enum FurniturePosition {
    /**
    * Установка фурнитуры внутри стыка
    */
    Inside,
    /**
    * Установка фурнитуры снаружи стыка
    */
    Outside,
    /**
    * Установка фурнитуры вверху стыка (только для стыков с горизонтальной панелью)
    */
    Up,
    /**
    * Установка фурнитуры внизу стыка (только для стыков с горизонтальной панелью)
    */
    Down

}

/**
 * Тип схемы установки крепежа
 */
declare enum SchemeType {
    /**
    * Тип схемы с фиксированным отступом
    */
    WithBase,
    /**
    * Симметричный тип схемы
    */
    Symmetric,
    /**
    * Тип схемы с переменным шагом
    */
    VariableStep

}

declare class FurnitureScheme{
    /**
    * Установка крепежа в стык 2-х панелей
    * @param panel1
    * @param panel2
    */
    Mount(panel1: Panel, panel2: Panel);
    /**
    * Задать количество крепежа для схемы
    * @param count
    */
    SetFurnitureCount(count: number);
    /**
    * Название схемы
    */
    Name: String;
    /**
    * Основная фурнитура
    */
    Furniture: InfFurniture;
    /**
    * Дополнительная фурнитура
    */
    AdditionalFurn: InfFurniture;
    /**
    * Тип схемы
    */
    SchemeType: SchemeType;
    /**
    * Минимальный отступ (для симметричной схемы)
    */
    MinSymmetricIndent: Number;
    /**
    * Отступ в процентах (для симметричной схемы)
    */
    Percent: Boolean;
    /**
    * Фиксировать отступ (для симметричной схемы)
    */
    FixSymmetricIndent: Boolean;
    /**
    * Фиксированный отступ (для схемы с фиксированным отступом)
    */
    FixBaseIndent: Number;
    /**
    * Минимальный отступ от противоположного края (для схемы с фиксированным отступом)
    */
    MinBaseIndent: Number;
    /**
    * Кратность шага основной фурнитуры
    */
    FurnitureStep: Number;
    /**
    * Кратность шага Дополнительной фурнитуры
    */
    AdditionalFurnStep: Number;
    /**
    * Положение фурнитуры в стыке
    */
    FurniturePosition: FurniturePosition;

}

declare class FurnitureSchemes{
    /**
    * Сохранить список схем в файл
    * @param filename
    */
    SaveTo(filename: string);
    /**
    * Добавить список схем из файла
    * @param filename
    */
    AddFromFile(filename: string);
    /**
    * Найти схему по имени
    * @param SchemeName
    */
    GetScheme(SchemeName: string): FurnitureScheme;
    /**
    * Получить номер схемы в списке
    * @param Scheme
    */
    IndexOf(Scheme: FurnitureScheme): Number;
    /**
    * Наличие схемы в списке
    * @param Scheme
    */
    Exists(Scheme: FurnitureScheme): Boolean;
    /**
    * Добавить схему в список
    * @param  FurnScheme
    */
    AddScheme(FurnScheme: FurnitureScheme);
    /**
    * Удалить схему по имени
    * @param SchemeName
    */
    DeleteScheme(SchemeName: string);
    /**
    * Удалить схему по номеру
    * @param  index
    */
    DeleteIndex(index: number);
    /**
    * Принять изменения в схеме
    * @param Scheme
    */
    AcceptScheme(Scheme: FurnitureScheme);
    /**
    * Создать новую схему
    * @param SchemeName
    */
    NewScheme(SchemeName: string): FurnitureScheme;
    /**
    * Список схем
    */
    Schemes: Array<FurnitureScheme>;
    /**
    * Количество схем в списке
    */
    Count: Number;

}

/**
 * Открыть схему установки крепежа
 * @param filename
 * @param  schemeGroup
 * @param  schemeName
 */
declare function OpenFurnitureScheme(filename: string, schemeGroup: string, schemeName: string): FurnitureScheme;

/**
 * Открыть группу схем установки крепежа
 * @param filename
 * @param  schemeGroup
 */
declare function OpenFurnitureSchemes(filename: string, schemeGroup: string): FurnitureSchemes;

/**
 * Создать схему установки крепежа
 * @param schemeName
 */
declare function NewFurnitureScheme(schemeName: string): FurnitureScheme;

[свернуть]

P.S. Так как схемы крепежа со времен девятки изменились, то, скорее всего, часть API для взаимодействия со схемами нужно поменять, поэтому подсказку для схем удалили, но старые функции, методы и свойства пока еще остались.

v22884 07.09.2017 08:33

Contour.Approximate()

Сообщите, пожалуйста, параметры.
Она, наверно, даёт отрезки, или точки.?

Briz 07.09.2017 10:03

PHP код:

// создадим контейнер для точек
var Edge Model.Edges.AddSpline();

// создадим контур
var ContourObject AddContour();
ContourObject.Contour.AddCircle(0010);
// разбиваем его на точки с отклонением не больше 0.1
ContourObject.Contour.Approximate(0.1Edge.VertList);


for (var 
0Edge.VertList.Count; ++k) {
  var 
Pos Edge.VertList[k];
  
system.log(Pos.' ' Pos.' ' Pos.z);
}

// удаляем контейнер для точек
Model.Edges.Delete(Model.Edges.IndexOf(Edge)); 


djobik 21.09.2017 15:49

Доброго вермени суток.
Уже отвечали про схемы крепежа, но не очень помогло.
В примерах скриптов базиса схема открывается через OpenScheme.
Закинул в папку примера свой Fasteners.config - не заработало, прописал до него путь, то же самое. Прописал путь до файла в фурнитуре, так же не заработало.
В мануале вычитал про OpenFurnitureScheme/OpenFurnitureSchemes - результат ровно такой же как и с OpenScheme.
Может кто кодом показать как установить схему крепежа между двух панелей в 10-ом базисе? Буду премного благодарен.

Letos 21.09.2017 16:37

Цитата:

Сообщение от djobik (Сообщение 433492)
Доброго вермени суток.
Уже отвечали про схемы крепежа, но не очень помогло.
В примерах скриптов базиса схема открывается через OpenScheme.
Закинул в папку примера свой Fasteners.config - не заработало, прописал до него путь, то же самое. Прописал путь до файла в фурнитуре, так же не заработало.
В мануале вычитал про OpenFurnitureScheme/OpenFurnitureSchemes - результат ровно такой же как и с OpenScheme.
Может кто кодом показать как установить схему крепежа между двух панелей в 10-ом базисе? Буду премного благодарен.

Нашел ошибку в своем предыдущем ответе. Файл старого формата схем - Schemes.config. Открытие схем производилось только из этого файла. После переноса настроек схем в файл Fasteners.config открытие из файла, по идее, уже не работало. На данный момент объект схемы можно получить либо из поля выбора фурнитуры (FurnitureInput и ScriptFurnitureProperty), либо создавать с нуля.

djobik 22.09.2017 09:41

Цитата:

Сообщение от Letos (Сообщение 433494)
Нашел ошибку в своем предыдущем ответе. Файл старого формата схем - Schemes.config. Открытие схем производилось только из этого файла. После переноса настроек схем в файл Fasteners.config открытие из файла, по идее, уже не работало. На данный момент объект схемы можно получить либо из поля выбора фурнитуры (FurnitureInput и ScriptFurnitureProperty), либо создавать с нуля.

Не совсем то что нужно.
При установки схем через FurnitureInput имеем выходные данные в виде InFurniture, в которой нет способа задать базу расстановки для схемы. В итоге схема ставится без растягивания, как в исходнике.
При ScriptFurnitureProperty в итоге то же самое.
Может быть есть какой-то вариант указать базу?

Letos 22.09.2017 11:26

Цитата:

Сообщение от djobik (Сообщение 433545)
Не совсем то что нужно.
При установки схем через FurnitureInput имеем выходные данные в виде InFurniture, в которой нет способа задать базу расстановки для схемы. В итоге схема ставится без растягивания, как в исходнике.
При ScriptFurnitureProperty в итоге то же самое.
Может быть есть какой-то вариант указать базу?

Я поковырял-поковырял, и вынужден огорчить: такого варианта нет. Обходных путей тоже не нашел.:(

R0mchik 24.09.2017 15:20

Очень нужна схема замены фурнитуры. Что то вроде того как реализована схема замены материалов. Очень часто произвожу замену одной и той же фурнитуры, выбирая каждую по отдельности. В скриптах я на уровне чайника, может кто поможет?

Letos 26.09.2017 13:57

Цитата:

Сообщение от R0mchik (Сообщение 433670)
Очень нужна схема замены фурнитуры. Что то вроде того как реализована схема замены материалов. Очень часто произвожу замену одной и той же фурнитуры, выбирая каждую по отдельности. В скриптах я на уровне чайника, может кто поможет?

В Базисе есть кнопка "Замена фурнитуры", похожая по реализации на "Замену материалов", которая может заменить всю фурнитуру в модели. Возможно, это и ответ на заданный вопрос. Если нет, то уточните, что в Вашем понимании означает "схема замены фурнитуры" - алгоритм замены фурнитуры, отличный от Базисного, или же нечто иное?

R0mchik 28.09.2017 16:36

Цитата:

Сообщение от Letos (Сообщение 433879)
что в Вашем понимании означает "схема замены фурнитуры"

Вам известно как работает схема замены материалов в Базис10? В моем представлении это то же самое, только с фурнитурой.

Letos 28.09.2017 17:55

Вложений: 1
Конкретно по Вашему вопросу
Цитата:

Сообщение от R0mchik (Сообщение 433670)
Очень нужна схема замены фурнитуры. Что то вроде того как реализована схема замены материалов. Очень часто произвожу замену одной и той же фурнитуры, выбирая каждую по отдельности

Я предположил, что Вы имеете в виду уже имеющийся функционал:
Цитата:

Сообщение от Letos (Сообщение 433879)
В Базисе есть кнопка "Замена фурнитуры", похожая по реализации на "Замену материалов", которая может заменить всю фурнитуру в модели. Возможно, это и ответ на заданный вопрос.

Если я Вас правильно понял, то я ответил на ваш вопрос (во вложении скриншот окна замены фурнитуры). Если данный ответ вас не устраивает, то мне было бы интересно узнать о Вашем алгоритме замены фурнитуры

R0mchik 28.09.2017 21:49

Цитата:

Сообщение от Letos (Сообщение 434131)
мне было бы интересно узнать о Вашем алгоритме замены фурнитуры

Предположим, у вас есть модель которую вы запускаете в производство не однократно, по умолчанию в модели стоит некая фурнитура которую нужно менять под определенные требования, будь то заказчика, или производства (петли одного производителя на другого, опоры с одного типа на другой, навесы, газ лифты и т.п) В стандартном случае нужно выбирать каждую по отдельности, и находить в списке соответствующую для замены. Схема замены позволит заменить всю фурнитуру которая есть в модели, по заранее созданному списку соответствий. Точно так же как работает схема замены материалов в БМ10.
Пока такая схема не реализована в Базисе, поэтому я обращаюсь с вопросом. Кто сможет написать такой скрипт, или может у кого нибудь уже есть? В долгу не останусь.

Letos 29.09.2017 09:29

Спасибо за разъяснение, извиняюсь за недопонимание. Первым делом посоветовал бы обратиться в ГТП с предложением по добавлению такого функционала (хотя, думаю, этот шаг уже пройден). Если ответа нет, или Вам не хочется ждать, то я могу взяться за написание такого скрипта. Предлагаю обсудить подробности в ЛС или по почте.

Shink1rou 02.10.2017 12:10

Добрый день. Позаимствовал и переделал немного скрипт товарища тех.нолог, который меняет артикул в салоне, в зависимости от реальных габаритов. В мпл 9 он работает и переименовывает артикул, в мпл 10 выполняется, но артикул не изменяется. Подскажите почему. подозреваю, что теперь скрипты в МПЛ не просто меняют артикул, а полноценные.

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

function GetArt() {

//основные переменные
NameArt = 'нря+1м';//код артикула до размера
w = (TovarItems.TovarModel.GSize.x );//реальная ширина модели в мм
l= (TovarItems.TovarModel.GSize.z );//реальная глубина модели в мм
SzWidth = (w.toFixed());
SzLength = (l.toFixed());
x = SzLength;
y = 49;
//переменные размеров


//функция


((SzWidth > 300 && SzWidth < 1000) && (SzLength > 379 && SzLength < 603))
Art = NameArt + '(ш' + SzWidth + 'мм х г' + (x - y) + 'мм)';
alert( 'Установленная ширина ' + SzWidth + ' мм' + ' и глубина ' + (x-y) + ' мм' )


return Art;
};

GetArt();

[свернуть]


//не знаю как задать запрос в гугл правильно) в общем, подскажите как "Art" отправить в строку наименования (а не в артикул, я так понимаю теперь это можно делать)

Letos 02.10.2017 13:33

Цитата:

Сообщение от Shink1rou (Сообщение 434437)
В мпл 9 он работает и переименовывает артикул, в мпл 10 выполняется, но артикул не изменяется. Подскажите почему.

Последняя строка должна быть такой
Код:

  TovarItems.TovarArticul = GetArt()
UPDATE:
Цитата:

Сообщение от Shink1rou (Сообщение 434437)
подскажите как "Art" отправить в строку наименования (а не в артикул, я так понимаю теперь это можно делать)

Если я правильно понял
Код:

  TovarItems.TovarName = GetArt()

Shink1rou 02.10.2017 14:30

И еще вопрос: можно ли задавать скрипт на весь проект в расстановке. Например, чтобы при нажатии на "Завершение расстановки" выдавался алерт, если не выполнено какое-то условие. Или на какие-то товары, допустим в шкафах есть элементы-болванки с каким-то определенным именем, которые обязательно надо заменить, и если замена не произведена, выдавало алерт.

Letos 02.10.2017 15:05

Цитата:

Сообщение от Shink1rou (Сообщение 434454)
можно ли задавать скрипт на весь проект в расстановке.

Увы, но вроде нет.

RAYMAN2100 17.10.2017 09:56

Скрипты для Базис Мебельщик 10
 
Добрый день! Подскажите пожалуйста почему не работаю скрипты для 10 версии. Были созданы в 9 версии и все работало.
Показал данную проблему программисту, попробовали написать в редакторе скриптов вот это и запустить alert("hello");
Но выдало ошибку. В чем проблема. Спасибо

s_mebel 17.10.2017 10:00

RAYMAN2100, для начала читаем внимательно-Снизу пункт 7.

Далее смотрим-
Здесь и здесь.


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

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