Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 21.12.2017, 12:21  
Заявки на создание скрипта.
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

Сказал(а) спасибо: 303
Поблагодарили 452 раз(а) в 189 сообщениях
Версия для печати Отправить по электронной почте
systland systland вне форума 21.12.2017, 12:21
Рейтинг: ()

Тема создана для размещения заявок на написание скриптов.

Для того, чтобы заявка была рассмотрена, необходимо составить максимально понятное техзадание :
1. Описать, какую задачу должен выполнять скрипт.
2. Какие данные должны использоваться скриптом.
3. Алгоритм (последовательность действий) работы скрипта.

Заявки типа "Мне нужен скрипт для расстановки полок" или подобные рискуют остаться без внимания.

Любые заявки не обязательны для рассмотрения. Если Вам не ответили, значит по какой-либо причине нет возможности её выполнить.
Альтернативный вариант - обратиться лично к тем, кто может оказать такую услугу

Другие сообщения, не соответствующие назначению темы, будут удалены без предупреждения!

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


Последний раз редактировалось Uncle; 03.02.2020 в 20:07.. Причина: Поправил шапку
Просмотров: 333753
Ответить с цитированием Вверх
Старый 07.07.2021, 02:29   #171
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от PravCom Посмотреть сообщение
Благодарю! Только модель ставится в начало координат, указать место курсором возможно?
поковырял... короче фрагмент специально оборачивается в блок, чтоб обнулить его кривые координаты.
есть три варианта.
1.оставляем создание блока и тогда скрипт такой:

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

Action.Continue();
var frag = AddBlock('шахмата');
frag.Load('КорольБ.fr3d');
frag.Owner = Model.Temp;
Action.OnClick = function() {
Action.Finish();
}
Action.OnMove = function() {
frag.PositionX = Action.Pos3.x;
frag.PositionY = Action.Pos3.y;
frag.PositionZ = Action.Pos3.z;
}
[свернуть]


2.убираем создание блока, но тогда необходимо исправить сам фрагмент. открыв его для редактирования и выделив блок в котором тела вращения, мы увидим что позиция блока уже не ноль, нужно обнулить (разрушить блок и сгруппировать в блок заново) и пересохранить фрагмент. тогда скрипт такой:

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

Action.Continue();
Model.Load('КорольБ.fr3d');
var frag = Model.Objects[Model.Count - 1];
frag.Owner = Model.Temp;
Action.OnClick = function() {
Action.Finish();
}
Action.OnMove = function() {
frag.PositionX = Action.Pos3.x;
frag.PositionY = Action.Pos3.y;
frag.PositionZ = Action.Pos3.z;
}
[свернуть]


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

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

Action.Continue();
var frag = OpenFurniture('КорольБ.fr3d');
if (frag) {
var obj = frag.Make(0, 0);
obj.Owner = Model.Temp;
obj.Build();
}
Action.OnClick = function() {
Action.Finish();
}
Action.OnMove = function() {
obj.PositionX = Action.Pos3.x;
obj.PositionY = Action.Pos3.y;
obj.PositionZ = Action.Pos3.z;
}
[свернуть]
kos100pudov вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
PravCom (07.07.2021), skromvit (07.07.2021)
Старый 07.07.2021, 08:10   #172
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
ну наконец победил.
скрипт заменяет фрагменты блоками, с сохранением названий, артикулов, позиций, обозначений, пользовательских свойств, типа для салона и отметки "сборочная единица".
удаляет ненужные габаритные рамки/линии стыка, пустые блоки, контуры, кроме вспомогательных линий - с ними не пойму пока...
Очень круто, просто нереально! я предполагал, что скрипты, это реальная помощь в работе, но не ожидал, что они настолько облегчают жизнь!
kos100pudov - Вам РЕСПЕКТ И УВАЖЕНИЕ!!!
skromvit - Вам спасибо за просьбу на счёт разрушения схем крепежа! это стало отправной точкой.

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
есть три варианта.
Балгодарю! Три способа даже интереснее, в разных ситуациях будет выбор. Сохраню все три способа.
PravCom вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
kos100pudov (07.07.2021)
Старый 07.07.2021, 11:18   #173
Mullerr
Новичок
 
Регистрация: 28.01.2021
Сообщений: 17
Сказал(а) спасибо: 49
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
Mullerr пока не определено
По умолчанию

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

расставит позиции внутри выделенного блока, а подблоки не тронет

function NumPos(Group) {
var artpos = {};
var numpos = 0;
for (var i = 0; i < Group.Count; ++i) {
if (Group.Objects[i].ArtPos > 0) {
if (!artpos[Group.Objects[i].ArtPos]) {
++numpos;
artpos[Group.Objects[i].ArtPos] = numpos;
}
}
}
for (var i = 0; i < Group.Count; ++i) {
if (Group.Objects[i].ArtPos > 0) {
Group.Objects[i].ArtPos = artpos[Group.Objects[i].ArtPos];
}
}
}
NumPos(Model.Selected);
Можно подправить данный скрипт для БМ8, чтобы в подблоках ВЫДЕЛЕННОГО блока так же расставлялись позиции последовательно. Допустим есть блок шкаф, внутри подблоки ящики. В шкафу позиции 1..2..3, в ящиках 4..5..6..?
И можно сделать отдельный скрипт для БМ8, чтобы на ВЫДЕЛЕННЫХ деталях расставлялись позиции 1..2..3.
Mullerr вне форума   Ответить с цитированием Вверх
Старый 07.07.2021, 11:41   #174
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Mullerr Посмотреть сообщение
Можно подправить данный скрипт для БМ8, чтобы в подблоках ВЫДЕЛЕННОГО блока так же расставлялись позиции последовательно. Допустим есть блок шкаф, внутри подблоки ящики. В шкафу позиции 1..2..3, в ящиках 4..5..6..?
И можно сделать отдельный скрипт для БМ8, чтобы на ВЫДЕЛЕННЫХ деталях расставлялись позиции 1..2..3.
Уточните.
1. Расставить позиции внутри выделенного блока начиная с 1-цы, не обращая внимания на то что панели могут быть в подблоке?
2.позиции выделенных позиций с 1-цы. А если у вас в модели уже есть панель с позицией 1? Для корректной расстановки позиций, пользователь сначала должен расставить позиции штатным способом базиса, чтоб базис сравнил панели и одинаковым назначил одинаковую позицию, а мы используем это для скриптовой расстановки, иначе у нас не получится присвоить одинаковым панелями одинаковую позицию..
kos100pudov вне форума   Ответить с цитированием Вверх
Старый 08.07.2021, 09:32   #175
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Есть такой волшебный скрипт

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

Цитата:
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.
[свернуть]
Очень интересный. Из выпадающего списка заинтересовало следующее: при объединении двух листовых материалов в единый, образуется цельный лист с теми же характеристиками, что и изначальный. Т.е. если объединяем два ДСП в единый, образуется единый ДСП, а не "вычитание" или "объединение тел". Смысл в том, чтобы на выходе спецификации тела с "объединениями" или "вычитаниями" тоже отображались теми же материалами. В скрипте, который я представил (спасибо тому человеку, который его создал) при объединении тел на выходе мы получаем полноценную деталь со всеми начальными характеристиками, должным образом отображаемую в спецификации.
Мой вопрос следующий - можно ли в скрипт к списку добавить функцию вычитания или сделать новый отдельный скрипт подобного рода? Чтобы он обладал теми же характеристиками, что и объединение в скрипте. Чтобы при вычитании получилась полноценно отображаемая деталь в спецификации.

Последний раз редактировалось SsensusS; 08.07.2021 в 14:52.
PravCom вне форума   Ответить с цитированием Вверх
Старый 08.07.2021, 13:42   #176
PravCom
Местный
 
Регистрация: 15.10.2019
Адрес: Кишинёв
Сообщений: 198
Сказал(а) спасибо: 492
Поблагодарили 72 раз(а) в 31 сообщениях
Вес репутации: 89
PravCom скоро придёт к известности
По умолчанию

Цитата:
Сообщение от PravCom Посмотреть сообщение
можно ли в скрипт к списку добавить функцию вычитания
Хотя бы просто код функции вычитания скриптом кто-нибудь знает?
PravCom вне форума   Ответить с цитированием Вверх
Старый 09.07.2021, 10:37   #177
Mullerr
Новичок
 
Регистрация: 28.01.2021
Сообщений: 17
Сказал(а) спасибо: 49
Поблагодарили 2 раз(а) в 2 сообщениях
Вес репутации: 0
Mullerr пока не определено
По умолчанию

Цитата:
Сообщение от kos100pudov Посмотреть сообщение
Уточните.
1. Расставить позиции внутри выделенного блока начиная с 1-цы, не обращая внимания на то что панели могут быть в подблоке?
2.позиции выделенных позиций с 1-цы. А если у вас в модели уже есть панель с позицией 1? Для корректной расстановки позиций, пользователь сначала должен расставить позиции штатным способом базиса, чтоб базис сравнил панели и одинаковым назначил одинаковую позицию, а мы используем это для скриптовой расстановки, иначе у нас не получится присвоить одинаковым панелями одинаковую позицию..
1. Совершенно верно.
2. Сначала расставляем позиции штатным способом в модели, затем выделяем нужные детали, нажимаем скрипт, позиции Выделенных панелей расставляются начиная с 1 (1..2..3.. соответственно одинаковые детали в Выделенных панелях под одним номером). Если в НЕвыделенных панелях модели уже есть детали с такими же номерами, то ничего страшного.
Mullerr вне форума   Ответить с цитированием Вверх
Старый 11.07.2021, 12:51   #178
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от Mullerr Посмотреть сообщение
1. Совершенно верно.
2. Сначала расставляем позиции штатным способом в модели, затем выделяем нужные детали, нажимаем скрипт, позиции Выделенных панелей расставляются начиная с 1 (1..2..3.. соответственно одинаковые детали в Выделенных панелях под одним номером). Если в НЕвыделенных панелях модели уже есть детали с такими же номерами, то ничего страшного.
набросал 5 вариантов)))
позиции в выделенных блоках глобально - расставляем позиции во всех выделенных блоках, подблоки не трогаем. одинаковые объекты в разных выделенных блоках получат одинаковую позицию.

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

function NumPos(group) {
//var artpos = {};
//var numpos = 0;
for (var i = 0; i < group.Count; ++i) {
if (group.Objects[i].ArtPos > 0) {
if (!artpos[group.Objects[i].ArtPos]) {
++numpos;
artpos[group.Objects[i].ArtPos] = numpos;
}
group.Objects[i].ArtPos = artpos[group.Objects[i].ArtPos];
}
}
}

var artpos = {};
var numpos = 0;
for (var i = 0; i < Model.SelectionCount; ++i){
if (Model.Selections[i].List){
NumPos(Model.Selections[i]);
}
}
[свернуть]


позиции в выделенных блоках локально - расставляем позиции во всех выделенных блоках, подблоки не трогаем. в каждом из выделенных блоков нумерация позиций объектов начинается сначала.

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

function NumPos(group) {
var artpos = {};
var numpos = 0;
for (var i = 0; i < group.Count; ++i) {
if (group.Objects[i].ArtPos > 0) {
if (!artpos[group.Objects[i].ArtPos]) {
++numpos;
artpos[group.Objects[i].ArtPos] = numpos;
}
group.Objects[i].ArtPos = artpos[group.Objects[i].ArtPos];
}
}
}

//var artpos = {};
//var numpos = 0;
for (var i = 0; i < Model.SelectionCount; ++i){
if (Model.Selections[i].List){
NumPos(Model.Selections[i]);
}
}
[свернуть]


позиции в выделенных блоках_подблоках глобально - расставляем позиции во всех выделенных блоках и их подблоках. одинаковые объекты в разных выделенных блоках_подблоках получат одинаковую позицию.

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

function NumPos(group) {
//var artpos = {};
//var numpos = 0;
for (var i = 0; i < group.Count; ++i) {
if (group.Objects[i].ArtPos > 0) {
if (!artpos[group.Objects[i].ArtPos]) {
++numpos;
artpos[group.Objects[i].ArtPos] = numpos;
}
group.Objects[i].ArtPos = artpos[group.Objects[i].ArtPos];
}
if (group.Objects[i].List) {
NumPos(group.Objects[i]);
}
}
}

var massObj = [];
for (var i = 0; i < Model.SelectionCount; ++i){
if (Model.Selections[i].List){
massObj.push(Model.Selections[i]);
}
}
//снимаем выделение блока если он находится внутри уже выделенного блока
for (var i = 0; i < massObj.length; ++i){
if ((massObj[i].List)&&(massObj[i].Owner instanceof TFurnBlock)&&(massObj[i].Owner.Selected)){
massObj[i].Selected = false;
}
}
var artpos = {};
var numpos = 0;
for (var i = 0; i < Model.SelectionCount; ++i){
if (Model.Selections[i].List){
NumPos(Model.Selections[i]);
}
}
[свернуть]


позиции в выделенных блоках_подблоках локально - расставляем позиции во всех выделенных блоках и их подблоках. в каждом блоке_подблоке нумерация позиций объектов начинается сначала.

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

function NumPos(group) {
var artpos = {};
var numpos = 0;
for (var i = 0; i < group.Count; ++i) {
if (group.Objects[i].ArtPos > 0) {
if (!artpos[group.Objects[i].ArtPos]) {
++numpos;
artpos[group.Objects[i].ArtPos] = numpos;
}
group.Objects[i].ArtPos = artpos[group.Objects[i].ArtPos];
}
if (group.Objects[i].List) {
NumPos(group.Objects[i]);
}
}
}

var massObj = [];
for (var i = 0; i < Model.SelectionCount; ++i){
if (Model.Selections[i].List){
massObj.push(Model.Selections[i]);
}
}
//снимаем выделение блока если он находится внутри уже выделенного блока
for (var i = 0; i < massObj.length; ++i){
if ((massObj[i].List)&&(massObj[i].Owner instanceof TFurnBlock)&&(massObj[i].Owner.Selected)){
massObj[i].Selected = false;
}
}
//var artpos = {};
//var numpos = 0;
for (var i = 0; i < Model.SelectionCount; ++i){
if (Model.Selections[i].List){
NumPos(Model.Selections[i]);
}
}
[свернуть]


позиции выделенных объектов глобально - расстановка позиций выделенных объектов сначала, невзирая на их нахождение в блоках_подблоках

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

function NumPos(obj) {
if (obj.ArtPos > 0) {
if (!artpos[obj.ArtPos]) {
++numpos;
artpos[obj.ArtPos] = numpos;
}
obj.ArtPos = artpos[obj.ArtPos];
}
}

var artpos = {};
var numpos = 0;
for (var i = 0; i < Model.SelectionCount; ++i){
if (!Model.Selections[i].List){
NumPos(Model.Selections[i]);
}
}
[свернуть]


обратите внимание на закоментированные или незакоментированные строки "var artpos = {};" и "var numpos = 0;" - именно от их расположения зависит как будет происходить расстановка позиций локально или глобально
kos100pudov вне форума   Ответить с цитированием Вверх
3 пользователя(ей) сказали cпасибо:
kostiaarh (12.07.2021), Mullerr (12.07.2021), PravCom (12.07.2021)
Старый 12.07.2021, 18:27   #179
DocAndre
Новичок
 
Регистрация: 18.12.2019
Сообщений: 3
Сказал(а) спасибо: 5
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
DocAndre пока не определено
По умолчанию

Здравствуйте, хотел спросить может есть скрипт смотри выделенный объек, высматривает фурнитуру и проверяет по имени или артиклу, обращается к списку формата json и перемножает колличество фурнитуры и вес указанный в файле и в конце выдаёт весь вес?
DocAndre вне форума   Ответить с цитированием Вверх
Старый 12.07.2021, 19:54   #180
kos100pudov
Местный
 
Регистрация: 02.11.2015
Сообщений: 490
Сказал(а) спасибо: 105
Поблагодарили 701 раз(а) в 265 сообщениях
Вес репутации: 293
kos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личностьkos100pudov - просто великолепная личность
По умолчанию

Цитата:
Сообщение от DocAndre Посмотреть сообщение
Здравствуйте, хотел спросить может есть скрипт смотри выделенный объек, высматривает фурнитуру и проверяет по имени или артиклу, обращается к списку формата json и перемножает колличество фурнитуры и вес указанный в файле и в конце выдаёт весь вес?
список в формате json в студию!)
kos100pudov вне форума   Ответить с цитированием Вверх
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заявки на фурнитуру, сборки, фрагменты Kudesnick Базис-мебельщик. Элементы фурнитуры и Комплектующих 1394 25.04.2024 16:57
"Мастер скриптов" — изменение скрипта блока в сцене KD ViPeS KitchenDraw (KD) 40 16.10.2023 19:23
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Генерирую заявки на шкафы за агентское вознаграждение в Москве. mavar Предлагаю работу 26 21.11.2014 16:06


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


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

џндекс.Њетрика