|
|
|
|
|
06.06.2017, 08:56
|
|
БАЗИС 10 - Скрипты
systland
VIP
Регистрация: 30.10.2007
Адрес: Москва
Сообщений: 565
Сказал(а) спасибо: 303
Поблагодарили 451 раз(а) в 189 сообщениях
06.06.2017, 08:56
Рейтинг:
()
Обмениваемся , задаем вопросы, отвечаем... Все, что касается скриптов в БМ 10 в этой теме.
Последний раз редактировалось systland; 26.12.2017 в 11:52..
|
Просмотров: 436246
|
09.02.2018, 09:39
|
#91
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Sergenald
у меня кнопка "редактировать" появлялась только если модель создаётся в параметрическом блоке:
Скрытый текст
korp = BeginParametricBlock("Корпус");
//создание панелей
EndParametricBlock(); [свернуть]
|
Тогда если редактировать модель, лучше сделать так:
PHP код:
//если существует блок (скрипт запущен на редактирование)
// то выбираем его.
if (ParametricBlock)
korp = ParametricBlock;
// иначе создаем редактируемый блок
else
korp = BeginParametricBlock("Корпус");
//создание панелей
EndParametricBlock();
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
09.02.2018, 13:07
|
#92
|
Новичок
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
|
Только я решил что разобрался с установкой схем фурнитуры, как пошло поехало. Цель - закрепить заднюю стенку гвоздями в торцы корпуса.
Я попробовал установить вручную, порядок такой - выделить заднюю стенку, выделить верхнюю панель. Согласно этому написал команду:
Window1.BackSheme.Value.MountScheme(BackPanel,TopP anel,FurniturePosition.Inside,NewVector(0,0,0));
Но увы
https://ibb.co/jiCoac
пробовал менять панели местами, менять в разных вариациях расположение фурнитуры и базовых точек, но результат всё время как на первом изображении.
Тогда решил делать костыли:
IDontKnowWhatImDoing =
Window1.BackSheme.Value.MountScheme(BackPanel,TopP anel,FurniturePosition.Inside,NewVector(0,0,0));
IDontKnowWhatImDoing.Rotate(Axis_X,90);
И да, я просто их развернул, что кстати почти сработало
https://ibb.co/mBoGTx
https://ibb.co/m5hX1H
Осталось их немного задвинуть, а именно:
IDontKnowWhatImDoing = Window1.BackSheme.Value.MountScheme(BackPanel,TopP anel,FurniturePosition.Inside,NewVector(0,0,0));
IDontKnowWhatImDoing.Rotate(Axis_X,90);
IDontKnowWhatImDoing.Translate(0,(TopPanel.Thickne ss)/2,15);
И вроде получилось
https://ibb.co/coms1H
Но назрел вопрос: как установить гвоздь, созданный фурнитурой типа "установка на плоскость" так, чтобы он проходил через пласть фронтальной панели в торец горизонтальной, без всех дополнительных поворотов и мытарств?
Последний раз редактировалось Sergenald; 09.02.2018 в 13:09.
Причина: не отображаются изображения
|
|
|
09.02.2018, 15:03
|
#93
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Sergenald
Но назрел вопрос: как установить гвоздь, созданный фурнитурой типа "установка на плоскость" так, чтобы он проходил через пласть фронтальной панели в торец горизонтальной, без всех дополнительных поворотов и мытарств?
|
Думаю, самый простой способ - это создать гвоздь для установки "по пласти одной и торцу другой панели", как евровинт. Но если вам принципиально нужен гвоздь для установки "на плоскость панели", то тут, думаю, без костылей не обойтись.
|
|
|
09.02.2018, 15:24
|
#94
|
Новичок
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
|
Досадно что руками всё нормально ставится, а в скрипте приходится велосипеды из костылей склеивать. Ещё эта точка базовая меняться не хочет, часа 2 уже с ней борюсь. Вот щит верхний - горизонтальная панель и стенка левая боковая - вертикальная панель. К симметричной схеме вопросов нет, схема с отступом ставит отступ от задней стенки и всё тут. По идее же изменение происходит по z. Если в ГСК задавать, либо по х, если в ЛСК. Я уже задавал координаты точек в ГСК потом в ЛСК, потом значения выходящие за границы панелей, не выходящие, рандомные координаты... И вообще ни чего, даже на миллиметр, ни разу не шелохнулось, аж раздражает, да хоть неправильно отстраивалась бы, а то вообще ни чего, как встала так и стоит.
|
|
|
12.02.2018, 08:15
|
#95
|
Новичок
Регистрация: 03.04.2016
Адрес: Бронницы
Сообщений: 19
Сказал(а) спасибо: 4
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Всем привет.
В 9-ой версии Базиса можно было зашифровать текст скрипта.
В 10-ке - уже не получается тем же методом: весь текст просто удаляется.
Подскажите, пожалуйста, в чем может быть причина?
Заранее спасибо!
|
|
|
13.02.2018, 14:19
|
#96
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от alexrain
Всем привет.
В 9-ой версии Базиса можно было зашифровать текст скрипта.
В 10-ке - уже не получается тем же методом: весь текст просто удаляется.
Подскажите, пожалуйста, в чем может быть причина?
Заранее спасибо!
|
Причина в разрабах - это просто не работает(( Хотя вроде обещают поправить в будущем.
|
|
|
Пользователь сказал cпасибо:
|
|
14.02.2018, 16:47
|
#97
|
Новичок
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
|
Объясните пожалуйста, что я делаю не так?
Вот код для добавления дух панелей и установки на них схемы крепежа:
Скрытый текст
var p1 = AddHorizPanel(0,0,1000,1000,1000);
var p2 = AddVertPanel(0,0,1000,p1.GabMin.y,0);
if (p1 && p2){
Action.Continue();
var scheme = Action.Properties.NewFurniture('схема');
scheme.OnChange = function (){
scheme.Value.MountScheme(p1, p2, FurniturePosition.Inside, NewVector(0, 0, 0));
Action.Finish();
}
} [свернуть]
при установке на них схемы с отступом с одного края, отступ проставляется от 0,0,0... как в целом и указано в векторе.
НО, если я хочу что бы отступ проставлялся с другой стороны, то я задаю координаты такие:
Скрытый текст
var p1 = AddHorizPanel(0,0,1000,1000,1000);
var p2 = AddVertPanel(0,0,1000,p1.GabMin.y,0);
if (p1 && p2){
Action.Continue();
var scheme = Action.Properties.NewFurniture('схема');
scheme.OnChange = function (){
scheme.Value.MountScheme(p1, p2, FurniturePosition.Inside, NewVector(p2.GabMax.x, p2.GabMax.y, p2.GabMax.z));
Action.Finish();
}
} [свернуть]
но это вообще ни как не влияет на схему, она продолжает строиться от 0,0,0.
Как её отстроить от другой стороны?
|
|
|
15.02.2018, 09:21
|
#98
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Sergenald
Объясните пожалуйста, что я делаю не так?
Вот код для добавления дух панелей и установки на них схемы крепежа:
Скрытый текст
var p1 = AddHorizPanel(0,0,1000,1000,1000);
var p2 = AddVertPanel(0,0,1000,p1.GabMin.y,0);
if (p1 && p2){
Action.Continue();
var scheme = Action.Properties.NewFurniture('схема');
scheme.OnChange = function (){
scheme.Value.MountScheme(p1, p2, FurniturePosition.Inside, NewVector(0, 0, 0));
Action.Finish();
}
} [свернуть]
при установке на них схемы с отступом с одного края, отступ проставляется от 0,0,0... как в целом и указано в векторе.
НО, если я хочу что бы отступ проставлялся с другой стороны, то я задаю координаты такие:
Скрытый текст
var p1 = AddHorizPanel(0,0,1000,1000,1000);
var p2 = AddVertPanel(0,0,1000,p1.GabMin.y,0);
if (p1 && p2){
Action.Continue();
var scheme = Action.Properties.NewFurniture('схема');
scheme.OnChange = function (){
scheme.Value.MountScheme(p1, p2, FurniturePosition.Inside, NewVector(p2.GabMax.x, p2.GabMax.y, p2.GabMax.z));
Action.Finish();
}
} [свернуть]
но это вообще ни как не влияет на схему, она продолжает строиться от 0,0,0.
Как её отстроить от другой стороны?
|
Думаю, проблема та же, что и с шифрованием кода - это косяк самих скриптов. Было бы в скриптах эластичное растягивание - можно было бы написать костыль. А так остается только ждать исправления.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
19.02.2018, 16:01
|
#99
|
Новичок
Регистрация: 21.09.2017
Сообщений: 19
Сказал(а) спасибо: 15
Поблагодарили 4 раз(а) в 2 сообщениях
Вес репутации: 0
|
Вопрос по созданию формы.
На форме есть статическая группа "Group1", которая есть всегда и ни как не меняется.
Так же есть кнопка, при нажатии на которую в Group1 добавляется группа с какими-то вложенными свойствами. При каждом нажатии на кнопку со смещением добавляется новая группа в Group1 так, что новая группа создаётся под старой. Для этого использую свойство Count. (к примеру windows1.Group1.Count) И получаю количество уже отрисованных групп, умножая на высоту группы, получаю координату отрисовки новой группы.
НО, появилась надобность их удалять. И тут я попал в тупик. Я получаю список созданных групп свойством Items. Но как из него удалить элемент мне не ясно. Есть ли такой функционал в скриптах базиса?
Вот костыли что пришли в голову:
Мысль 1: Сохранять все группы в массив. При нажатии на удаление вызывать свойство Group1.Clear, за тем отрисовать обратно всё сохранённое. Тогда как добавить обратно в окно сохранённые группы? Или же не обратно, а добавлять новые группы по длине массива, а потом перезаписать их в массив... НО, возможно, это будет достаточно долго выполняться на большом количестве упаковок.
Мысль 2: Не делать привязку к Items, создавать новые упаковки основываясь на своём счётчике в переменной, удаляемые группы просто скрывать... Но если очень постараться, то можно создать ненароком пару десятков групп и потом работать в подлагивающем окне.
Мысль 3: Создавать группы не в том же окне, а в маленьких новых окнах, так же смещая их по координатам, тогда на каждом окошке будет по своей кнопке удалить, тогда закрытие окна будет значить удаление упаковки, которое можно отслеживать массивом задавая окнам какие-то ID... Но не слишком ли много окон?
|
|
|
19.02.2018, 16:55
|
#100
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Sergenald
Вопрос по созданию формы.
На форме есть статическая группа "Group1", которая есть всегда и ни как не меняется.
Так же есть кнопка, при нажатии на которую в Group1 добавляется группа с какими-то вложенными свойствами. При каждом нажатии на кнопку со смещением добавляется новая группа в Group1 так, что новая группа создаётся под старой. Для этого использую свойство Count. (к примеру windows1.Group1.Count) И получаю количество уже отрисованных групп, умножая на высоту группы, получаю координату отрисовки новой группы.
НО, появилась надобность их удалять. И тут я попал в тупик. Я получаю список созданных групп свойством Items. Но как из него удалить элемент мне не ясно. Есть ли такой функционал в скриптах базиса?
Вот костыли что пришли в голову:
Мысль 1: Сохранять все группы в массив. При нажатии на удаление вызывать свойство Group1.Clear, за тем отрисовать обратно всё сохранённое. Тогда как добавить обратно в окно сохранённые группы? Или же не обратно, а добавлять новые группы по длине массива, а потом перезаписать их в массив... НО, возможно, это будет достаточно долго выполняться на большом количестве упаковок.
Мысль 2: Не делать привязку к Items, создавать новые упаковки основываясь на своём счётчике в переменной, удаляемые группы просто скрывать... Но если очень постараться, то можно создать ненароком пару десятков групп и потом работать в подлагивающем окне.
Мысль 3: Создавать группы не в том же окне, а в маленьких новых окнах, так же смещая их по координатам, тогда на каждом окошке будет по своей кнопке удалить, тогда закрытие окна будет значить удаление упаковки, которое можно отслеживать массивом задавая окнам какие-то ID... Но не слишком ли много окон?
|
Вот такая вот вещь "изобрелась":
Код:
btn.Owner.DeleteSelf();
Window1.Group1.Visible = false;
Window1.Group1.Visible = true;
Где
1. btn.Owner - группа, которую нужно удалить
2. Window1.Group1 - статическая группа, содержащая добавляемые/удаляемые группы.
Смена видимости у статической группы нужна для перерисовки группы (автоматически почему-то не делается), после которой удаляется убранная группа.
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 09:27. Часовой пояс GMT +3.
|