Скрыть фасады. Скрыть размеры /Базис мебельщик/
ฝัง
- เผยแพร่เมื่อ 29 พ.ค. 2020
- Как быстро скрыть фасады, скрыть размеры с 3D модели Базис одним махом.
1) Запись макроса
2) Скрипт
---------------------------------------------------------- script -------------------------
Model.forEach(function(obj) {
if (obj.Name == "Размер")
obj.Visible = false;
});
-------------------------------------------------------------------------------------
☝ Полные версии видео на Patreon по подписке ( / obazise )
☝ Таблица - что в подписках на патреоне:
docs.google.com/spreadsheets/...
☝ Опросы мебельщиков:
docs.google.com/spreadsheets/...
-------------------------------------------------------------------------------------
** Тема в соцсетях **
Оставляйте свое мнение в виде лайков, подписок, комментариев и репостов.
Как небольшой вклад в развитие канала.
✅ Patreon: / obazise
✅ Facebook: pg/%D0%91%D0...
✅ Twitter: / tehnik36412507
✅ Instagram: / tehnik_bob
✅ Telegram: t.me/obazise
-------------------------------------------------------------------------------------
#Базис_приемы_работы
Несколько человек спрашивали, как это все скрывать с модели оптом. Примерно так.
Попробуйте в скрипте после obj.Visible = false; поставить obj.Build(); - возможно, модель просто не полностью перерисовывается, такое бывает. Мне не удалось воспроизвести вашу ошибку.
Никогда не дружил с размерами в модели, наверно по тому, что с типовыми модулями практически не работаю и размер, как часть фрагмента (собственно, как и сами фрагменты) мне не актуален, а вручную их на чертежах ставить удобнее. Но вот ваш ролик про управляющие размеры подтолкнул меня к одной нетривиальной мысли, и Остапа, как говорится, понесло. Вся тема едва-ли кому интересна, а вот что касается размеров на модели, как элементов будущего чертежа, то мысль такая. Размеры ведь разные бывают - на общем виде нужны габаритные размеры, на скелете и чертежах модуля внутренние актуальны, на столешнице с фартуком без модулей их размеры ставятся, ну и т.д. Ни что не мешает присвоить размеру имя, соответствующее его типу и скрывать/показывать их в соответствии с текущими задачами. Только управление ими потребуется более гибкое. Обкатывая эту тему, написал несколько простеньких скриптов, может кому понадобится.
Скрыть все размеры, независимо от имени:
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D) {
Obj.Visible = false;
Obj.Build();
}
})
Показать все размеры, независимо от имени:
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D) {
Obj.Visible = true;
Obj.Build();
}
})
Вне зависимости от имени скрывает видимые и показывает скрытые. Этакий реверс:
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D) {
if (Obj.Visible) {
Obj.Visible = false;
Obj.Build();
} else {
Obj.Visible = true;
Obj.Build();
}
}
})
Вне зависимости от имени и состояния видимости при первом запуске приводит все размеры к единому состоянию видимости, при каждом последующем запуске меняет его:
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D) {
if (Obj.Visible) {
ObjVis = false;
} else {
ObjVis = true;
}
}
})
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D) {
Obj.Visible = ObjVis;
Obj.Build();
}
})
Выводит алфавитный список уникальных имен панелей и размеров в модели, выделяет объекты по выбранному имени и позволяет управлять выбранными объектами с помощью кнопок скрипта, горячими клавишами из настроек Базиса, контекстным меню в структуре модели. Его не сложно модернизировать, убрав ненужные кнопки, выделение панелей или создать предопределенный список имен панелей/размеров, с которыми он будет работать. Побочный эффект - использовать для выделения по имени, после выхода выделение не снимается.
Prop = Action.Properties;
List = new Array;
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D || Obj instanceof TFurnPanel) {
if (FindName(Obj)) {
List.push(Obj.Name);
}
}
});
SortList = List.sort();
String = SortList.join("
");
Name = Prop.NewCombo('Элементы', String);
Hide = Prop.NewButton('Скрыть');
Hide.OnClick = function() {
Model.forEach(
function(Obj) {
if (Obj.Name == Name.Value) {
Obj.Visible = 0;
Obj.Build();
}
})
UnSelectAll();
}
Show = Prop.NewButton('Показать');
Show.OnClick = function() {
Model.forEach(
function(Obj) {
if (Obj.Name == Name.Value) {
Obj.Visible = 1;
Obj.Build();
}
})
UnSelectAll();
}
ShowAll = Prop.NewButton('Показать все');
ShowAll.OnClick = function() {
Model.forEach(
function(Obj) {
Obj.Visible = 1;
Obj.Build();
})
UnSelectAll();
}
Exit = Prop.NewButton('Выход');
Exit.OnClick = function() {
Action.Finish()
}
Sel();
Prop.OnChange = function() {
Sel();
}
Action.Continue();
function Sel() {
Model.forEach(
function(Obj) {
if (Obj instanceof TSize3D || Obj instanceof TFurnPanel) {
Obj.Selected = 0;
if (Obj.Name == Name.Value) {
Obj.Selected = 1;
Obj.Build();
}
}
})
}
function FindName(Obj) {
for (k = 0; k < List.length; k++) {
if (List[k] == Obj.Name) {
return 0;
}
}
return 1;
}
товарищ, да вы просто кладезь информации!
кроме Патреона можно бы ло бы повесить реквизиты для поддержки финансами я бы удовольствием закинул за труды 5 копеек
Благодарю Вас за отличные видео. Много актуального и необходимого материала. Продолжайте в том же духе!
Спасибо что так быстро записали видео по этому вопросу) Успехов!
Попала тема под настроение :)
Тоже полезное видео. Спасибо, попробую.
Я тоже "обучил" себя к горячим клавишам и теперь удивляюсь как люди могут без клавиш чертить.
Спасибо за крутую идею. Что касаеться скрипта я его чутка изменил т.к. у меня названия детали ШКаф1.Антресоль. Фасад левый ну или что то в этом духе) Так вот скрипт работать не будет, пишем так и кайфуем, А ну и добавил чтобы эта кнопка возвращала все п.с. есть один баг если один фасад ыбл скрыт а несколько нет то будет их менять местами)) Model.forEach(function(obj){
if (obj.Name.indexOf("Фасад")>-1){
if (obj.Visible == true){
obj.Visible = false;
}
else {
obj.Visible = true;
}
}
});
П.с. Лайк чтобы люди видели и кидай побольше идей спасибо.
Спасибо,очень нужная информация
Спасибо! Отличное видео.
И вам спасибо :)
За скрипты скрыть/отобразить спасибо всем участникам - буду пробовать. Вопрос про виды (ракурсы в модели): как привязать нестандартные для базиса виды справа и снизу к ГК? Переключение через колесо удобно, в принципе, но ГК мне больше нравятся.
Поискать скрипт, у меня под рукой нет.
Выставляешь ракурс модели, смотришь координаты, прописываешь их в скрипт и вешаешь гор.клавишу на запуск скрипта. Несколько таких скриптов-ракурсов.
Вид справа, кстати, функционировал плохо. Для посмотреть хватало, а с замерами расстояний, установкой фурнитуры, что-то не надежно было.
@@tehnik-km Спасибо. Скрипты поищу. Пока что отыскал команду "параллельно плоскости", повесил ее на хоткей - с перспективы неплохо так переключает)
С размерами проблем не было. У меня назначено так: Alt+2 (выделяет все размеры), Alt+s скрывает выделенное. Вот за фасады, большое спасибо. Буду пробовать )))
А для скрытия размеров вы чем пользуетесь, скриптом или есть команда, на которую назначена горячая клавиша.
Вот хороший вариант скрипта. Одно нажатие - скрывает, повторное нажатие - возвращает. Тоесть обходимся оной клавишей для скрыть/показать. Что для размеров, что для фасадов.
Model.forEach(function (obj) {
if (obj.Name == "Размер"){
obj.Visible = !obj.Visible;
}
}
);
Tehnik - Беседы о Базисе благодарочка. Правда скриптами не пользуюсь ))) макросы еще в К3 достали )))
Дякую автору за пізнавальне відео. Нарахунок призначень клавіш і рекордерів - раніше користувався програмою для жестів мишкою - яка працює під віндою. Працював у Pro100 було надзвичайно зручно. Нажаль з новішою версією просто жести перестали працювати. Але бачу є нова версія. Там широкі налаштування. Ну і мишкою (жестом, -при зажатій правік клавіші) - це робити надзвичайно зручно. Кому цікаво, ось посилання на програму.
www.strokesplus.com/
Здравствуйте. Спасибо за ваши уроки. Я только начинаю проектировать. Возник вопрос на счет скриптов и макросов и тут ваше видео. Я скачал конечно скрипт (спасибо всем кто дает направление и возможность учится и развиваться.) ЧИК. Все работает, все скрывает.(пока не знаю как иконку назначить и установить на панель, но позже с этим ) Назначил горячую клавишу "восстановить видимость"- не работает)). В чем может быть подвох? Спасибо.
Интересует другой вопрос. "Макрос" для станка ЧПУ. Столкнулся с такой проблемой. Зажимные цапфы в станке которые держат деталь устанавливаются изначально произвольно и закрывают отверстия на детали (видно на мониторе ЧПУ). Оператор перед запуском программы постоянно смещает цапфы относительно отверстий перед запуском. Сказали , что нужно "макрос " со станка ЧПУ загрузить в программу Басис у себя . Как это сделать правильно я пока не знаю. Есть ли у Вас возможность помочь или подсказать к кому обратиться . Спасибо.
По ЧПУ не знаю.
Восстановить видимость обычно работает по горячей клавише, а со скриптами надо смотреть. У меня на БМ10 не все скрипты работают корректно.
Здравствуйте. А почему не использовать слои?
Слой для фасадов? Вырвет фасады из блоков тумбочек, мне так не надо.
@@tehnik-km я просто не силен в базисе. Просто в других програмах я слоями пользуюсь. Даже не могу представить как это их вырвет из блоков. Спасибо за ответ
Я слышал, что можно, но сам фасады в слои не отправляю.
Слои использую для разделения на одной сцене: Помещение, Низ, Верх (кухни), Колонны (пеналы с техникой), Остров.
Скрыть размеры -
Model.forEach(function(obj) {
if (obj.Name == "Размер")
obj.Visible = false;
});
Показать размеры -
Model.forEach(function(obj) {
if (obj.Name == "Размер")
obj.Visible = true;
});
Скрыть фасады и фальшпанели -
Model.forEach(function(obj) {
if (obj.Name == "Фасад")
obj.Visible = false;
});
Model.forEach(function(obj) {
if (obj.Name == "Фасад выгнутый")
obj.Visible = false;
});
Model.forEach(function(obj) {
if (obj.Name == "Фасад вогнутый")
obj.Visible = false;
});
Model.forEach(function(obj) {
if (obj.Name == "Фальш панель")
obj.Visible = false;
});
Показать фасады и фальш панели -
Model.forEach(function(obj) {
if (obj.Name == "Фасад")
obj.Visible = true;
});
Model.forEach(function(obj) {
if (obj.Name == "Фасад выгнутый")
obj.Visible = true;
});
Model.forEach(function(obj) {
if (obj.Name == "Фасад вогнутый")
obj.Visible = true;
});
Model.forEach(function(obj) {
if (obj.Name == "Фальш панель")
obj.Visible = true;
});
Всё это вешаем на кнопки панели скриптов и радуемся
Вот хороший вариант скрипта. Одно нажатие - скрывает, повторное нажатие - возвращает. Тоесть обходимся оной клавишей для скрыть/показать.
Model.forEach(function (obj) {
if (obj.Name == "Размер"){
obj.Visible = !obj.Visible;
}
}
);
@@tehnik-km очень удобно, но почему в последних обновления не срабатывает с горячих клавиш и с панели скриптов тоже
вроде как стал работать, видимо что то, где не так написал
Model.forEach(function(obj) {
if (obj.Name == "Размер") {
obj.Visible = !obj.Visible; }
});
@@vasileandranovici я ни на один скрипт так и не перешел. В БМ10 срабатывают не всегда, в БМ11 - не знаю. Так до сих пор использую макрос.
Панель не резиновая, всех имен и опечаток не учтешь... Может тогда сразу так? (без претензий, как концепт)
Prop = Action.Properties;
SetString();
ObjName = Prop.NewCombo('Элементы', '');
ObjName.AddItem(String);
Hide = Prop.NewButton('Скрыть');
Hide.OnClick = function() {
Model.forEach(
function(Obj) {
if (Obj.Name == ObjName.Value) {
Obj.Visible = false;
Obj.Selected = 0;
Obj.Build();
}
})
SetString();
ObjName.ComboItems = [];
ObjName.AddItem(String);
ObjName.Value = '';
}
Show = Prop.NewButton('Показать все');
Show.OnClick = function() {
Model.forEach(
function(Obj) {
Obj.Visible = true;
Obj.Build();
})
SetString();
ObjName.ComboItems = [];
ObjName.AddItem(String);
ObjName.Value = '';
}
Prop.OnChange = function() {
Sel();
}
Action.Continue();
function Sel() {
Model.forEach(
function(Obj) {
Obj.Selected = 0;
if (Obj.Name == ObjName.Value) {
Obj.Selected = 1;
}
})
}
function SetString() {
List = new Array;
Model.forEach(
function(Obj) {
if (FindName(Obj) && Obj.Visible == true) {
List.push(Obj.Name);
}
});
SortList = List.sort();
String = SortList.join("
");
}
function FindName(Obj) {
for (k = 0; k < List.length; k++) {
if (List[k] == Obj.Name) {
return 0;
}
}
return 1;
}
А как вы создаёте новый чертёж с рамкой?
Создал четреж с рамкой, надписями, примечаниями, если нужно. Сохранил его как шаблон. Потом открываю его, а не новый четреж.
Прошу поделиться скриптами для выставления угла модели. Спасибо.
На мебельном форуме лучше почитать, там для каждого угла координаты расчитывать. Давно было, не очень помню.
С поста №245 и ниже обсуждение и скрипты.
promebelclub.ru/forum/showthread.php?t=12463&highlight=%F0%E0%EA%F3%F0%F1&page=25
@@tehnik-km Спасибо, нашел ответ. Решается просто двумя строчками, может кому пригодится.
Action.DS.AngleX=20
Action.DS.AngleY=35
Поставьте после слова ФАСАД звёздочку и будет пофиг какое название после, а если поставить звёздочкафасадзвёздочка тогда вообще пофиг на то, как называется. Всё будет скрываться
А как прописать поиск по маске в скрипте *Фасад*?
Звездочку просто так не прилепить к слову, будет искать именно точное совпадение "*Фасад*".
можно просто переделать скрипт. чем каждый раз ебатсо с удалением вычитания из модели. не? а, ну или переделать базовую модель. удалить отуда вычитание. хотя тогда придется его добавлять вручную. короче сложно.
автор видео - давно ты в базисе работаешь? уже не первый год, да?
Я так понял, скрипт в 10-ке выделывается. По крайней мере у меня очень странно работает. Вроде простой скрипт, много вариантов уже перепробовал и заколебался. Рекомендовали какие-то проверки вкрутить в скрипт. Я забил и пользуюсь макросами для hotkeyboard. Вычитания убирал, так он кажется к телу вращения приковырялся.
В базисе где-то с 2009-го
Можете помочь разобраться, почему никак не удается скрывать фурнитуру "ручка"? Если я вставляю или он есть в модуле, то никак не удаётся их скрывать, а стоит переименовывать и заново писали имя "ручка"(хотя не знаю почему, в списке имеется три названия ручка) и скрипт работает. С другими фурнитурамы такого не замечал.
Не знаю, честно говоря
Возможно в слове "ручка" одна из букв латинская, например: "pучка" - "p" латинская. Также может быть и буква "a" и "y"(тоже латинские). А для программы это играет роль!
@@enigmaman09ify решением стало не писать начальную букву (это касается любых названный). Не могу объяснить почему, но таким методом скрыпт срабатывает.
А как к названию элемента добавить название изделия в котором он находится! Допустим "стойка левая" относится к первому верхнему ящику, а их много. то-есть присвоить имя шкафчика к наименованию детали.
Скриптом. На мебельном форуме находил в разделе скриптов.
Тогда можно назвать блоки А, Б, В... После скрипта детали внутри блоков будут А-Крышка, А-Дно, А-Бок.
Вообще-то длинные имена - зло. И на мониторе, и в спецификациях. Вопрос решается иерархической расстановкой позиций.
И здесь фраза-паразит "такое себе".
Много таких фраз. При прослушке записи хочется выпилить на монтаже. Только это в речи, а ее почистить сложнее. :)