Скрыть фасады. Скрыть размеры /Базис мебельщик/

แชร์
ฝัง
  • เผยแพร่เมื่อ 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
    -------------------------------------------------------------------------------------
    #Базис_приемы_работы

ความคิดเห็น • 52

  • @tehnik-km
    @tehnik-km  4 ปีที่แล้ว +2

    Несколько человек спрашивали, как это все скрывать с модели оптом. Примерно так.

  • @DmitryHot
    @DmitryHot 3 ปีที่แล้ว +3

    Попробуйте в скрипте после 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;
    }

  • @Evgeniyart1
    @Evgeniyart1 10 หลายเดือนก่อน

    товарищ, да вы просто кладезь информации!
    кроме Патреона можно бы ло бы повесить реквизиты для поддержки финансами я бы удовольствием закинул за труды 5 копеек

  • @PetrovAndreyAlexandr
    @PetrovAndreyAlexandr 4 ปีที่แล้ว +1

    Благодарю Вас за отличные видео. Много актуального и необходимого материала. Продолжайте в том же духе!

  • @Degaucho
    @Degaucho 4 ปีที่แล้ว +2

    Спасибо что так быстро записали видео по этому вопросу) Успехов!

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว

      Попала тема под настроение :)

  • @surenhakobyan9940
    @surenhakobyan9940 4 ปีที่แล้ว +3

    Тоже полезное видео. Спасибо, попробую.
    Я тоже "обучил" себя к горячим клавишам и теперь удивляюсь как люди могут без клавиш чертить.

  • @who5041
    @who5041 9 หลายเดือนก่อน

    Спасибо за крутую идею. Что касаеться скрипта я его чутка изменил т.к. у меня названия детали ШКаф1.Антресоль. Фасад левый ну или что то в этом духе) Так вот скрипт работать не будет, пишем так и кайфуем, А ну и добавил чтобы эта кнопка возвращала все п.с. есть один баг если один фасад ыбл скрыт а несколько нет то будет их менять местами)) Model.forEach(function(obj){
    if (obj.Name.indexOf("Фасад")>-1){
    if (obj.Visible == true){
    obj.Visible = false;
    }
    else {
    obj.Visible = true;
    }
    }
    });
    П.с. Лайк чтобы люди видели и кидай побольше идей спасибо.

  • @Vyacheslav_78
    @Vyacheslav_78 4 ปีที่แล้ว

    Спасибо,очень нужная информация

  • @abbaco
    @abbaco 4 ปีที่แล้ว +1

    Спасибо! Отличное видео.

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว

      И вам спасибо :)

  • @user-pb1fq5mt8r
    @user-pb1fq5mt8r 2 ปีที่แล้ว

    За скрипты скрыть/отобразить спасибо всем участникам - буду пробовать. Вопрос про виды (ракурсы в модели): как привязать нестандартные для базиса виды справа и снизу к ГК? Переключение через колесо удобно, в принципе, но ГК мне больше нравятся.

    • @tehnik-km
      @tehnik-km  2 ปีที่แล้ว +1

      Поискать скрипт, у меня под рукой нет.
      Выставляешь ракурс модели, смотришь координаты, прописываешь их в скрипт и вешаешь гор.клавишу на запуск скрипта. Несколько таких скриптов-ракурсов.
      Вид справа, кстати, функционировал плохо. Для посмотреть хватало, а с замерами расстояний, установкой фурнитуры, что-то не надежно было.

    • @user-pb1fq5mt8r
      @user-pb1fq5mt8r 2 ปีที่แล้ว

      @@tehnik-km Спасибо. Скрипты поищу. Пока что отыскал команду "параллельно плоскости", повесил ее на хоткей - с перспективы неплохо так переключает)

  • @ratirim9237
    @ratirim9237 4 ปีที่แล้ว +3

    С размерами проблем не было. У меня назначено так: Alt+2 (выделяет все размеры), Alt+s скрывает выделенное. Вот за фасады, большое спасибо. Буду пробовать )))

    • @surenhakobyan9940
      @surenhakobyan9940 4 ปีที่แล้ว

      А для скрытия размеров вы чем пользуетесь, скриптом или есть команда, на которую назначена горячая клавиша.

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว +5

      Вот хороший вариант скрипта. Одно нажатие - скрывает, повторное нажатие - возвращает. Тоесть обходимся оной клавишей для скрыть/показать. Что для размеров, что для фасадов.
      Model.forEach(function (obj) {
      if (obj.Name == "Размер"){
      obj.Visible = !obj.Visible;
      }
      }
      );

    • @ratirim9237
      @ratirim9237 4 ปีที่แล้ว +1

      Tehnik - Беседы о Базисе благодарочка. Правда скриптами не пользуюсь ))) макросы еще в К3 достали )))

  • @mebbli
    @mebbli 3 ปีที่แล้ว

    Дякую автору за пізнавальне відео. Нарахунок призначень клавіш і рекордерів - раніше користувався програмою для жестів мишкою - яка працює під віндою. Працював у Pro100 було надзвичайно зручно. Нажаль з новішою версією просто жести перестали працювати. Але бачу є нова версія. Там широкі налаштування. Ну і мишкою (жестом, -при зажатій правік клавіші) - це робити надзвичайно зручно. Кому цікаво, ось посилання на програму.
    www.strokesplus.com/

  • @user-ks2et4io5r
    @user-ks2et4io5r 3 ปีที่แล้ว

    Здравствуйте. Спасибо за ваши уроки. Я только начинаю проектировать. Возник вопрос на счет скриптов и макросов и тут ваше видео. Я скачал конечно скрипт (спасибо всем кто дает направление и возможность учится и развиваться.) ЧИК. Все работает, все скрывает.(пока не знаю как иконку назначить и установить на панель, но позже с этим ) Назначил горячую клавишу "восстановить видимость"- не работает)). В чем может быть подвох? Спасибо.
    Интересует другой вопрос. "Макрос" для станка ЧПУ. Столкнулся с такой проблемой. Зажимные цапфы в станке которые держат деталь устанавливаются изначально произвольно и закрывают отверстия на детали (видно на мониторе ЧПУ). Оператор перед запуском программы постоянно смещает цапфы относительно отверстий перед запуском. Сказали , что нужно "макрос " со станка ЧПУ загрузить в программу Басис у себя . Как это сделать правильно я пока не знаю. Есть ли у Вас возможность помочь или подсказать к кому обратиться . Спасибо.

    • @tehnik-km
      @tehnik-km  3 ปีที่แล้ว

      По ЧПУ не знаю.
      Восстановить видимость обычно работает по горячей клавише, а со скриптами надо смотреть. У меня на БМ10 не все скрипты работают корректно.

  • @barmaleygorlovka
    @barmaleygorlovka 4 ปีที่แล้ว +1

    Здравствуйте. А почему не использовать слои?

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว

      Слой для фасадов? Вырвет фасады из блоков тумбочек, мне так не надо.

    • @barmaleygorlovka
      @barmaleygorlovka 4 ปีที่แล้ว

      @@tehnik-km я просто не силен в базисе. Просто в других програмах я слоями пользуюсь. Даже не могу представить как это их вырвет из блоков. Спасибо за ответ

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว +1

      Я слышал, что можно, но сам фасады в слои не отправляю.
      Слои использую для разделения на одной сцене: Помещение, Низ, Верх (кухни), Колонны (пеналы с техникой), Остров.

  • @AbriKOSS62
    @AbriKOSS62 4 ปีที่แล้ว +4

    Скрыть размеры -
    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;
    });
    Всё это вешаем на кнопки панели скриптов и радуемся

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว +4

      Вот хороший вариант скрипта. Одно нажатие - скрывает, повторное нажатие - возвращает. Тоесть обходимся оной клавишей для скрыть/показать.
      Model.forEach(function (obj) {
      if (obj.Name == "Размер"){
      obj.Visible = !obj.Visible;
      }
      }
      );

    • @vasileandranovici
      @vasileandranovici 3 ปีที่แล้ว

      @@tehnik-km очень удобно, но почему в последних обновления не срабатывает с горячих клавиш и с панели скриптов тоже

    • @vasileandranovici
      @vasileandranovici 3 ปีที่แล้ว

      вроде как стал работать, видимо что то, где не так написал
      Model.forEach(function(obj) {
      if (obj.Name == "Размер") {
      obj.Visible = !obj.Visible; }
      });

    • @tehnik-km
      @tehnik-km  3 ปีที่แล้ว

      @@vasileandranovici я ни на один скрипт так и не перешел. В БМ10 срабатывают не всегда, в БМ11 - не знаю. Так до сих пор использую макрос.

    • @DmitryHot
      @DmitryHot 3 ปีที่แล้ว

      Панель не резиновая, всех имен и опечаток не учтешь... Может тогда сразу так? (без претензий, как концепт)
      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;
      }

  • @henadzmuhin
    @henadzmuhin 3 ปีที่แล้ว

    А как вы создаёте новый чертёж с рамкой?

    • @tehnik-km
      @tehnik-km  3 ปีที่แล้ว +1

      Создал четреж с рамкой, надписями, примечаниями, если нужно. Сохранил его как шаблон. Потом открываю его, а не новый четреж.

  • @user-st1tv4rw4x
    @user-st1tv4rw4x 4 ปีที่แล้ว +2

    Прошу поделиться скриптами для выставления угла модели. Спасибо.

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว +3

      На мебельном форуме лучше почитать, там для каждого угла координаты расчитывать. Давно было, не очень помню.
      С поста №245 и ниже обсуждение и скрипты.
      promebelclub.ru/forum/showthread.php?t=12463&highlight=%F0%E0%EA%F3%F0%F1&page=25

    • @user-st1tv4rw4x
      @user-st1tv4rw4x 4 ปีที่แล้ว +6

      @@tehnik-km Спасибо, нашел ответ. Решается просто двумя строчками, может кому пригодится.
      Action.DS.AngleX=20
      Action.DS.AngleY=35

  • @user-iy3tr9yj5b
    @user-iy3tr9yj5b 4 ปีที่แล้ว +4

    Поставьте после слова ФАСАД звёздочку и будет пофиг какое название после, а если поставить звёздочкафасадзвёздочка тогда вообще пофиг на то, как называется. Всё будет скрываться

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว

      А как прописать поиск по маске в скрипте *Фасад*?
      Звездочку просто так не прилепить к слову, будет искать именно точное совпадение "*Фасад*".

  • @user-el2db3ye5q
    @user-el2db3ye5q 2 ปีที่แล้ว

    можно просто переделать скрипт. чем каждый раз ебатсо с удалением вычитания из модели. не? а, ну или переделать базовую модель. удалить отуда вычитание. хотя тогда придется его добавлять вручную. короче сложно.
    автор видео - давно ты в базисе работаешь? уже не первый год, да?

    • @tehnik-km
      @tehnik-km  2 ปีที่แล้ว

      Я так понял, скрипт в 10-ке выделывается. По крайней мере у меня очень странно работает. Вроде простой скрипт, много вариантов уже перепробовал и заколебался. Рекомендовали какие-то проверки вкрутить в скрипт. Я забил и пользуюсь макросами для hotkeyboard. Вычитания убирал, так он кажется к телу вращения приковырялся.
      В базисе где-то с 2009-го

  • @surenhakobyan9940
    @surenhakobyan9940 4 ปีที่แล้ว

    Можете помочь разобраться, почему никак не удается скрывать фурнитуру "ручка"? Если я вставляю или он есть в модуле, то никак не удаётся их скрывать, а стоит переименовывать и заново писали имя "ручка"(хотя не знаю почему, в списке имеется три названия ручка) и скрипт работает. С другими фурнитурамы такого не замечал.

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว +1

      Не знаю, честно говоря

    • @enigmaman09ify
      @enigmaman09ify 3 ปีที่แล้ว +1

      Возможно в слове "ручка" одна из букв латинская, например: "pучка" - "p" латинская. Также может быть и буква "a" и "y"(тоже латинские). А для программы это играет роль!

    • @surenhakobyan9940
      @surenhakobyan9940 3 ปีที่แล้ว

      @@enigmaman09ify решением стало не писать начальную букву (это касается любых названный). Не могу объяснить почему, но таким методом скрыпт срабатывает.

  • @dyadechkoa
    @dyadechkoa 4 ปีที่แล้ว

    А как к названию элемента добавить название изделия в котором он находится! Допустим "стойка левая" относится к первому верхнему ящику, а их много. то-есть присвоить имя шкафчика к наименованию детали.

    • @tehnik-km
      @tehnik-km  4 ปีที่แล้ว +2

      Скриптом. На мебельном форуме находил в разделе скриптов.
      Тогда можно назвать блоки А, Б, В... После скрипта детали внутри блоков будут А-Крышка, А-Дно, А-Бок.

    • @DmitryHot
      @DmitryHot 3 ปีที่แล้ว

      Вообще-то длинные имена - зло. И на мониторе, и в спецификациях. Вопрос решается иерархической расстановкой позиций.

  • @Echo33Rus
    @Echo33Rus 3 ปีที่แล้ว

    И здесь фраза-паразит "такое себе".

    • @tehnik-km
      @tehnik-km  3 ปีที่แล้ว

      Много таких фраз. При прослушке записи хочется выпилить на монтаже. Только это в речи, а ее почистить сложнее. :)