|
|
|
|
|
13.01.2014, 13:22
|
|
БАЗИС 9 - Скрипты
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
13.01.2014, 13:22
Рейтинг:
()
ВНИМАНИЕ! Правила выкладывания скриптов.
1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.
2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.
Т.к. при запуске скрипта на другом компе возникает ошибка о не возможности открыть то или иной файл и скрипт до конца не отрабатывает свой текст. Не соблюдается "чистота проверки" работы скрипта.
__________________________________________________ _______________
Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.
Для работы скриптов от Igor_482 необходим установленный ODBC драйвер FireBird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX, MSCOMCTL.OCX и MSSTDFMT.DLL ( сообщение с описанием установки этих модулей в ОС, ссылка на модули и исходник "FBDBDialog.dll") а так же файл "ADODB.ini" с настройками соединения к БД в папке со скриптом.
ADODB.ini
[General]
FDBServ = t001
FBSPort = 14357
FDBFile = D:\DBBM\Библиотека\БД\BMDB09.FDB
FBCFile = C:\Windows\System32\fbclient.dll
----------------------------------------------
Переменные .ini:
FDBServ - имя ПК на котором находится сервер FireBird с используемой БД (если локально, то параметр: localhost или 127.0.0.1);
FBSPort - в настройке не нуждается (по умолчанию: 14357);
FDBFile - локальный путь к БД на сервере FireBird;
FBCFile - путь к файлу "fbclient.dll" (находится в корневой папке программы Базис).
[свернуть]
Последний раз редактировалось systland; 23.09.2016 в 11:52..
|
Просмотров: 996804
|
Пользователь сказал cпасибо:
|
|
30.09.2015, 10:14
|
#901
|
Местный
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
|
Скрипт использует схему из файла Schemes.config из папки, в которой лежит скрипт. Выложил скрипты со всеми дополнительными файлами в архиве.
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
30.09.2015, 10:20
|
#902
|
VIP
Регистрация: 11.07.2008
Сообщений: 1,019
Сказал(а) спасибо: 261
Поблагодарили 314 раз(а) в 143 сообщениях
Вес репутации: 357
|
Цитата:
Сообщение от Briz
Скрипт использует схему из файла Schemes.config из папки, в которой лежит скрипт. Выложил скрипты со всеми дополнительными файлами в архиве.
|
Спасибо, начал копать уже туда (догадался про пути...)
Как все стало интересно со схемами крепежа!!!! Опять бессонные ночи....
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
30.09.2015, 12:11
|
#903
|
Местный
Регистрация: 16.11.2011
Адрес: Москва / Пенза
Сообщений: 1,135
Сказал(а) спасибо: 307
Поблагодарили 1,257 раз(а) в 524 сообщениях
Вес репутации: 516
|
Цитата:
Сообщение от Briz
Да, последние обновления девятки умеют и работать с существующими схемами крепежа и создавать новые.
|
Скажите, а у вас нет данных по всем новшествам в скриптах, а то в шапке последние изменения - тем годом...
__________________
Нахожусь в режиме поиска интересных задач, связанных с Базисом. Москва, 2015.
|
|
|
30.09.2015, 14:18
|
#904
|
Местный
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
|
В принципе все нововведния доступны по нажатию Ctrl+Пробел. Там можно найти следующие функции:
Работа со схемами фурнитуры:
OpenFurnitureScheme: new HDefinition("?FurnitureScheme:'File.config','Имя схемы'", 'Открыть схему установки крепежа'),
OpenFurnitureSchemes: new HDefinition("?FurnitureSchemes:'File.config'", 'Открыть список схем установки крепежа'),
NewFurnitureScheme: new HDefinition("?FurnitureScheme:'Имя схемы'", 'Создать схему установки крепежа'),
NewParamFastenerDB: new HDefinition("?ScriptParamFastenerDB:", 'Создать базу параметрического крепежа'),
Мастера дверей и ящиков:
NewDoorsMaker : new HDefinition('?DoorsMaker:"Мастер установки дверей"', 'Создать мастер установки дверей'),
NewBoxesMaker : new HDefinition('?BoxesMaker:"Мастер установки ящиков"', 'Создать мастер установки ящиков')
Работа с крепежом:
Object.FindConnectedFasteners: new HDefinition("?Array.<Object3>:Obj", 'Получить список общего крепежа на двух панелях'),
Работа с эластичными блоками:
IsElastic: new HDefinition("?Boolean:", 'Являетсяли объект эластичным'),
ElasticResize: new HDefinition("?Vector:newSize", 'Растянуть объект до требуемых размеров'),
И конечно добавлена возможность создания произвольных диалогов - эта функция доступно в меню "Формы"
Для того, чтобы писать скрипты под разные версии Базиса изменилось значение свойства system.apiVersion. Теперь оно равно 90.
|
|
|
6 пользователя(ей) сказали cпасибо:
|
|
02.10.2015, 16:53
|
#905
|
Местный
Регистрация: 16.11.2011
Адрес: Москва / Пенза
Сообщений: 1,135
Сказал(а) спасибо: 307
Поблагодарили 1,257 раз(а) в 524 сообщениях
Вес репутации: 516
|
Цитата:
Сообщение от Briz
В принципе все нововведния доступны по нажатию Ctrl+Пробел. Там можно найти следующие функции
|
Вот только
для Obj.Position - выдает подсказку, что это позиция объекта
а на Obj.Rotation - пусто... а работает.
Т.е. CTRL+SPACE - содержит так же не все... как и справочник.
Да и одно дело, когда это в справочнике, и другое, когда изменения отдельно описаны, что они вообще есть.
То есть каждый раз сверять списки, что что-то новое появилось? Выгружать данные об модели, чтоб понять чем расширили? Ерундистика какая-то. Позиция БЦ вообще не понятно в этом плане. Их же не просят скрипты писать самих, их просят инфу по ним выдавать, но нет - секретная, блин...
__________________
Нахожусь в режиме поиска интересных задач, связанных с Базисом. Москва, 2015.
|
|
|
06.10.2015, 16:51
|
#906
|
Местный
Регистрация: 16.11.2011
Адрес: Москва / Пенза
Сообщений: 1,135
Сказал(а) спасибо: 307
Поблагодарили 1,257 раз(а) в 524 сообщениях
Вес репутации: 516
|
Цитата:
Сообщение от Am0ralist
для Obj.Position - выдает подсказку, что это позиция объекта
|
Причем, это всё это - ложь, пи***ж и провокация (с)
Это какие-то циферки, которые к реальному "положению" панели часто имеют мало отношения.
Вот, берем две панельки
Две панельки.zip
поочередно выделяем их и запускаем примитивнейший скрипт
Скрипт
Obj = Model.Selected;
if (Obj)
Obj = Obj.AsPanel;
alert(Obj.PositionX + ' ' + Obj.PositionY + ' ' + Obj.PositionZ); [свернуть]
Что видим? Просто повторение циферок из соответствующих полей координат.
То есть расстояния до условной какой-то точки, относительно которой контур панели может быть смещен как угодно от слова совсем, ну разве что смещения по условной оси 0z, т.е. по толщине, я не наблюдаю, что не значит что и таких панелей не бывает.
Разница, надеюсь, понятная всем?
То есть по хорошему надо еще проверять, что координаты GMin по осям 0x, 0y и 0z равны 0... И предусматривать в алгоритмах коррекцию на такие случаи.
И да, такие панели результат не только "ручного" вмешательства в контуры панелей, а и вполне себе работы "мастеров" параметрического построения в Базисе.
__________________
Нахожусь в режиме поиска интересных задач, связанных с Базисом. Москва, 2015.
|
|
|
Пользователь сказал cпасибо:
|
|
07.10.2015, 11:43
|
#907
|
Пользователь
Регистрация: 26.09.2014
Сообщений: 46
Сказал(а) спасибо: 55
Поблагодарили 15 раз(а) в 5 сообщениях
Вес репутации: 124
|
Народ подскажите новичку как скриптом реализовать следующее:
1. Скрипт находит в изделии все пазы под ДВП (ХДФ)
2. Затем подрезает их на нужный мне размер по длине
или
1. Скрипт наносит сразу пазы на все выделенные панели с нужной мне подрезкой.
Надеюсь кто-нибудь откликнется, спасибо!
|
|
|
07.10.2015, 15:48
|
#908
|
Местный
Регистрация: 16.11.2011
Адрес: Москва / Пенза
Сообщений: 1,135
Сказал(а) спасибо: 307
Поблагодарили 1,257 раз(а) в 524 сообщениях
Вес репутации: 516
|
Вопрос на засыпку:
Есть панель, вложенная в блок, который вложен еще в один блок.
Панель в модели повернута:
вокруг оси 0z на K1 градусов и вокруг оси, параллельной 0x на K2 градусов.
Причем по факту поворачиваться могла не сама панель, а блоки, содержащие ее, причем каждый по отдельности.
То есть по факту у нас три "ротации" в пространстве вокруг произвольных векторов
Как создать панель, которая будет расположена там же, где исходная панель (но не входящую в эти блоки), но при этом которую мы хотим повернуть ее еще вокруг локальной оси 0z панели?
То есть как "суммировать" все значения "ротации" блоков и произвольной панели, плюс "ротацию" самой панели?
Да, у объектов (панели, блоков и т.п.) есть свойство Rotation (которого нет на в справочнике, ни в контекстной справке), но это свойство - лишь в локальной системе координат, и аналогичного в глобальной системе координат - нет.
"Суммировать" напрямую Rotation двух объектов не получается...
__________________
Нахожусь в режиме поиска интересных задач, связанных с Базисом. Москва, 2015.
|
|
|
07.10.2015, 16:47
|
#909
|
Местный
Регистрация: 30.11.2011
Сообщений: 283
Сказал(а) спасибо: 275
Поблагодарили 803 раз(а) в 179 сообщениях
Вес репутации: 358
|
Цитата:
Сообщение от Am0ralist
То есть как "суммировать" все значения "ротации" блоков и произвольной панели, плюс "ротацию" самой панели?
|
Имеем:
LocalMatrix - поворот и смещение панели относительно родителя
GlobalMatrix - поворот и смещение панели относительно всей модели
PHP код:
NewPanel.LocalMatrix = OldPanel.GlobalMatrix;
Добавлено через 9 минут
Цитата:
Сообщение от fanest
Народ подскажите новичку как скриптом реализовать следующее:
1. Скрипт находит в изделии все пазы под ДВП (ХДФ)
2. Затем подрезает их на нужный мне размер по длине
или
1. Скрипт наносит сразу пазы на все выделенные панели с нужной мне подрезкой.
Надеюсь кто-нибудь откликнется, спасибо!
|
Взять и подрезать пазы можно так, а нанести пазы еще проще - просто идити по выделнным панелям, смотрите скрипты в поставке
PHP код:
Model.forEachPanel(function(Obj) {
if (Obj.Cuts) {
for(var k = 0; k < Obj.Cuts.Count; k++) {
Cut = Obj.Cuts[k];
if (Cut.Contour.Width < 3.5) {
Min = Cut.Trajectory.Min;
Max = Cut.Trajectory.Max;
Min.y -= 2;
Max.y += 2;
Cut.Trajectory.Fit(Min.x, Min.y, Max.x, Max.y);
}
}
Obj.Build();
}
});
|
|
|
6 пользователя(ей) сказали cпасибо:
|
|
07.10.2015, 16:57
|
#910
|
Местный
Регистрация: 16.11.2011
Адрес: Москва / Пенза
Сообщений: 1,135
Сказал(а) спасибо: 307
Поблагодарили 1,257 раз(а) в 524 сообщениях
Вес репутации: 516
|
Цитата:
Сообщение от Briz
Имеем:
LocalMatrix - поворот и смещение панели относительно родителя
GlobalMatrix - поворот и смещение панели относительно всей модели
PHP код:
NewPanel.LocalMatrix = OldPanel.GlobalMatrix;
|
Офигеть, дайте два
Ну вот нет этих данных ни по Ctrl+Space, ни в справочнике *.chm...
__________________
Нахожусь в режиме поиска интересных задач, связанных с Базисом. Москва, 2015.
|
|
|
Пользователь сказал cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 19:50. Часовой пояс GMT +3.
|