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

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


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

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

 

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

 

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

 

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
      ты хотел сказать FARTовая?!
    • Anat2015
      Названия всех файлов архива - в студию. Возможно надо все три запускать, и в определенной последовательности, поторопились, однако, теперь уже назад пути нет, как полностью восстанавливать ПО станка.
    • Мрачный
      Как дети ибо: 1. Погуглите такие цветистые фразы хьюаристки - выдаёт первой строкой в поисковике.  2. Зачем шифроваться на форуме той же хьюаристке, если поисковик выдаёт даже закрытую вакансию? Кому надо - тот найдёт.  Имхо - вакансию полная шляпа какая-то газообразная.  От этого пункта надо здорово насторожиться 
    • maxx2000
      @BSV1 ах оставьте, это же моветон
    • Александр1979
      Не существует такой, ваша система ЧПУ похожа на Sinumerik 802D sl
    • sssva
      Если эти отверстия соосны ,то машинные координаты центра стола в данном случае будут Х=-1208.101 ,чтобы найти неизвестный соосный Х после полворота стола на 180 градусов ,нужно (центр стола*2)-Х1. Пример: (-1208.101*2)-(-756.305)=-1659.897. Ось Z находиться  другим способом ,для этого нужно знать другую константу для расчёта по оси Z. В Синумерике можно забить эти данные в базовое смещение и тогда центра стола в СНТ по оси Х будет совпадать с осью вращения стола. По стандарту фирмы UNION в машинных координатах центр вращения стола при условии X=0 W=0 V=0 Z=0  будет совпадать с вершиной и центром инструмента.
    • Александр1979
      Выполните процедуру:  
    • BSV1
      Ага. Правил не читают, сразу пишут.  
    • karlf
      Подскажите пожалуйста, как программировать такой станок в NX? Как пятиосевой 3+2? Стойка TNC 426, станок DMU-80P, голова у него командой М53 поворачивается из вертикального положения в горизонтальное. 
    • k.sema
      Прошу прощения за некорректную инфу. Да, действительно, я напутал. Станок этот для резки оконного профиля Murat. Стойка Siemens CN-770.      Ситуация следующая. Почему-то слетели все настройки, все офсеты и прочее. Изначально ребята думали, что это из-за севшей батарейки. Но оказалось, что по другим причинам. Станок долго стоял в выключенном состоянии. Было решено восстановиться из файла бэкапа. На флешке есть три файла с  расширением .arc. Один из этих файлов мы скопировали и вставили в папку Архив серийного запуска, после чего запустился процесс восстановления, который длился около 5 минут.       По окончании настройки восстановились, но появилась ошибка Axis Z2 drive 1 DRIVE-CLiQ: нет коммуникации с компонентом, текущий номер компонента: 2.        Собственно, сейчас проблема в том, что станок не реагирует на движения маховичка и что делать с этой ошибкой непонятно.  Вопрос: правильно ли мы инициировали процесс восстановления? Может, мы что-то сделали не так или сделали не до конца?  
×
×
  • Создать...