Статьи блога

FromFilenameToProperties - VBA макрос пакетного занесения свойств в детали и/или подсборки

    Уважаемые коллеги, представляю на ваш суд расширенную версию макроса для пакетного занесения свойств в файлы сборки. Изначально макрос планировался для заполнения свойств Обозначение и Наименование из имени файла на вкладку конфигурации (данную версию макроса можно найти на страницах форума ), но постепенно "оброс" дополнительным функционалом. Более подробно о всех возможностях макроса расскажу ниже.
   В конце данного сообщения будет ссылка на источник, где вы сможете скачать и установить его для личного использования. Любые замечания по работе макроса и конструктивная критика категорически приветствуется.
 
  1. Установка макроса:
   После того, как вы скачали файл архива FromFilenameToProperties.rar - распакуйте его в удобное для вас место, желательно в папку без ограничения прав доступа к файлам. Структура файлов макроса показана на рисунке ниже:
 
Risunok 01
 Рис.1 Структура файлов макроса.
 
   Текстовые файлы править ручным способом крайне нежелательно, чтобы не нарушить количество строк и тип данных, в этих файлах. Эти файлы нужны для записи и хранения настроек макроса после закрытия программы.
   Теперь запускаем SolidWorks и открываем нужную нам сборку, т.к. макрос будет работать именно с деталями и под-сборками внутри основной (главной) сборки. Чтобы добавить кнопку для запуска макроса надо выполнить ряд простых действий:
    На свободном пространстве панелей SW нажимаем правой кнопкой мыши (ПКМ) и из выпадающего списка выбираем пункт Настройка...
 
Risunok 02

    Рис.2 Открываем окно с настройками.

   У нас откроется вот такое окно настроек и активируется панель вкладок или закладок (кто как называет):

Risunok 03

   Рис.3 Вид на окно настроек и панели вкладок/закладок.
 
   Для макросов я советую выделить отдельную закладку (вкладку). Для этого будем использовать имеющиеся пустые вкладки с правой стороны. Нажимаем ПКМ на вкладке Новая вкладка выбираем пункт Переименовать вкладку, и переименовываем ее в МАКРОСЫ.
   Получаем вот такую пустую вкладку, готовую к наполнению кнопками с полезными макросами:
 
Risunok 04
 
Рис.4 Готовая к наполнению пустая вкладка МАКРОСЫ.
 
   Чтобы создать кнопку с первым макросом нам необходимо в окне с настройками перейти на вкладку Команды (Шаг 1), а затем в списке всех команд найти и выделить строку Макрос (Шаг 2). Из отображаемых справа кнопок, выбираем крайнюю правую кнопку, нажимаем на нее левой кнопкой мыши (ЛКМ) и не отпуская ЛКМ перетаскиваем значок на панель с нашей вкладкой МАКРОСЫ (Шаг 3).
 
Risunok 05
Рис.5 Перетаскиваем/создаем первую кнопку с макросом.
 
   Как только справа от значка появится зеленый знак "+", то отпускаем ЛКМ и у нас появиться вот такое окно с настройками кнопки макроса:
 
Risunok 06
 
Рис.6 Окно с настройками макроса.
 

   Которое мы сейчас и будем заполнять. В области Действие, справа от текстового поля Макрос, нажимаем на кнопку с тремя точками [...]

Risunok 07

Рис.7 Первая настройка. Указываем путь к макросу.

и указываем путь к файлу с макросом. Если макрос не отображается, но вы точно знаете, что он в этой папке есть, то проверьте выпадающий список с расширениями файла макроса, надо выбрать SW VBA Macros (*.swp)

   Нажимаем кнопку Открыть:
 
Risunok 08
 
Рис.8 Путь к файлам макроса. И проверка правильности выбранного расширения.
 
   На втором шаге нам необходимо указать точку входа макроса, если простыми словами, то нам необходимо указать тот метод, который должен выполняться самым первым. Обычно это метод со словом .main на конце, но это не обязательно, зависит от того человека, который писал код. Я встречал методы (точки входа) со словами .start, .run и .first
   В нашем случае это будет FromFilenameToProperties2.main который мы выбираем из выпадающего списка:
 
Risunok 09
 
Рис.9 Самый важный момент в настройке макроса. Выбор точки входа.
 
    НЕ BatchWork.main - не перепутайте - это важно! (По умолчанию прописывается именно он)
  Далее можно выбрать значок для отображения на вкладке и заполнить текстовые поля Подсказка и Спросить (Кого спросить? Ох уж эти переводчики :))
 
Risunok 10
 

Рис.10 Заполняем оставшиеся настройки. 

   Нажимаем кнопку ОК и видим появление нашего выбранного ранее значка на вкладке МАКРОСЫ

Risunok 11

Рис.11 Панель с первым макросом на ней.

   Для быстрого запуска нашего макроса можно назначить т.н. "Горячую клавишу". Для этого в окне Настройка переходим на вкладку Клавиатура и в строке Поиск начинаем набирать название макроса (в нашем случае: fromf), происходит автоматическая сортировка и мы видим только одну строку с таким названием. По значку, понимаем, что это нужный нам макрос. Кликом мышки активируем поле под словом Ярлык(и) и нажимаем нужную нам комбинацию клавиш (в нашем случае: Alt+F) и не забываем нажать на кнопку ОК, чтобы сохранить все выполненные настройки.

Risunok 12

Рис.12 Настройка горячей клавиши для макроса.

  1.  Интерфейс, назначение и работа макроса:
   OknoMacrosa
 
Рис.13 Окно макроса.
 
Текстом писать долго, здесь будет новый видео-обзор, а пока залью видео работы предыдущей версии...
 
  1.  ToDo LIST (Список того, что можно улучшить в дальнейшей разработке):
   Здесь напишу, то, что я планирую изменить в работе и функционале макроса, а так же запишу все ваши замечания, пожелания и просьбы. Можно писать в комментах или в личку.
  Пока что в планах:
  • Сделать отдельную вкладку с настройками макроса
  • Сделать настройку перед добавлением свойств удалять все существующие свойства в текущей конфигурации и/или во всех конфигурациях сразу
  • Сделать поле для ввода свойств, при совпадении которых деталь будет игнорироваться, как у меня сделано для деталей toolbox-a
  • Сделать чек-бокс для свойства Материал, если он активен, то свойство Материал будет всегда браться из материала солида.
  • Что-то еще о чем забыл на данный момент :)
  1. Файлы макроса:
Крайнюю на данный момент времени версия макроса можно скачать на моем бусти (цена вопроса 100 руб.):
Макрос от Xarial для сортировки свойств по алфавиту + мои правки

2023 01 27 23 12 12
  Согласитесь, искать какое-то определенное свойство по его имени в не сортированном списке не простая задача, особенно если этих свойств очень много. Для помощи в этом деле Артёмом Татуревичем был написан данный макрос (ссылка на оригинал: https://www.codestack.net/solidworks-api/data-storage/custom-properties/sort/)
  Что делает макрос подробно описывать смысла не имеет, надеюсь и так понятно из названия, да и в статье можно почитать или посмотреть видео.
  Всё бы хорошо, но я заметил, что макрос "падает" если в списке свойств есть хотя бы одно свойство со ссылкой, или по другому - связанное свойство. Связанные свойства - это такие свойства, которые помечены значком ссылки и накладываются на деталь каким-либо функционалом программы. Примером таких свойств могут служить свойства прописанные программой при добавлении граничной рамки, например:
 
Рис. 1
 
Рис.1 Пример связанных свойств.
 
   При запуске оригинального макроса автора получалась вот такая ошибка, если запустить его для детали, имеющей такие свойства:
 

Рис. 2

Рис.2 Ошибка при запуске оригинального макроса.
 
  В ошибке говорится о том, что макрос не может добавить свойство. Выходом из данной ситуации стал дописанный мной участок кода для проверки типа свойства, если свойство было связанным, то мы пропускали его обработку и переходили к следующему свойству. Также, было добавлено сообщение о завершении работы макроса, т.к. визуально работу макроса отследить не представляется возможным.
 
Рис. 3
 
Рис.3 Вывод окошка о завершении работы макроса.
 
  Поэтому, кому нужен данный макрос - можете скачать его на бусти, ссылке ниже:
 
Макрос пакетного занесения свойств в детали/сборки, находящиеся в папке

Очередной макрос для пакетного занесения свойств в детали и сборки, но уже работающий с папками, в которых находятся детали или сборочные единицы (сокращенно ДСЕ).

   И так, что делает макрос? Макрос анализирует указанную пользователем папку и формирует список деталей и сборок. При нажатии кнопки Запустить обработку, макрос открывает каждую деталь(сборку) и заносит указанные в настройках свойства.
 
  1. Интерфейс и настройки.
   При запуске макроса, вы увидите вот такое окно:
 

001

Рис.1 Основное (главное) окно макроса  
 
   Если макрос запускается впервые, то необходимо нажать на значок шестеренки, чтобы выбрать какие свойства необходимо заносить в деталь или сборку. Давайте сперва нажмем на левую шестеренку и посмотрим окно настроек для папки с деталями:
 
002
 
Рис.2 Окно настроек шаблона свойств для деталей.
 
    На что здесь стоит обратить внимание. 1) Чек-боксы включают или отключают запись свойства в деталь, то есть можно сформировать именно нужный вам список свойств для занесения. 2) Поле разрядность работает следующим образом. Если указать в нем число, из трех знаков, например 001, как сейчас на картинке, то следующей детали будет присвоен номер 002, следующей 003 и т.д. Если ввести число, допустим 55, то следующий номер будет 56, следующий 57 и т.д. Так же, при следующем запуске макроса, в данном поле будет запомнено последнее присвоенное значение. После всех изменений необходимо нажать кнопку Сохранить, да по другому и не получиться, потому что крестик (закрыте окна) отключен :) Детали тулбокса из обработки исключены.
 
   Теперь давайте нажмем на шестеренку справа и пробежимся по настройкам окна для папки со сборками:
 
003
 
Рис.3 Окно настроек шаблона свойств для сборок.
 
   Здесь мы видим гораздо меньше настроек по сравнению с деталями, но есть одно дополнительное поле, которое называется Приращение. В данное поле нужно ввести число, на которое будет увеличено значение для следующей сборки. Например поле разрядность на данном скрине имеет значение 200, а поле приращение 100, значит следующее значение для сборки будет 300, для следующей 400 и т.д. Так же присутствуют чек-боксы для вкл./откл. свойств и кнопка сохранения настроек.
   Что ж, настройки мы выполнили теперь давайте укажем папку для деталей, нажав на кнопку с картинкой Детали. Откроется диалоговое окно, которое предложит выбрать папку для обработки:
 

004

Рис.4 Диалоговое окно выбора папки.
 
  Выбираем нужную нам папку и жмем ОК.
 
  Те же самые действия проделываем после нажатия на кнопку с изображением папки со сборкой. Это может быть та же самая папка или совершенно другая. Детали и сборки могут лежать как в одной папке, так и в разных. Здесь выбор за вами.
 
  Ну и последнее действие - это нажатие кнопки Запуск обработки, после нажатия которой программа начнет последовательно открывать сначала детали и вносить в них свойства, а затем и сборки.
 
  При завершении обработки выскочит вот такое диалоговое окно:
 

005

 Рис.5 Диалоговое окно завершения обработки.
 
   Нажав на кнопку Нет, вы завершите работу с макросом. Нажав на кнопку Да, макрос запуститься повторно и откроется главное окно программы.
 
   Все свойства пишутся на вкладку Параметры конфигурации. Часть настроек жестко прописаны в коде (список организаций, список типа изделия), при необходимости их можно вынести в текстовый или ini-файл.
 
   Макрос писался под конкретного человека, поэтому, возможно, у кого-то будут другие пожелания и рекомендации по изменению или улучшению функционала.
 
   Пишите свои замечания/пожелания в комментариях. Будет время - постараюсь их реализовать в новой версии данного макроса.
 
Скачать файлы макроса можно по ссылке ниже:
VBA макрос копирования всех свойств из активной конфигурации во все остальные

 
2022 11 12 01 44 52
 
Забирайте еще один макрос, назначение которого копировать все свойства из активной конфигурации во все остальные.
   Где он может пригодиться?
   1й вариант. Ну например, если у вас есть чертеж, первым видом которого была помещена развертка, а потом уже остальные виды детали, то шаблон чертежа будет пытаться выводить свойства (например Наименование и Обозначение) с первого вида на чертеже. То есть с развертки, а их, этих свойств, там нет. (Вряд ли кто-то заполняет свойства для развертки.) Мало того, развертка автоматически создается как дочерняя конфигурация только при создании чертежа из модели, и естественно заполненных свойств у нее не будет. Чтобы первым видом кидать развертку на лист - я стараюсь так не делать, но иногда приходиться работать с чертежами, на которых сделано именно так, и что-бы поменять наименование и обозначение был и написан этот макрос.
   2й вариант. Это, допустим, когда у вас развертка не поместилась на первом листе чертежа и вы переносите ее на второй лист, который тоже должен считать свойства из модели, помещенной на него. Дальше, надеюсь, уже понятен сценарий первого варианта :) На втором листе либо не будет обозначения, либо оно может быть не верным и отличаться от обозначения на первом листе, что ни есть хорошо.
  Может кто-то найдет ему и другое применение (пишите в комментах, если это так), по любому, надеюсь макрос пригодится.
 
Точка входа при установке:
2022 11 12 01 43 38

VBA-макрос комбайн по чтению и пакетному занесению свойств в детали и сборки SolidWorks

   Ещё один макрос комбайн по чтению и занесению свойств в детали и сборки пакетно.
   На предыдущем месте работы встала острая необходимость в выводе на чертеж множества свойств, т.к. по одному из направлений шли мелкосерийные и единичные заказы, и производство хотело видеть на чертеже Заказчика, Наименование заказанного изделия, Количество заказанных изделий, общее количество деталей, упрощенный тех.процесс или вернее маршрут обработки. Для воплощения всех этих хотелок был написан макрос, который считал количество деталей/сборочных единиц (ДСЕ) в главной сборке и заносил все необходимые свойства в ДСЕ. Вернее это переделанный и дополненный макрос ComponentInfo от Aleк77 с форума https://cccp3d.ru, часть кода его (подсчет количества уникальных деталей) оставлен без изменений. Реализована возможность добавления/изменения свойств и пакетная обработка. Прикручен макрос от Артёма Татуревича по сохранению разверток в формате DXF всех листовых деталей. Нажимаешь кнопку и идешь пить чай/кофе с ликером или т.п. :) т.к. предыдущая версия макроса была не оптимизирован на быстродействие и тупо прогонял одинаковые детали по несколько раз. Но на данный момент времени, я немножко "поумнел" и уже переписал код с учетом увеличение быстродействия, поэтому выкладываю актуальную версию макроса (ссылка внизу страницы). Получился вот такой "комбайн" :)
 
01
 
Рис.1 Так выглядит вкладка "Расчетная часть".
 

02

Рис.2 Так выглядит вкладка "Дополнительно".
 
03
 
Рис.3 Так выглядит вкладка "Добавление свойств".
 
04
 
Рис.4 Так выглядит вкладка "Любые свойства".
 
   Дополнительно был написан макрос для занесения упрощенного тех. процесса в свойство детали (скачать можно будет по ссылке ниже):           
 
05
              
Рис.5 Так выглядит главное окно макроса "Базовый тех.процесс".
 
    Выводились все эти свойства в заранее подготовленную таблицу на чертеже. Переделаны были шаблоны, для размещения этой таблицы. Если чертеж был готов и был без таблицы, то таблица вставлялась за пару кликов (шаблон таблицы прикладываю во вложении).
   Выглядело это как-то вот так:
 
06
 
Рис.6 Таблица со свойствами на чертеже детали.
 
   Начальник производства был доволен. Чертеж так же выполнял роль маршрутной карты.
 
   Скачать файлы макросов и настроенную таблицу можно но ссылке:

   https://boosty.to/snake.nest/posts/eb9a15e8-e357-455d-8c23-a1a03df3615d?share=post_link