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

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

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 8 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


Т.к. при запуске скрипта на другом компе возникает ошибка о не возможности открыть то или иной файл и скрипт до конца не отрабатывает свой текст. Не соблюдается "чистота проверки" работы скрипта.

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Новое в скриптописании для БМ:

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

while (true)
Вот полный список новшеств, добавленных в скрипты с момента их выхода:

14 декабря 2014

Добавлена поддержка эластичных блоков

List3D : {
IsElastic: new HDefinition("?Boolean:", 'Являетсяли объект эластичным'),
ElasticResize: new HDefinition("?Vector:newSize", 'Растянуть объект до требуемых размеров'),
}

27 ноября 2014

Вспомогательные геометрические алгоритмы, реализованы в глобальном объекте geometry

geometry : new HDefinition("Geometry2D", 'Вспомогательные геометрические функции'),

Geometry2D : {
Intersect: new HDefinition("?Array.<Point>:elem1,elem2", 'Вычислить точки пересечения двухмерных элементов'),
Compare: new HDefinition("?Boolean:elem1,elem2", 'Сравнить элементы'),
Distance: new HDefinition("?Number:elem1,elem2", 'Найти кратчайшее расстояние между элементами'),
Area: new HDefinition("?Number:contour", 'Найти площадь контура')
}

17 ноября 2014

Работа с пользовательскими свойствами

Object3 : {
UserPropCount: new HDefinition("Number", 'Количество пользовательских свойств'),
UserProperty: new HDefinition('Array.<Object>', 'Значение свойства по его имени или индексу'),
UserPropertyName: new HDefinition('Array.<String>', 'Названия свойств')
}

Новые элементы управления на панели свойств

ScriptProperty: {
NewColor: new HDefinition("?ScriptColorProperty:'Название'", 'Создать свойство типа цвет'),
NewSeparator: new HDefinition("?ScriptProperty", 'Создать разделитель')
}

ScriptColorProperty: {
Value: new HDefinition("Number")
},

----------------------------------------------------------------------------------------------------
29 сентября 2014

system.apiVersion = 90 -> Bazis9
system.apiVersion = 85 -> Bazis8

----------------------------------------------------------------------------------------------------
15 сентября 2014

Contour2D : {
Min: new HDefinition("Point", 'Левый нижний угол охватывающего прямоугольника'),
Max: new HDefinition("Point", 'Правый верхний угол охватывающего прямоугольника'),
AddEquidistant : new HDefinition("?undefined:contour,offset,false,false", 'Добавить эквидистанту контура. Последние 2 параметры отвечают за направление и скругление')
}

ScriptProperty: {
OnDeactivate : new HDefinition("Function", 'Обработчик деактивации свойства или меню'),
OnValueValidate : new HDefinition("Function", 'Проверка корректности значения'),
ValueValid: new HDefinition("Boolean", 'Флаг корректности введенного значения, выставляется обработчиком OnValueValidate'),
Validate: new HDefinition("?Boolean:", 'Проверить значение свойства и вложенных свойств')
}

----------------------------------------------------------------------------------------------------
2 сентября 2014

ScriptProperty: {
NameEditable: new HDefinition("Boolean", 'Разрешить редактирование имени (для создания таблиц)'),
NewSeparator: new HDefinition("?ScriptProperty", 'Создать разделитель')
}

----------------------------------------------------------------------------------------------------
9 августа 2014

Добавлены подменю в кнопки

InButton : {
NewSubMenu : new HDefinition('?InButton:"Меню"', 'Создать подменю'),
Combo: new Definition("Boolean", 'Отдельная стрелка для подменю')
},

Добавлены всплывающие меню и цвет фона для всех свойств. Созданы обработчики активации и изменения свойства.
Прежнее событие OnChange срабатывало не только при изменении самого параметра, но и при изменении дочерних свойств.
OnValueChange срабатывает только при изменении значения свойства.

ScriptProperty: {
BackColor: new HDefinition("Number", 'Цвет фона'),
PopupMenu: new HDefinition("ScriptMenu", 'Всплывающее меню'),
OnActivate : new HDefinition("Function", 'Обработчик активации свойства пользователем'),
OnValueChange : new HDefinition("Function", 'Обработчик изменения свойства')
Tag: new HDefinition("Number", 'Пользовательское число'),
}

Добавлено выпадающее меню:

ScriptProperty: {
DropDownMenu: new HDefinition("ScriptMenu", 'Выпадающее меню')
}

----------------------------------------------------------------------------------------------------
21 апреля 2014:

Добавлены свойства и методы:

ScriptMaterialProperty: {
Width: new HDefinition("Number", "Ширина листа"),
}

ScriptButtProperty: {
Thickness: new HDefinition("Number", "Толщина кромки"),
Width: new HDefinition("Number", "Ширина ленты"),
}

Contour2D : {
IsPointInside: new HDefinition("?Boolean:x,y", "Находится ли точка внутри контура?"),
IsInContour: new HDefinition("?Boolean:contour", "Находится ли контур внутри другого?"),
IsClosedContour: new HDefinition("?Boolean:", "Является ли контур замкнутым?"),
IsContourRectangle: new HDefinition("?Boolean:", "Является ли контур прямоугольным?"),
OrderContours: new HDefinition("?Boolean:true", "Упорядочить элементы контура в одном направлении")
}


----------------------------------------------------------------------------------------------------
6 февраля 2014

Реализовано подключение и вызов функций COM и OLE объектов

ScriptProperty : {
Expanded: new HDefinition("Boolean", 'Развернуты ли вложенные свойства')
}

Добавлен метод:
NewCOMObject: new HDefinition("?IDispatch:'CLSID'", 'Создать новый COM объект по его типу')
[свернуть]

Нажмите на изображение для увеличения
Название: Базис.jpg
Просмотров: 1497
Размер:	36.4 Кб
ID:	86248

Обратите внимание на полезные ответы в этой теме!


Последний раз редактировалось systland; 26.12.2017 в 11:52.. Причина: Добавил объявление.
Просмотров: 1392007
Ответить с цитированием Вверх
6 пользователя(ей) сказали cпасибо:
Старый 01.12.2017, 14:40   #941
Kemperok
Новичок
 
Регистрация: 08.08.2017
Сообщений: 7
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Kemperok пока не определено
По умолчанию

Цитата:
Сообщение от cudesnic09 Посмотреть сообщение
В БМ в режиме "Чертёж" выбрать "Вид"(там ещё листочки стопочкой).Создать нужное количество видов и разложить по ним карты раскроя.
Нет, мне не это надо. мне нужно, чтобы эти панели можно было посмотреть с торца и располагать их в пакет. Просто нет возможности купить базис-упаковку ... А упаковку делать надо
Kemperok вне форума   Ответить с цитированием Вверх
Старый 02.12.2017, 12:03   #942
Конфикс
Новичок
 
Регистрация: 21.04.2015
Сообщений: 3
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
Конфикс пока не определено
По умолчанию

А можно и мне попросить скрипт по установке кухонных тумбочек очень нужно . Заранее благодарен . Может быть со временем также чем то смогу отблагодарить

Последний раз редактировалось Конфикс; 02.12.2017 в 12:07. Причина: уточнение
Конфикс вне форума   Ответить с цитированием Вверх
Старый 07.12.2017, 10:22   #943
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Товарищи скриптописатели, скриптопользователи, и все, неравнодушные к скриптам в Базисе. Предлагаю принять участие в обсуждении модернизации раздела системы Базис (а именно скриптов). Основная идея изложена в этом сообщении.
Letos вне форума   Ответить с цитированием Вверх
Старый 14.12.2017, 15:10   #944
roollz
Пользователь
 
Регистрация: 25.12.2013
Адрес: Глухов
Сообщений: 41
Сказал(а) спасибо: 40
Поблагодарили 45 раз(а) в 15 сообщениях
Вес репутации: 139
roollz на пути к лучшему
По умолчанию

Всем привет. Помогите пожалуйста разобраться как повернуть копии выделенного блока вокруг самого блока чтобы на фронтальном виде получилось нечто похожее на сборочный чертеж только в 3D. Я просто создаю сборочные виды копируя их на лист.
Скрипт поворачивает всегда с разными смещениями.

Код:
B = Model.Selected;

D=AddCopy(B)
D.RotateX(90)

C=AddCopy(B)
C.RotateY(90)

U=AddCopy(B)
U.RotateY(-20)
U.RotateX(20)

UnSelectAll();
Не могу въехать как правильно заполнить ось вращения.

Последний раз редактировалось AlexBolton; 16.12.2017 в 12:03. Причина: Публиковать "превью - увеличение по клику" +оформление кода
roollz вне форума   Ответить с цитированием Вверх
Старый 14.12.2017, 23:27   #945
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от roollz Посмотреть сообщение
Всем привет. Помогите пожалуйста разобраться как повернуть копии выделенного блока вокруг самого блока чтобы на фронтальном виде получилось нечто похожее на сборочный чертеж только в 3D. Я просто создаю сборочные виды копируя их на лист.
Как-то так:

Код

Код:
var B = Model.Selected;
var selGab = B.NToGlobal(B.GSize);
var offset = 150;

var D = AddCopy(B)
//сдвиг на нужный "вид"
D.Translate({x: 0,
             y: -(selGab.x + offset),
             z: 0
})
D.RotateX(90)

var C = AddCopy(B)
//сдвиг на нужный "вид"
C.Translate({x: selGab.y + offset,
             y: 0,
             z: 0
})
C.RotateY(90)

var U = AddCopy(B)
U.Translate({x: selGab.y + offset,
             y: -(selGab.x + offset),
             z: 0
})
U.RotateY(-20)
U.RotateX(20)

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

В чем суть: для получения "видов" Вам нужно еще сдвигать копии на нужное расстояние. В приведенном коде для сдвига используется значение <Глобальный габарит по оси + offset>, где offset - переменная с произвольным сдвигом (чтобы "виды" не сливались). Гарантировать работу скрипта не могу, т.к. восьмерки у меня нет. Надеюсь, что помог, если не кодом, то советом.
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
andronf (15.12.2017), maxgmv (15.12.2017), PravCom (03.03.2022), roollz (14.12.2017)
Старый 14.12.2017, 23:55   #946
roollz
Пользователь
 
Регистрация: 25.12.2013
Адрес: Глухов
Сообщений: 41
Сказал(а) спасибо: 40
Поблагодарили 45 раз(а) в 15 сообщениях
Вес репутации: 139
roollz на пути к лучшему
Хорошо

Спасибо. Так совсем другое дело. Не могу только понять почему иногда профильный вид все равно получается не с права а с лева. Но все равно результат меня более чем устраевает. Я все это затеял чтобы потом другой, сторонний скрипт(кликер) копировал мне эти блоки поштучно на листы.
roollz вне форума   Ответить с цитированием Вверх
Старый 15.12.2017, 14:24   #947
roollz
Пользователь
 
Регистрация: 25.12.2013
Адрес: Глухов
Сообщений: 41
Сказал(а) спасибо: 40
Поблагодарили 45 раз(а) в 15 сообщениях
Вес репутации: 139
roollz на пути к лучшему
По умолчанию

Цитата:
Сообщение от Letos Посмотреть сообщение
Как-то так:

Код

Код:
var B = Model.Selected;
var selGab = B.NToGlobal(B.GSize);
var offset = 150;

var D = AddCopy(B)
//сдвиг на нужный "вид"
D.Translate({x: 0,
             y: -(selGab.x + offset),
             z: 0
})
D.RotateX(90)

var C = AddCopy(B)
//сдвиг на нужный "вид"
C.Translate({x: selGab.y + offset,
             y: 0,
             z: 0
})
C.RotateY(90)

var U = AddCopy(B)
U.Translate({x: selGab.y + offset,
             y: -(selGab.x + offset),
             z: 0
})
U.RotateY(-20)
U.RotateX(20)

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

В чем суть: для получения "видов" Вам нужно еще сдвигать копии на нужное расстояние. В приведенном коде для сдвига используется значение <Глобальный габарит по оси + offset>, где offset - переменная с произвольным сдвигом (чтобы "виды" не сливались). Гарантировать работу скрипта не могу, т.к. восьмерки у меня нет. Надеюсь, что помог, если не кодом, то советом.

Код четко работает с панелями. Но в случае с блоками, при повороте самого блока, ось вращения берется не понятно от куда (мне не понятно). При чем зависит ось поворота от того места где блок был создан.
Поэтому после поворота профильный вид оказывается с лева.
Думаю что тут при повороте нужно использовать не просто Rotate, а Rotate вдоль определенной оси. Только вот беда, как эту ось задать правильно.

Последний раз редактировалось AlexBolton; 16.12.2017 в 11:58. Причина: публиковать - "превью с увеличением по клику"
roollz вне форума   Ответить с цитированием Вверх
Старый 15.12.2017, 14:55   #948
Letos
Консультант
 
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
Letos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордитсяLetos за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от roollz Посмотреть сообщение
Код четко работает с панелями. Но в случае с блоками, при повороте самого блока, ось вращения берется не понятно от куда (мне не понятно). При чем зависит ось поворота от того места где блок был создан.
Поэтому после поворота профильный вид оказывается с лева.
Думаю что тут при повороте нужно использовать не просто Rotate, а Rotate вдоль определенной оси. Только вот беда, как эту ось задать правильно.
Скорее всего вращение происходит относительно ЛСК (которая может начинаться и быть направлена как угодно). Попробуйте заменить функцию поворота на
Код:
D.RotateGCS(AxisX, 90)
Где:
  • D - объект, который нужно повернуть;
  • AxisX/AxisY/AxisZ - ось вращения в ГСК.

    Если AxisX/AxisY/AxisZ не объявлен

    Если не работает ,то объявлять объект вектора:
    Код:
    var AxisX = {
        x: 1,
        y: 0,
        z: 0
    }
    [свернуть]
  • 90 - необходимый угол поворота

Добавлено через 12 минут
UPD: вот еще одно решение. Возможно, более грамотное:
Код:
var D = AddCopy(B)
//сдвиг на нужный "вид"
D.TranslateGCS({x: 0,
                y: -(selGab.x + offset),
                z: 0
})
var axis = D.NToObject(AxisX)
D.Rotate(axis, 90)
Что исправлено:
  1. Сдвиг относительно ГСК
  2. Преобразование оси поворота из глобальной в локальную
Letos вне форума   Ответить с цитированием Вверх
4 пользователя(ей) сказали cпасибо:
maxgmv (15.12.2017), Ovsyanicov (15.12.2017), PravCom (03.03.2022), roollz (15.12.2017)
Старый 16.12.2017, 11:52   #949
roollz
Пользователь
 
Регистрация: 25.12.2013
Адрес: Глухов
Сообщений: 41
Сказал(а) спасибо: 40
Поблагодарили 45 раз(а) в 15 сообщениях
Вес репутации: 139
roollz на пути к лучшему
По умолчанию

Огромное спасибо за помощь. Но то ли я что то не правильно делаю, то ли с блоками это как то по другому работает.

может нужно сначала повернуть копию, а потом сдвигать ее относительно GMax / GMin?

Так и не нашел решения как вращать блок вокруг заданной оси. Решил просто задавать координаты копиям.

Код:
B = Model.Selected;
OFSET=400

D = AddCopy(B)
D.RotateX(90)
D.PositionY= B.GabMin.y-OFSET

C=AddCopy(B)
C.RotateY(90)
C.PositionX= B.GabMax.x+OFSET

U=AddCopy(B)
U.RotateY(-20)
U.RotateX(20)
U.Translate({x: B.GSize.x*2+OFSET*2+B.GSize.z,
             y: 0,
             z: 0
})


UnSelectAll();

Последний раз редактировалось AlexBolton; 16.12.2017 в 12:01. Причина: публиковать - "превью с увеличением по клику" + оформлять код
roollz вне форума   Ответить с цитированием Вверх
Старый 21.12.2017, 01:39   #950
Olic 71
Новичок
 
Регистрация: 24.03.2016
Сообщений: 11
Сказал(а) спасибо: 4
Поблагодарили 93 раз(а) в 7 сообщениях
Вес репутации: 0
Olic 71 скоро придёт к известности
По умолчанию

Делал для себя может кому пригодится.
Вложения
Тип файла: rar Тумба нижняя дверь.rar (36.8 Кб, 85 просмотров)
Olic 71 вне форума   Ответить с цитированием Вверх
7 пользователя(ей) сказали cпасибо:
Ответ

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


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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 9 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1442 04.04.2024 11:28
БАЗИС 9 nayrogi Базис-мебельщик 9 785 01.10.2022 23:13
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


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


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

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