Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 11 в этой теме.
Новшества Базис Мебельщик версии 11:
..... 6. Работоспособность скриптов, созданных в более ранних версиях, не гарантируется в версии БАЗИС 11.
.....
52. Разработана панель инструментов для скриптов, на которую можно вывести, например, часто используемые скрипты, со своими иконками, хинтами и т.д.
53. Добавлена возможность автозапуска выбранного скрипта на любое из двух событий – Загрузка модели, и/или Сохранение модели.
.....
Новшества Базис Мебельщик версии 2021:
16. Отладчик скриптов.
VISUAL CODE
Код:
Примеры скриптов из видео
Вес панелей.js
Выделить панели без облицовки.js
Панель по 3 точкам.js
Прифуговка кромки.js
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Последний раз редактировалось AlexBolton; 09.01.2024 в 11:56..
как программно получить xml файл который создаётся при выгрузке спецификации XML?
Не совсем понял, что именно нужно. Хранятся они по пути к текстовым документам, указанному в настройках.
Зная его, можно предположить, что путь к искомому файлу - <Путь к текстовым документам> + "_" + <Название модели (Article.Name)> + " Спецификация.xml". По идее такой формат именования.
Если надо в момент самой выгрузки, то, увы, не получится. Только уже готовый файл смотреть.
программно нажать эту кнопку которая генерит это файлик
я это имел ввиду
Код для запуска чертежей (для конкретно XML не знаю кнопки, если подскажете, где она (если она есть), может и её найдём):
PHP код:
var mainForm = Action.Control.Owner.Owner;
var c = mainForm.FindComponent('a3MakeDrawings');
c.Execute();
И скриптик по получению списка компонентов главной формы (надеюсь, будет полезен. Пример по использованию имени компонента выше.):
PHP код:
var mainForm = Action.Control.Owner.Owner;
var log = '';
for (var i = 0; i < mainForm.ComponentCount; i++){
var comp = mainForm.Components[i]
log += comp.Name + ': ' + comp.constructor.name + '\n';
}
system.writeTextFile('components.log', log);
в components.log запишется список компонентов формы в формате "Имя компонента: Тип компонента". Компоненты типа "TBasicAction" можно "запускать" с помощью функции Execute(). По документации Delphi эта функция возвращает true, если удалось запустить выполнение.
да да то что нужно
var c = mainForm.FindComponent('a3MakeDrawings');
c.Execute();
ещё бы вызвать её программно с установленной галкой спецификация хмл
Добавлено через 21 минуту
идея такая
меня бесит базисовские отчёты их всегда приходиться дооформлять, а я хочу генерить свой excell отчёт из этого XML файла там в принципе всё есть
главное, чтобы всё было прописано в базе материалов или придётся искать соответсвия самому
так же в скрипте перед вызовом отчёта можно в пользовательские свойства прописать какието дополнительные данные и они тоже попадут в XML
Добавлено через 2 минуты
и для общего случая модуль базис сметы не нужен будет,
хотя его дешевле купить чем пилить свой велосипед
ещё бы вызвать её программно с установленной галкой спецификация хмл
Галку установить вряд ли получится, ибо на главной форме компонент этой формы не создаётся. Проверял таким скриптом:
код
PHP код:
var mainForm = Action.Control.Owner.Owner;
var log = '';
for (var i = 0; i < mainForm.ComponentCount; i++) {
var comp = mainForm.Components[i]
log += comp.Name + ': ' + comp.constructor.name + '\n';
}
system.writeTextFile('components.log', log);
alert(123);
Action.Continue();
require('timers').setTimeout(() => {
var c = mainForm.FindComponent('a3MakeDrawings');
c.Execute();
}, 1000);
require('timers').setTimeout(()=>{
log = '';
for (var i = 0; i < mainForm.ComponentCount; i++) {
var comp = mainForm.Components[i]
log += comp.Name + ': ' + comp.constructor.name + '\n';
}
system.writeTextFile('components2.log', log);
alert(123);
},5000)
[свернуть]
Этот скрипт пишет названия всех компонентов главной формы в файл components.log и выдает первый алерт. После закрытия алерта, запускаются два асинхронных вызова - вызов формы чертежей через секунду и запись названий всех компонентов в файл components2.log через 5 секунд (для гарантии того, что форма откроется не после записи). Файлы оказались идентичны.
Второй поток нужен потому, что при вызове модальной формы блокируется тот поток js, который её вызывает (мало ли вдруг, пригодится на будущее).
Также заметил, что нет ни одного "высокоуровневого" типа (наподобие TButton, TEdit, TCheckBox и т.д.), а только базовые родительские типы (TComponent, TCustomControl, TBasicAction) со скудным набором методов, поэтому предполагаю, что даже если и можно будет найти кнопку, вряд ли можно будет сэмулировать её нажатие.
Необходимо программно изменить состояние контрола в "настройках" БМ 11.
возможно ли это?
м.б. быть это где то храниться в xml какой нибудь..
или хотя бы прочитать это состояние на некоторый момент работы скрипта.
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...
Любые вопросы по любому системному и мебельному софту, любые конвертации, настройки и т.д.>сюда< (кроме озвученных в мануалах, инструкциях и темах форума) ...