Перейти к публикации

Макрос для внесения имени файла в свойства конфигурации


Рекомендованные сообщения

Всем доброго времени суток!

 

Подскажите, как сделать?

 

Именую файлы следующим способом:

 

12345.00.000_Сборка 1

 

Нужно, чтобы 12345 заносилось в поле "Номер заказа" в окне "Конфигурация" свойств файла, 12345.00.000 - в поле "Обозначение" того же окна, Сборка 1 - в поле "Наименование"

 

То есть извлекалась информация из имени файла и автоматически вносилась в поля основной надписи (3 поля) через атрибуты.

 

Нашел такой макрос. Но он добавляет информацию во вкладку "Настройка", а мне надо во вкладку "Конфигурация"

 

 

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim bool As Boolean
Dim errors             As Long
Dim warnings           As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swCustProp = swModelDocExt.CustomPropertyManager("")

    bool = swCustProp.Add3("Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, "_") - 1), 2)
    bool = swCustProp.Add3("Наименование", swCustomInfoText, Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "_")), 2)
    bool = swModel.Save3(13, errors, warnings)

End Sub

 

 

Спасибо!
 

Ссылка на сообщение
Поделиться на других сайтах


UnPinned posts

Помогло. Спасибо!

Номер заказа и Обозначение вносит верно, а вот Наименование с расширением файла. Как убрать точку и расширение файла из строчки, подчеркнутой красным?

 

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim bool As Boolean
Dim errors             As Long
Dim warnings           As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swCustProp = swModelDocExt.CustomPropertyManager("По умолчанию")

    bool = swCustProp.Add3("Номер заказа", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, ".") - 1), 2)
    bool = swCustProp.Add3("Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, "_") - 1), 2)
    bool = swCustProp.Add3("Наименование", swCustomInfoText, Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "_")), 2)
    bool = swModel.Save3(13, errors, warnings)

End Sub
 

 

 

Ссылка на сообщение
Поделиться на других сайтах

@Neodim Странно, у меня все правильно прописывается , без расширения файла. Теме более метод GetTitle как раз и возвращает только имя файла, без расширения и пути.

Я бы вместо прописывания имени файла, прописал бы лучше строчки кода для возвращения имени активной конфигурации.

Option Explicit
Dim swApp               As SldWorks.SldWorks
Dim swModel             As SldWorks.ModelDoc2
Dim swModelDocExt       As SldWorks.ModelDocExtension
Dim swConfMgr           As SldWorks.ConfigurationManager
Dim swConf              As SldWorks.Configuration
Dim swCustProp          As SldWorks.CustomPropertyManager
Dim bool                As Boolean
Dim errors              As Long
Dim warnings            As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swConfMgr = swModel.ConfigurationManager
    Set swConf = swConfMgr.ActiveConfiguration
    Set swCustProp = swModelDocExt.CustomPropertyManager(swConf.Name)

    bool = swCustProp.Add3("Номер заказа", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, ".") - 1), 2)
    bool = swCustProp.Add3("Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, "_") - 1), 2)
    bool = swCustProp.Add3("Наименование", swCustomInfoText, Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "_")), 2)
    bool = swModel.Save3(1, errors, warnings)

End Sub
 

Изменено пользователем Chuvak
Ссылка на сообщение
Поделиться на других сайтах

Не знаю. 

Ваш код тоже попробовал. Расширение остается все равно. Может есть еще какие-то варианты?

Снимок.PNG

Изменено пользователем Neodim
Ссылка на сообщение
Поделиться на других сайтах

@Neodim А у Вас какая версия Solidworks ?

47 минут назад, Neodim сказал:

Может есть еще какие-то варианты?

Варианты есть и не один)

Все, понял. У Вас в настройках проводника включена функция "Расширения имен файлов".

Безымянный.png

 

Если вам не нужна данная функция, то можете просто снять галочку и использовать код. Если же нет, то нужно будет использовать функцию Mid вместо Right

Ссылка на сообщение
Поделиться на других сайтах

Протестируете след. код:

 

Option Explicit
Dim swApp               As SldWorks.SldWorks
Dim swModel             As SldWorks.ModelDoc2
Dim swModelDocExt       As SldWorks.ModelDocExtension
Dim swConfMgr           As SldWorks.ConfigurationManager
Dim swConf              As SldWorks.Configuration
Dim swCustProp          As SldWorks.CustomPropertyManager
Dim bool                As Boolean
Dim errors              As Long
Dim warnings            As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swModelDocExt = swModel.Extension
    Set swConfMgr = swModel.ConfigurationManager
    Set swConf = swConfMgr.ActiveConfiguration
    Set swCustProp = swModelDocExt.CustomPropertyManager(swConf.Name)

    bool = swCustProp.Add3("Номер заказа", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, ".") - 1), 2)
    bool = swCustProp.Add3("Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, "_") - 1), 2)
    bool = swCustProp.Add3("Наименование", swCustomInfoText, Mid(swModel.GetTitle, InStr(swModel.GetTitle, "_") + 1, InStrRev(swModel.GetTitle, ".") - InStr(swModel.GetTitle, "_") - 1), 2)
    bool = swModel.Save3(1, errors, warnings)

End Sub

Изменено пользователем Chuvak
Ссылка на сообщение
Поделиться на других сайтах
  • 2 месяца спустя...

Я сделал так и  прописал комментарии, т.к. первый раз для солида пишу макрос, точнее поправляю чужой. Может кому также будет полезно, кто первый раз читает код на VBA под солид.
 

'-------------------------------------------------- ---
  ' Предварительные условия:
  ' 1. Сохраните данный макрос через 'Инструменты - Макрос - Создани' допустим под именем "Макрос для внесения имени файла в свойства конфигурации".
  ' 2. Откройте деталь в формате Обозначение - Наименование
  ' 3. Откройте данный макрос через 'Инструменты - Макрос - Выполнить'.
  ' 4. Чтобы убедиться откройте окно 'Файл - Свойства - Настройки'.
  '
  ' Постусловия: разделает название файла в формате Обозначение - Наименование и заносит данные в свойства модели.
  '-------------------------------------------------- --

Option Explicit
Dim swApp As SldWorks.SldWorks 'Предоставляет доступ к SOLIDWORKS
Dim swModel As ModelDoc2 'Предоставляет доступ к документам SOLIDWORKS: деталям, сборкам и чертежам.
Dim swModelDocExt As ModelDocExtension 'Разрешает доступ к модели.
Dim swCustProp As CustomPropertyManager  'Получает информацию о настраиваемых свойствах для этой конфигурации
            'As SldWorks.CustomPropertyManager
'Dim swConfMgr           As SldWorks.ConfigurationManager
'объявляем новые переменные
Dim bool As Boolean
Dim errors             As Long
Dim warnings           As Long

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc 'Предоставляет доступ к активным документам
    Set swModelDocExt = swModel.Extension 'Получает объект расширения swModel(ModelDoc2), который также обеспечивает доступ к документу модели.
    Set swCustProp = swModelDocExt.CustomPropertyManager("") 'Получает объект доступа к модели, который также обеспечивает доступ к свойствам для этой конфигурации.
    'Set swConfMgr = swModel.ConfigurationManager 'если будем заносить в свойства конфигурации
    
    bool = swCustProp.Add3("Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, " - ") - 1), 2)
    ' (InStr) Возвращает значение, определяющее положение первого вхождения строки  " - " в полученном названии модели (swModel.GetTitle)
    ' (Left) возвращаем крайние левые символы из строкового выражения с указанием сколько знаков должно быть возвращено уменьшенное на 1
    ' (Add3) добавляем пользовательское свойство в документ конфигурации или модели как текст (swCustomInfoText) в параметр "Обозначение". Всегда 2
    
    bool = swCustProp.Add3("Наименование", swCustomInfoText, Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, " - ") - 2), 2)
    ' (Len) Возвращает число символов в полученном названии модели (swModel.GetTitle)
    ' (InStrRev) и вычитаем Возвращенное положение вхождения строки " - " в рамках полученного названия модели (swModel.GetTitle) уменьшенное на 2
    ' (Right) возвращаем крайние правые символы из строкового выражения с указанием сколько знаков должно быть возвращено
    ' (Add3) добавляем пользовательское свойство в документ конфигурации или модели как текст (swCustomInfoText) в параметр "Обозначение"
    
    bool = swModel.Save3(13, errors, warnings) ' сохраняем текущий документ Options(13)
End Sub

 

Ссылка на сообщение
Поделиться на других сайтах
  • 3 недели спустя...

У вас фундаментальная проблема Вы пытаетесь в имя файла внести информацию, а это дает большие ограничения особенно на переименование имени. Сборки будут запрашивать старое имя если просто изменить. Научитесь правильно добавлять информацию в файле.

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

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

 

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

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

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




  • Сообщения

    • maxx2000
      Автора темы не было с 2 мая. Я такого звзидунка давно не встречал
    • Dimetil Gidrozin Dnepr
      куда пропал твой парень? с ним в паре вы замечательно смотрелись и ты был гораздо круче спасибо. я уже с автором темы связался он мне ссылок дал и где качать и как ставить. понту мне смотреть то чего у меня нет)) я поставлю то что он мне дал и посмотрю по нему. он видеоуроки пишет. норм чувак кста
    • IgorT
      Да че там хорошего? По мне уже то, что нет возможности выбрать плоскость симметрии напряг.
    • AlexKaz
      А если сделать такой финт: есть два тела, на телах две площадки с одинаковой сеткой. Что будет, если создать много RBE2 от площадки к площадке, но каждый RBE2 связывает только 1 узел на первой площадке с 1 узлом на второй (а не несколько узлов с одним узлом)? По логике вещей, получается аналог нескольких простых MPC узел в узел, т.е. для каждой пары узлов с разных площадок имеем Ux1-Ux2=0, Uy1-Uy2=0, Uz1-Uz2=0. Т.е. получим деформируемые границы площадок (вместо абсл. жёстких), но "сшитые" попарно по площадкам узлы, и попарные узлы на площадках должны перемещаться на одинаковое расстояние. Или нет?
    • Anat2015
      Не путайте модель станка и модель ЧПУ. Синумерик - это ЧПУ, у вас точно ЧПУ Sinumerik SN-770, или это все таки название станка, не встречал, чтобы Сименс станки делал. Определитесь с точным названием УЧПУ.   Теоретически, да, но можно и с внешнего инструмента (ноутбука) а процесс восстановления привязан к модели ЧПУ. Только arc. (архив) бывает разный, могут быть отдельно архивы NCU, PLC, HMI, а может быть объединенный. Где батарейка, какие настройки вы имеете ввиду? Может и архивы не надо восстановливать? Подробнее опишите свои проблемы.
    • ID_Hacker
      Бывает на пульте кнопка, бывает М командами откидывается. Если заходите в меню измерения инструмента в режиме Jog, возможно надо выбрать параметры измерения и нажать "Цикл старт" Вариантов реализации много, и без осмотра подсказать практически нереально. Вы вообще уверены, что у вас моторизированная рука, а не откидываемая руками? Правильно вам пишут - необходимо смотреть в руководстве пользователя станка. Если нет руководства, просить поставщика, производителя. Ну а если уже совсем край, искать специалиста, готового провести исследование и возможно пусконаладку.
    • Мрачный
      Компас напоминает в своих способностях SW 2001-2006 г. Очень во многих местах. А вот с зеркальными деталями-сборками там вроде бы все весьма неплохо, гораздо лучше чем в SW. Вот такое неоднозначие...
    • maxx2000
      там посыл скорее про оформление чертежей согласно ГОСТ Айтишники и манагеры. Что с них взять. 1 семестр начерталки и 1 семестр инженерной графики, если не всё вместе, на отстань в каком нить педагогическом или аграрном вузе
    • brigval
      Заложено, но на усмотрение пользователя. К сожалению.
    • Ветерок
      Хочешь сказать, что разработчики Компаса не знают начерталку? Это же должно быть заложено в программу.
×
×
  • Создать...