|
|
|
|
|
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..
|
Просмотров: 425184
|
20.06.2020, 01:49
|
#531
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Максим Геннадьевич
Не поделитесь демо версией? Перерыл интернет, но так и не нашел
|
Видел сообщения в соседней теме. Действительно, последний оф. релиз, судя по новостям на сайте базиса - декабрь 2018 года. Не помню уже как ко мне такая версия попала, но она у меня только на рабочем компе, и установщик на компе я почему-то не нашёл.
Дома стоит 10.3.0.24187 от 11.05.2018, но и в ней скрипт работает нормально. Может модель/фурнитура специфическая нужна, чтобы воспроизвести проблему?
Кстати, в редакторе скриптов лог никаких ошибок не показывает?
|
|
|
20.06.2020, 09:09
|
#532
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Максим Геннадьевич
У меня не работает или вообще не работает. Пытаюсь установить фурнитуру через Mount , но не срабатывает именно в 10 версии. Подскажите в чем может быть дело.
|
у меня тоже это не работает в БМ 10. возможно стоит попробовать:
1. Если на машине рядом стоят БМ10 и БМ11 -попробовать удалить БМ 11.
2.попробовать переписать код синхронно- попробовать в работе.
left.Build(); -это строка ничего не делает насколько понимаю.
|
|
|
20.06.2020, 09:56
|
#533
|
Местный
Регистрация: 11.04.2018
Адрес: г.Маркс
Сообщений: 162
Сказал(а) спасибо: 57
Поблагодарили 242 раз(а) в 45 сообщениях
Вес репутации: 137
|
Цитата:
Сообщение от Letos
Кстати, в редакторе скриптов лог никаких ошибок не показывает?
|
В том и беда, что в логе никаких ошибок не показывает.
Цитата:
Сообщение от IStiv
1. Если на машине рядом стоят БМ10 и БМ11 -попробовать удалить БМ 11.
|
С удалением вариант не сработал
Цитата:
Сообщение от IStiv
2.попробовать переписать код синхронно- попробовать в работе.
|
Не пойму как это синхронно переписать
Цитата:
Сообщение от IStiv
left.Build(); -это строка ничего не делает насколько понимаю
|
Осталась от старого кода.
А вот так работает
PHP код:
var FileOptions = 'Save.xml'; // var left = GetPanel("Укажите левую панель");
var prop = Action.Properties; var blockMat = prop.NewMaterial('Материал'); var blockFurn = blockMat.NewFurniture('Крепеж');
NewBtn = NewButtonInput('Закончить'); NewBtn.OnChange = function() { Action.Commit(); Action.Finish(); }
prop.OnChange = function() { MakeShelf(); }
function MakeShelf(){ DeleteNewObjects(); var left = AddVertPanel(0, 0, 400, 800, 0) ; left.Build(); var pan = AddHorizPanel(left.GabMax.x, 0, 400, 400, 500); pan.Build(); blockFurn.Value.Mount( pan,left, left.GabMax.x, 508, 200); } MakeShelf(); Action.Continue();
Есть вариант завершения выполнения GetPanel? Думаю тут собака зарыта
|
|
|
21.06.2020, 09:51
|
#534
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Максим Геннадьевич
В том и беда, что в логе никаких ошибок не показывает.
|
в отладчике иногда выдавал ошибку доступа к памяти
Цитата:
Сообщение от Максим Геннадьевич
Не пойму как это синхронно переписать
|
имею ввиду:
без кнопок загружая какую то определенную фурнитуру и создавая панели скриптом, потом добавили выбор панели, потом одну кнопку, потом другую.
так постепенно усложняя можно найти проблемное место.
ну так как идея, я бы так искал.
|
|
|
27.06.2020, 11:18
|
#535
|
Пользователь
Регистрация: 01.01.2020
Сообщений: 30
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
|
День добрый. Подскажи плиз, как вывести инфу из массива? Ну или вообще список на экран? Если запускаю код в редакторе по F5, все работает. А обычный запуск ничего не выводит. Хочу чтобы при сохранении модели запускалась проверка и выводила , что забыл сделать. infomsg тоже не работает.
Код:
var panel;
csvRows = [];
var counter = 1;
Model.forEachPanel((panel)=>{
t = panel.Butts.Count;
if t<4 {
if panel.Name=="Дно" {
csvRows.push('Добавить ПРОПИЛ ' + panel.Name+' поз '+ panel.ArtPos);
}
if panel.Name=="Декоративная планка" {
csvRows.push('Без кромок ' + panel.Name+' поз '+ panel.ArtPos);
}
}
});
alert(csvRows.join('\n'));
|
|
|
28.06.2020, 08:08
|
#536
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от Funman
Подскажи плиз, как вывести инфу из массива?
|
перебрать массив и вывести каждый элемент.
Цитата:
Сообщение от Funman
Если запускаю код в редакторе по F5
|
скорее плохо что этот код работает, чем хорошо).
внизу вариант с выводом в alert.
и то там есть что улучшить.
PHP код:
var panel;
var csvRows = [];
var buttCount;
Model.forEachPanel((panel) => {
buttCount = panel.Butts.Count;
if (buttCount < 4) {
if ( panel.Name == "Дно") {
csvRows.push("Добавить ПРОПИЛ " + panel.Name + " поз " + panel.ArtPos + "\n");
}
if (panel.Name == "Декоративная планка") {
csvRows.push("Без кромок " + panel.Name + " поз " + panel.ArtPos + "\n");
}
}
});
if (csvRows.length > 0) {
alert(csvRows);
}
|
|
|
Пользователь сказал cпасибо:
|
|
28.06.2020, 10:09
|
#537
|
Пользователь
Регистрация: 01.01.2020
Сообщений: 30
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
|
Супер, сравню два варианта,попытаюсь понять в чем ошибка.
Если не сложно, подскажите как определить наличие отверстий в торце и на пласти и как получить их координаты относительно краев панели?
|
|
|
28.06.2020, 15:12
|
#538
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Funman
День добрый. Подскажи плиз, как вывести инфу из массива? Ну или вообще список на экран? Если запускаю код в редакторе по F5, все работает. А обычный запуск ничего не выводит. Хочу чтобы при сохранении модели запускалась проверка и выводила , что забыл сделать. infomsg тоже не работает.
Код:
var panel;
csvRows = [];
var counter = 1;
Model.forEachPanel((panel)=>{
t = panel.Butts.Count;
if t<4 {
if panel.Name=="Дно" {
csvRows.push('Добавить ПРОПИЛ ' + panel.Name+' поз '+ panel.ArtPos);
}
if panel.Name=="Декоративная планка" {
csvRows.push('Без кромок ' + panel.Name+' поз '+ panel.ArtPos);
}
}
});
alert(csvRows.join('\n'));
|
if (t<4 ) {
В остальных условиях так же - все условия должны заключаться в скобки. Есть такая бага (фича?) в редакторе скриптов - он почему-то не считает этот код ошибочным и выполняет его, хотя там из-за отсутствия скобок в условии скрипт не должен выполняться вообще (синтаксическая ошибка).
|
|
|
28.06.2020, 15:31
|
#539
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,030 раз(а) в 366 сообщениях
Вес репутации: 344
|
Цитата:
Сообщение от Funman
Супер, сравню два варианта,попытаюсь понять в чем ошибка.
Если не сложно, подскажите как определить наличие отверстий в торце и на пласти и как получить их координаты относительно краев панели?
|
Я несколько раз писал на похожие темы. Если кратко - точного (встроенного базисного) метода получения отверстий в панели нет. Можно написать свои, которые с точностью 98% (цифра из головы, но с достаточно большой точностью) будут давать верный ответ. После нахождения отверстия, надо сравнить его ось направления с осью Z панели (естественно, приведя их к одной ЛСК). Если вектора коллинеарны (т.е. направления совпадают или противоположны) - отверстие в пласть, если нет - скорее всего в торец. С координатами чуть посложнее - перевод координат по ссылке ниже описан, а вот "относительно краёв" - понятие относительное. У всех 3д-объектов есть свои положение и поворот в пространстве. Соответственно, минимум (и максимум) панели может находиться как в левом нижнем заднем(правом верхнем переднем) углу панели, так и в совершенно другом месте (даже по центру панели, в зависимости от операций, совершённых при построении и редактировании панели). Если вам нужны абстрагированные значения для прямоугольной панели, можете взять значения Min\Max контура и сравнивать их с положением отверстия, переведённым из ЛСК фурнитуры в ЛСК панели.
Доп информацию можно найти в другом посте (там есть ссылка на ещё один пост).
|
|
|
Пользователь сказал cпасибо:
|
|
28.06.2020, 17:03
|
#540
|
Пользователь
Регистрация: 01.01.2020
Сообщений: 30
Сказал(а) спасибо: 17
Поблагодарили 1 раз в 1 сообщении
Вес репутации: 0
|
Подскажите как из var fasts = panel.FindConnectedFasteners() вытащить список прикрепленной фурнитуры к панели.
alert (fasts.list, fast[i], fast.name) не работают? вижу только object TFastener
|
|
|
|
|
|
Нижняя навигация
|
|
Опции темы |
|
Опции просмотра |
Линейный вид
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 16:54. Часовой пояс GMT +3.
|