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

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

Letos 10.03.2020 12:19

Цитата:

Сообщение от Максим Геннадьевич (Сообщение 492272)
Спасибо. Нашел, не обращал внимание. А расшифровать уже не как так понимаю. Допустим зашифровал я свой код, и нужно внести поправки.

Насколько я знаю - никак, только хранить исходный незашифрованный код.

Bystry 16.03.2020 00:46

Undo.changing() Что это?
 
Undo.changing() Что это? есть ли описание данной функции? зачем она нужна, когда ее использовать а когда нет, что она делает? какие функции еще не описаны в стандартной документации? может кто то подскажет где есть полное описание всех остальных не описанных функций?

Letos 16.03.2020 01:08

Цитата:

Сообщение от Bystry (Сообщение 492595)
Undo.changing() Что это? есть ли описание данной функции? зачем она нужна, когда ее использовать а когда нет, что она делает? какие функции еще не описаны в стандартной документации? может кто то подскажет где есть полное описание всех остальных не описанных функций?

Эта функция записывает, что объект будет изменён. Все изменения объекта между этой функцией и Action.Commit (или завершением скрипта) будут записаны в историю, следовательно, эти изменения можно будет отменить.

Bystry 16.03.2020 02:38

Цитата:

Сообщение от Letos (Сообщение 492598)
Эта функция записывает, что объект будет изменён. Все изменения объекта между этой функцией и Action.Commit (или завершением скрипта) будут записаны в историю, следовательно, эти изменения можно будет отменить.

спасибо!
Нужно ли в конце каждого скрипта вставлять Action.Commit?

Нужно ли после(или перед?) каждого изменения вставлять этот Undo.changing()? имеется ввиду например я хочу
1 - окромковать 2 грани детали...(панель 1)
2 - затем создать новую деталь... (панель 2)
3 - затем ее окромковать.(панель2)
тоесть тут уже 3 операции и я хочу чтоб они все были в истории поэтапно...

как это должно выглядеть?

Undo.changing(панель 1)
1 - окромковать 2 грани детали...(панель 1)
Undo.changing(панель 2)
2 - затем создать новую деталь... (панель 2)
Undo.changing(панель 2)
3 - затем ее окромковать.(панель2)
Action.Commit

както так?

Добавлено через 8 минут
Есть ли функция проверки наличия кромок на гранях? например я ей передаю в параметр имя панели а она мне выдает массив с элементами true или false
если нет то как можно проверять наличие кромки?

Letos 16.03.2020 09:50

Цитата:

Сообщение от Bystry (Сообщение 492601)
спасибо!
Нужно ли в конце каждого скрипта вставлять Action.Commit?

Нужно ли после(или перед?) каждого изменения вставлять этот Undo.changing()? имеется ввиду например я хочу
1 - окромковать 2 грани детали...(панель 1)
2 - затем создать новую деталь... (панель 2)
3 - затем ее окромковать.(панель2)
тоесть тут уже 3 операции и я хочу чтоб они все были в истории поэтапно...

как это должно выглядеть?

Undo.changing(панель 1)
1 - окромковать 2 грани детали...(панель 1)
Undo.changing(панель 2)
2 - затем создать новую деталь... (панель 2)
Undo.changing(панель 2)
3 - затем ее окромковать.(панель2)
Action.Commit

както так?

Добавлено через 8 минут
Есть ли функция проверки наличия кромок на гранях? например я ей передаю в параметр имя панели а она мне выдает массив с элементами true или false
если нет то как можно проверять наличие кромки?

1. Action.Commit вставлять не надо если скрипт завершается естественным путём (то есть нигде не вызывается Action.Cancel). По завершении скрипта автоматически вызывается Action.Finish, который и делает коммит.

2.Undo.Changing вызывается лишь однажды перед изменением объекта, уже существовавшего до выполнения скрипта. Если объект создаётся скриптом и его положение в иерархии не меняется (то есть он находится в объекте по умолчанию - временной области модели), то Undo.Changing вызывать не надо - объект автоматически добавится в историю по завершении скрипта. Соответственно, в вашем примере Undo.Changing нужно будет вызывать лишь однажды для панели 1.

3. Встроенных функций проверки кромок нет. Можно самому написать. Пример вычисления наличия кромок на выделенной панели:

Код

PHP код:

// Выделенный объект - панель
var panel Model.Selected.AsPanel;
// Проверка, есть ли вообще кромка на панели
var buttExists panel.Butts.Count 0;

// Массив кромок. В каждом элементе - булево значение, означающее, есть ли 
// кромка у элемента контура с соответствующим индексом.
var buttsArray = [];
// По умолчанию выставляется отсутствеи кромок для каждого элемента контура панели
for (var 0panel.Contour.Counti++) {
    
buttsArray[i] = false;
}
// Цикл по каждой кромке
for (var 0panel.Butts.Counti++) {
    
// Индекс элемента контура, на который нанесена кромка
    
var index panel.Butts.Butts[i].ElemIndex;
    
// Выставляем наличие кромки на элементе        
    
buttsArray[index] = true;
}
//Вывод информации
alert(JSON.stringify(buttsArray)) 

[свернуть]

hseva 23.03.2020 11:10

Все привет! Написал скрипт, все работает но файл запускается только с редактора скриптов, хотя находится в базисной папке Script и в настройках как и положено прописан путь к этой папке. В чем может быть причина, кто подскажет? Спасибо.

Letos 23.03.2020 11:26

Цитата:

Сообщение от hseva (Сообщение 492920)
Все привет! Написал скрипт, все работает но файл запускается только с редактора скриптов, хотя находится в базисной папке Script и в настройках как и положено прописан путь к этой папке. В чем может быть причина, кто подскажет? Спасибо.

Вполне может быть, что какая-то ошибка в коде скрипта, но при запуске из редактора она игнорируется. Попробуйте запустить при открытом редакторе скриптов, но из меню "Скрипты" - если есть ошибка, она должна появиться в логе редактора скриптов.

hseva 23.03.2020 12:09

Цитата:

Сообщение от Letos (Сообщение 492922)
Вполне может быть, что какая-то ошибка в коде скрипта, но при запуске из редактора она игнорируется. Попробуйте запустить при открытом редакторе скриптов, но из меню "Скрипты" - если есть ошибка, она должна появиться в логе редактора скриптов.

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

Letos 23.03.2020 14:22

Цитата:

Сообщение от hseva (Сообщение 492927)
Увы. Вообще никакой реакции в логе при запуске с меню. Скрипт работает только с редактора

Можете скинуть скрипт на посмотреть?
Если нет, можете комментировать отдельные части кода и смотреть, запускается скрипт или нет. Если не запускается - проблема локализована в закомментированном участке и надо разбить его на части и комментировать их для выявления меньшей проблемной области и т.д.
Для начала можно проверить кол-во скобок открывающих/закрывающих, может где-то чего-то не хватает.

hseva 24.03.2020 02:47

Цитата:

Сообщение от Letos (Сообщение 492940)
Можете скинуть скрипт на посмотреть?
Если нет, можете комментировать отдельные части кода и смотреть, запускается скрипт или нет. Если не запускается - проблема локализована в закомментированном участке и надо разбить его на части и комментировать их для выявления меньшей проблемной области и т.д.
Для начала можно проверить кол-во скобок открывающих/закрывающих, может где-то чего-то не хватает.

Все ок, спасибо . Нашел пару лишних скобок вашим методом )


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

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