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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 06.06.2017, 08:56  
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565

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

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


Последний раз редактировалось systland; 26.12.2017 в 11:52..
Просмотров: 421826
Ответить с цитированием Вверх
Старый 11.11.2017, 15:10   #51
De_mon
Местный
 
Регистрация: 29.12.2014
Адрес: Уфа
Сообщений: 145
Сказал(а) спасибо: 135
Поблагодарили 113 раз(а) в 58 сообщениях
Вес репутации: 149
De_mon скоро придёт к известностиDe_mon скоро придёт к известности
По умолчанию

Поделитесь пожалуйста скриптом установки ручек для 10й версии, руки не дойдут 9й переписать
De_mon вне форума   Ответить с цитированием Вверх
Старый 20.11.2017, 14:05   #52
Sergenald
Новичок
 
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
Sergenald пока не определено
По умолчанию

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

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


b = BeginBlock('Block_1');
AddVertPanel(0,0,1000,1000,0);
EndBlock();
c = AddBlock('Block_2');
Panel = AddVertPanel(0,0,1000,1000,100);
Panel.Owner = c;
[свернуть]

а вот с третьим всё не так гладко. При использовании .Visible = false; на блоке, каким бы способом он не создавался, код не прерывается, всё отрабатывает, а по окончании просто не добавляет блок в модель.

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


b = BeginBlock('Block_1');
AddVertPanel(0,0,1000,1000,0);
EndBlock();
c = AddBlock('Block_2');
Panel = AddVertPanel(0,0,1000,1000,100);
Panel.Owner = c;
b.Visible = false;
c.Visible = false;
[свернуть]

Мысль 1) Visible срабатывает слишком хорошо и блока не видно даже в настройках модели, но для программы он есть. *Но материала из него нет и в смете, и восстановление видимости его не находит. Из чего делаю вывод что он просто удаляется программой.
Мысль 2) Visible не является применимой к блокам. *Но Block дочерний от List3D, а List3D дочерний от Object3, в котором и определён Visible. По этому к примеру команда alert(Block.Visible); безошибочно отрабатывает.
И так вопрос: как скрыть блок? Может кто ещё какие команды знает для работы с видимостью?
Sergenald вне форума   Ответить с цитированием Вверх
Старый 20.11.2017, 14:34   #53
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Sergenald Посмотреть сообщение
И так вопрос: как скрыть блок?
Вот первый попавшийся способ:

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

Код:
/**Имя блока. Желательно уникальное */
const blockName = 'My_script_block_#_1';
var b = BeginBlock(blockName);
AddVertPanel(0,0,1000,1000,0);
EndBlock();
//Сохраняем блок в модель
Action.Commit();
//Идем по всем объектам модели и ищем наш блок
Model.forEach((obj)=>{
    // Если имена совпадают, то это наш объект.
    // При наличии нескольких объектов с этим именем
    // в переменную b запишется последний найденный
    if (obj.Name === blockName){
        b = obj;
    }
})
// Делаем объект невидимым
b.Visible = false;
//Если заданное уникальное имя не нравится, меняем на то, 
// которое должно быть.
b.Name = 'Block_1'
[свернуть]


UPD: При сохранении объектов, созданных в скрипте, сохраняются только видимые, а все невидимые удаляются (причем так только у корневых объектов. Панель в блоке можно делать невидимой и до сохранения). Поэтому созданный блок прекрасно делался невидимым а по завершении скрипта он не переносился в модель и удалялся.

Последний раз редактировалось Letos; 20.11.2017 в 14:42. Причина: UPD
Letos вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
djobik (21.11.2017), maxgmv (21.11.2017), Ovsyanicov (20.11.2017), Sergenald (22.11.2017), v.bolshakov (08.10.2019)
Старый 30.11.2017, 18:55   #54
tekken2007
Новичок
 
Регистрация: 29.05.2010
Сообщений: 9
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Вес репутации: 0
tekken2007 на пути к лучшему
По умолчанию

Всем привет! Кто то сможет исправить скрип ..использую несколько скриптов после перехода на 10 ... половина накрылась, я от этого далекий..

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


FileOptions = 'Труба_Настройки.xml';










MakeProperties();

Action.Properties.Load(FileOptions);



Action.OnFinish = function() {
Action.Properties.Save(FileOptions);
}






Action.Continue();

function MakeProperties() {

Prop = Action.Properties;







Krepej = Prop.NewFurniture('Трубодержатель');
Truba = Prop.NewMaterial('Материал Трубы')
Diametr = Prop.NewNumber('Диаметр трубы', 25)
Shirina = Prop.NewNumber('Ширина трубы', 25)
Vertik = Prop.NewBool('Вертикальная')
Vertik.OnChange = function()
{
Action.Commit()
}
}

if (Vertik.Value)
{
Bok1 = GetPanel("Укажите Нижнюю панель");
Bok2 = GetPanel("Укажите Верхнюю панель");

y1k = Bok1.GabMax.y
y2k = Bok2.GabMin.y


SetCamera(p3dTop )

z1 = Bok1.GabMin.z + 1;
z2 = Bok1.GabMax.z - 20;

}
else
{
Bok1 = GetPanel("Укажите 1-ую панель");
Bok2 = GetPanel("Укажите 2-ую панель");

x1k = Bok1.GabMax.x
x2k = Bok2.GabMin.x

x1 = x1k + 1;
x2 = x2k - 1;

SetCamera(p3dLeft)

z1 = Bok1.GabMin.z + 1;
z2 = Bok1.GabMax.z - 20;


}

//TPro = Bok2.Contour.TProjection;
//alert(Bok1);

//SetCamera(Bok1.PanelSideEnum(true));

//SetCamera(Bok1.PanelSideEnum=true);









function MoveOdj()
{
DeleteNewObjects()
Truba.SetActive()
Ext = AddExtrusion('Труба D25');
Ext.Name = 'Труба'
// выталкиваемый профиль
//truba = 'Труба25.frw'
//Ext.Contour.AddCircle(0, 0, Diametr.Value*0.5)
if (Shirina.Value < Diametr.Value) {
Ext.Contour.AddCircle(0, 0, Diametr.Value * 0.5);
}
else {
d = Shirina.Value - Diametr.Value
p1 = NewPoint(-Diametr.Value * 0.5, 0);
p2 = NewPoint(Diametr.Value * 0.5, 0);
p3 = NewPoint(-Diametr.Value * 0.5, d);
p4 = NewPoint(Diametr.Value * 0.5, d);
centre1 = NewPoint(0, -Diametr.Value * 0.5);
centre2 = NewPoint(0, Diametr.Value * 0.5 + d);
Ext.Contour.AddArc3(p1, centre1, p2);
Ext.Contour.AddArc3(p3, centre2, p4);
Ext.Contour.AddLine(p1.x, p1.y, p3.x, p3.y);
Ext.Contour.AddLine(p2.x, p2.y, p4.x, p4.y);

};

if (Vertik.Value)
{
Ext.Orient(AxisY, AxisZ);
// установим длину профиля
Ext.Thickness =y2k-y1k;
Ext.PositionX = Action.Pos3.x
Ext.PositionY = Action.Pos3.y
Ext.PositionZ = Action.Pos3.z
Ext.Translate(NewVector(0, y1k, 0))

Krepej.Value.Mount1(Bok1, Action.Pos3.x, y1k, Action.Pos3.z, 0)
Krepej.Value.Mount1(Bok2, Action.Pos3.x,y2k, Action.Pos3.z, 0)
}
else
{
// вытянем профиль вдоль оси X
Ext.Orient(AxisX, AxisZ);
Ext.RotateX(90);
// установим длину профиля
Ext.Thickness =x2-x1;
Ext.PositionX = Action.Pos3.x
Ext.PositionY = Action.Pos3.y
Ext.PositionZ = Action.Pos3.z
Ext.Translate(NewVector(x1, 0, 0))

Krepej.Value.Mount1(Bok1, x1k, Action.Pos3.y, Action.Pos3.z, 0)
Krepej.Value.Mount1(Bok2, x2k, Action.Pos3.y, Action.Pos3.z, 0)
}

}

Action.ShowPoints = true;
Action.OnMove = function() {MoveOdj()};
Action.OnClick = function() {Action.Finish()};
Action.Continue();
[свернуть]
tekken2007 вне форума   Ответить с цитированием Вверх
Старый 01.12.2017, 09:54   #55
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от tekken2007 Посмотреть сообщение
Всем привет! Кто то сможет исправить скрип
Запустил у себя, все заработало, и вроде даже как надо. Вы бы хотя бы описали что не работает и после каких действий. Если у вас просто не запускается скрипт, то попробуйте запустить его из редактора скриптов и прислать скриншот выпавшей ошибки в логе. Во вложении пример такого скриншота.
Миниатюры
scriptError.png  
Letos вне форума   Ответить с цитированием Вверх
Старый 01.12.2017, 13:45   #56
Ovsyanicov
Местный
 
Регистрация: 30.11.2013
Адрес: Кишинев
Сообщений: 733
Сказал(а) спасибо: 1,530
Поблагодарили 884 раз(а) в 376 сообщениях
Вес репутации: 402
Ovsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордитсяOvsyanicov за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Запустил у себя, все заработало, и вроде даже как надо
Я тоже ради интереса запустил и, вроде, заработало. Но потом выбрал в свойствах трубодержатель и понял - надо исправлять ))
Нажмите на изображение для увеличения
Название: 01.png
Просмотров: 58
Размер:	5.7 Кб
ID:	123675Нажмите на изображение для увеличения
Название: 02.png
Просмотров: 83
Размер:	34.2 Кб
ID:	123676Нажмите на изображение для увеличения
Название: 03.jpg
Просмотров: 121
Размер:	22.1 Кб
ID:	123678
При любом перемещении курсора происходит установка трубодержателей. Сама труба вместе с нужными трубодержателями устанавливается по ЛКМ.
Ovsyanicov вне форума   Ответить с цитированием Вверх
Старый 01.12.2017, 15:43   #57
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
Я тоже ради интереса запустил и, вроде, заработало. Но потом выбрал в свойствах трубодержатель и понял - надо исправлять ))
Приложил новый, исправленный скрипт (сменил формат на тхт, чтоб загрузился как вложение)

Цитата:
Сообщение от Ovsyanicov Посмотреть сообщение
При любом перемещении курсора происходит установка трубодержателей. Сама труба вместе с нужными трубодержателями устанавливается по ЛКМ.
У меня версия чуть поновее, где эта ошибка исправлена, поэтому у меня все нормально было)). Суть ошибки - функция Mount1 ставила крепеж сразу в модель, а не во временный объект. Это приводило ко многим жутким вещам - например все установленные во время перемещения курсора трубодержатели не отображались в истории. Поэтому в скрипт добавлено новое условие:
Код:
  //Если существует крепеж, и он не во временной области модели
  if (kr1 && kr1.Owner !== Model.Temp){
    //Удаляем крепеж
    DeleteObject(kr1);
    //удаляем ссылку на объект
    kr1 = undefined;
  }
Кстати, я видел, что есть "Библиотека фрагментов". Беглым поиском попытался найти "Библиотеку скриптов", но не нашел. Есть ли таковая, и, если ее нет, то имеет ли смысл ее создавать?
Вложения
Тип файла: txt script.txt (3.8 Кб, 50 просмотров)
Letos вне форума   Ответить с цитированием Вверх
2 пользователя(ей) сказали cпасибо:
maxgmv (01.12.2017), Ovsyanicov (01.12.2017)
Старый 01.12.2017, 16:17   #58
Uncle
VIP
 
Аватар для Uncle
 
Регистрация: 31.10.2009
Адрес: Рівне. УкраЇна
Сообщений: 10,580
Сказал(а) спасибо: 14,588
Поблагодарили 20,022 раз(а) в 6,492 сообщениях
Вес репутации: 5256
Uncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспоримаUncle репутация неоспорима
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Беглым поиском попытался найти "Библиотеку скриптов", но не нашел. Есть ли таковая, и, если ее нет, то имеет ли смысл ее создавать?
Как таковой библиотеки нет. Есть парочка тем о скриптах от версии к версии Базиса. Обсуждается работа скрипта, какие - то скрипты выкладываются.. Массово выкладывать скрипты, на сколько я понял, компетентные в написании скриптов пользователи, особо не проявляют инициативы. Оно наверно и понятно - создание скрипта дело трудоемкое (не спец в этом, но так предполагаю)... Если у Вас есть желание открыть подобную тему, делиться в ней наработками - уверен, многие будут Вам очень признательны...
__________________
Уж лучше беспокойство в сомнении, чем успокоенность в заблуждении. .
(Мандзони Алессандро)
------------------------------------
Троллей не кормлю...
Uncle вне форума   Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 04.12.2017, 09:06   #59
Megabyte
Местный
 
Регистрация: 11.07.2010
Сообщений: 135
Сказал(а) спасибо: 321
Поблагодарили 117 раз(а) в 45 сообщениях
Вес репутации: 203
Megabyte скоро придёт к известностиMegabyte скоро придёт к известности
По умолчанию

Всем добрый день.

Возможно ли сделать следующее:
Есть список с названиями элементов (в файле Эксель, но можно записать в текстовый формат, csv или другой).
С помощью скрипта создать в Модели сборки с названиями из списка. Количество элементов в списке заранее неизвестно.

В написании скриптов мои знания сильно ниже среднего Поэтому буду долго и мучительно искать нужное решение.

Если кто-то знает несложное решение, буду признателен за подсказку.

По предыдущему сообщению вопрос снят. Решил другим способом.

Последний раз редактировалось AlexBolton; 04.12.2017 в 10:50.
Megabyte вне форума   Ответить с цитированием Вверх
Старый 07.12.2017, 10:13   #60
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,029 раз(а) в 366 сообщениях
Вес репутации: 343
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Товарищи скриптописатели, скриптопользователи, и все, неравнодушные к скриптам в Базисе. Предлагаю принять участие в обсуждении модернизации раздела системы Базис (а именно скриптов). Основная идея изложена в этом сообщении.
Letos вне форума   Ответить с цитированием Вверх
Ответ

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

Опции темы
Опции просмотра

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Базис-Мебельщик 10 systland Базис-мебельщик 10 1264 13.03.2024 22:48
БАЗИС-Мебельщик 7.0 Shadow Базис-мебельщик 7 2230 29.11.2019 10:37
Базис-мебельщик JavaScript ran Ищу работу 0 09.05.2014 10:08


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


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

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