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

Как изменить предлогаемое имя файла в SolidWorks


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

21 минуту назад, streamdown сказал:

если уже успели создать и чертежи, то их имена останутся нетронуты

 В дереве переименовывать компоненты удобно, пока модель накидываешь, по 2-3 компонента, не больше. Если больше, то через "сохранить как" или "копировать проект", когда как удобнее, чтобы все ссылки обновились при переименовании файлов. И чертежи переименовываются, и входящие компоненты по "Найти-Заменить" пакетно. Рутинная задача потом вбивать значения в свойства даже для одного-двух файлов. А так для всего проекта из десятков компонентов свойства заполняются за пару секунд без открытия-заполнения-сохранения.

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


В 04.09.2017 в 15:02, streamdown сказал:

Но если уже успели создать и чертежи, то их имена останутся нетронуты

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

50 % вопросов тут снялось связанных с файлами и данными в них. Причем почти все у тебя есть, по коду.

Ссылка на сообщение
Поделиться на других сайтах
25 минут назад, Maik812 сказал:

хорошая реклама и раскрутка

Ты серьёзно думаешь что мне нужна раскрутка?  :smile: Я похож на какого нибудь "бизнесмена" салахудинова с его впариванием уроков по компасу))))) ?

Будут деньги - будет товар. Ни больше, ни меньше.

Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, Maik812 сказал:

если бы сделал все таки  АПИ плагин к ТС то можно переименовывать и чертежи. Разместил бы на сайте ТС  и тд

Для этого нужно задействовать раздел API закрытый индивиндуальным ключом Document Manager, который ещё надо получить, а так же использование на свой страх и риск:

http://help.solidworks.com/2010/english/api/swdocmgrapi/SolidWorks.Interop.swdocumentmgr_WelcomeSWDocMgrAPI.html?id=5ad23c9f5ef84546a57c64ec9984a06b#Pg0

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

@Сергей2014 Макрос для сохранения файла по типу "Обозначение_Наименование", значения берутся из ранее заполненных свойств файла.

http://my-files.ru/at7ybc

 

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

Спасибо за макрос. Полезная вещь. Только вопрос почему пр сохранение детали он не подтягивает обозначение и наименование.Называет файл _.sldprt

Ссылка на сообщение
Поделиться на других сайтах
35 минут назад, Anatlijj8 сказал:

не подтягивает обозначение и наименование.Называет файл _.sldprt

@Anatlijj8

Если в свойствах файла заполнено, то работает:

5c7f9daad4e35__.JPG.693b9478a28b11e96fb30e90f9c3573f.JPG

 

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

Интересует еще момент по макрасу который определяет обозначение и наименование с названия файла. Обозначение без проблем подтягивает а наименование но берет вместе с расширением файла. Например D001_База.SLDPRT то в обозначение оно берет D001 а в наименование База.SLDPRT. Как сделать чтобы оно не подтягивало расширение файла?

 

Ссылка на сообщение
Поделиться на других сайтах
25 минут назад, Anatlijj8 сказал:

в наименование База.SLDPRT. Как сделать чтобы оно не подтягивало расширение файла?

Можно например, использовать функцию REPLACE, например: Replace(ВашаСтрокаИлиПеременная, ".SLDPRT", "")

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

 

Или можно оставить левую часть за минус 7 символов (".SLDPRT") справа: Left(ВашаСтрокаИлиПеременная, Len(ВашаСтрокаИлиПеременная) - 7 )

 

 

Или можно отсекать правую часть по тому же алгоритму, что ищите "-" с помощью InStrRev, но искать точку для определения длины отсечения и отбрасывании/сохранения нужной строки.

 

Как вариант в Windows отключить расширения файлов и тогда возможно макрос так же не будет учитывать расширения, тогда их исключать не придётся. Но могут возникнуть проблемы в других местах при наличии точек в имени файлов, а так же от вирусов не убережётесь, которые своё расширение делают двойным, например, КАРТИНКА.JPG.EXE и без расширения видите файл вроде бы картинку, а при двойном клике на самом деле запускаете вредоносную программу.

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

Я скопировал Ваш код который был написан выше для макроса сохранения параметров обозначение и наименование с имени файла. И он работает но минус того что оно в наименование подтягивает еще расширение файла. Там используется InStrRev. Как в этом случае задать точку для определения длины отсечения?

Ссылка на сообщение
Поделиться на других сайтах
16 минут назад, Anatlijj8 сказал:

А может можно как-то указать промежуток от "_" до "."? 

Можно и так, вычисляйте начальный символ и длину строки, а дальше используйте Mid(string, start[, length]).

 

 

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

Ссылка на сообщение
Поделиться на других сайтах
18 минут назад, Anatlijj8 сказал:

Там используется InStrRev. Как в этом случае задать точку для определения длины отсечения?

Наверно можно как-то так:
swModel.CustomInfo("Наименование") = Mid(swModel.GetTitle, InStr(swModel.GetTitle, "-"), Len(swModel.GetTitle)-InStr(swModel.GetTitle, "-") - InStrRev(swModel.GetTitle, "."))

или:

swModel.CustomInfo("Наименование") = Mid(swModel.GetTitle, InStr(swModel.GetTitle, "-"), Len(swModel.GetTitle)-InStr(swModel.GetTitle, "-") - 7)

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

Не работает по этому примеру что Вы написали

Второй пример почти только он перед наименованием ставит "_". Может подскажите как его убрать чтобы его не включало в наименование?

Ссылка на сообщение
Поделиться на других сайтах
13 часа назад, Anatlijj8 сказал:

Только вопрос почему пр сохранение детали он не подтягивает обозначение и наименование.Называет файл _.sldprt

А в чем проблема или суть проблемы с именем в файле и тд? что то говорить то что бьетесь вы с как бы проблемой не понятно зачем.

Ссылка на сообщение
Поделиться на других сайтах
15 часов назад, Anatlijj8 сказал:

Второй пример почти только он перед наименованием ставит "_". Может подскажите как его убрать чтобы его не включало в наименование?

Добавить единицу и все дела:

swModel.CustomInfo("Наименование") = Mid(swModel.GetTitle, InStr(swModel.GetTitle, "-")+1, Len(swModel.GetTitle)-InStr(swModel.GetTitle, "-") - 7)

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

@Anatlijj8

Скрытый текст

Option Explicit
Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2
Dim swModelDocExt As ModelDocExtension
Dim swCustProp As CustomPropertyManager
Dim bool As Boolean
Sub main()
Dim swModel As ModelDoc2
Dim vComps As Variant
Dim swComp As SldWorks.Component2
Dim swAssy As SldWorks.AssemblyDoc
Dim i As Integer
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
    updateProperty swModel
If swModel.GetType = swDocASSEMBLY Then
    Set swAssy = swModel
    vComps = swAssy.GetComponents(False)
    For i = 0 To UBound(vComps)
        Set swComp = vComps(i)
        Set swModel = swComp.GetModelDoc2
        updateProperty swModel
    Next i
End If
    Dim vModels As Variant
    Dim count As Long
    Dim index As Long
   
    count = swApp.GetDocumentCount
    vModels = swApp.GetDocuments
   
    For index = LBound(vModels) To UBound(vModels)
        Set swModel = vModels(index)
    Next index
   
    ' Save All
Dim swErrors As Long
Dim swWarnings As Long
bool = swModel.Save3(swSaveAsOptions_Silent, swErrors, swWarnings)
MsgBox "Готово"
End Sub
Function updateProperty(swModel As SldWorks.ModelDoc2) As Boolean

Dim cpm As CustomPropertyManager
Dim i As Long
Dim path As String, filename As String

    Set swModelDocExt = swModel.Extension
    Set swCustProp = swModelDocExt.CustomPropertyManager("")
path = swModel.GetPathName
filename = Mid$(path, InStrRev(path, "\") + 1) ' With extension
filename = Left$(filename, InStrRev(filename, ".") - 1) ' Remove extension

  ' Убирает предупреждения, если файл не назван по типу Обозначение-Наименование
    On Error GoTo ErrorHandler
    For i = 1 To 999
        MsgBox " Iteration number " & i & ". DisplayAlerts is " & Application.DisplayAlerts
        Err.Raise 9999 'fake an error
ContinueLoop:
    Next i
   
    Application.DisplayAlerts = True
    
ErrorHandler:
    Err.Clear
    Resume Next
   
     'Разделитель в имени файла "-" можно заменить на свой, например —(длинное тире, клавиши Alt+0151)
    bool = swCustProp.Add3("Наименование", swCustomInfoText, Right$(filename, Len(filename) - InStrRev(filename, "-")), 2)
    bool = swCustProp.Add3("Обозначение", swCustomInfoText, Left$(filename, InStr(filename, "-") - 1), 2)

End Function

 

Мне удобнее разделителем ставить длинное тире, а то в обозначении или наименовании дефисы иногда встречаются.

Этим макросом удобно пользоваться, когда проект скопировал через "Pack and Go" и потом всем входящим компонентам поменять обозначение.

В макросонаписании не силён, набрал разных кусков с солидовского форума :)

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • Kelny
      Если этой ссылки достаточно для отображения материала и материал уже есть в обозначенной модели, то возможно подойдёт TabBuilder: https://help.solidworks.com/2023/russian/SolidWorks/SWHelp_List.html?id=e68c1877b4fa431483f8c751bd9fcc78&_gl=1*lby1j3*_up*MQ..*_ga*NTEyNjA5NDQ3LjE3MTQxMTU3MzA.*_ga_XQJPQWHZHH*MTcxNDExNTcyOS4xLjEuMTcxNDExNTczNy4wLjAuMA..#Pg0   В старых версиях при написанни ссылок такого радо в некоторых случаях можно было не писать имя файла, а достаточно было вместо имени файла модели оставить ПРОБЕЛ.SLDPRT и имя после этого подставлялось само. Пробовать надо.   Так же можете глянуть макрос по изменению свойств файла (методы и функции там устаревшие, но возможно даже будет работать и можно поковыряться в коде): https://kelnyproject.ucoz.ru/load/6-1-0-8 по програмированию так же есть справка (версию в ссылке поменяйте на свою, что бы справка была актуальна для вашей версии): https://help.solidworks.com/SearchEx.aspx?query=get custom property&version=2010&lang=english,enu&prod=api
    • gudstartup
      только перед обновлением обязательно выполните  все что написано в руководстве и касается сохранения состояния станка и чпу. и обязательно сделайте образ диска и помните что слишком новые версии могут не заработать на вашем чпу относительно безопасно ставить только сервиспаки
    • NordCom
      Большое спасибо! Через это меню удалось зайти в меню. 95148->MOD
    • Danil89nur
      Доброе время суток. Столкнулся с проблемой на новой работе. Много деталей у который в свойствах отсутствует раздел "Материал" и приходится каждый раз вручную заходить туда, создавать раздел и выбирать там ""SW-Material@Name.SLDPRT". Возможно кто-то знает, либо сможет помочь с написанием простенького макроса, при нажатии на который в свойствах детали будет создаваться необходимый раздел и в нем сразу написан выбранный материал (желательно, чтоб там было указано сразу наименование материала, а не формула для его получения ""SW-Material@Name.SLDPRT"). Пытался самостоятельно через ChatGPT, но так как в програмировании я 0, то ничего не получилось)
    • Bot
      Коллеги, Благодарю вас за интерес к проекту электронной энциклопедии в области инженерного программного обеспечения PLMpedia, который более 15 лет развивался группой компаний ЛЕДАС. Представленный ниже скриншот передаёт содержание и структуру базы данных энциклопедии, накопленной за эти годы: именно такую начальную страницу, можно было до сегодняшнего дня увидеть, придя по адресу https://plmpedia.ru/ В последние несколько лет ЛЕДАС особенно интенсивно и результативно вкладывает все ресурсы в развитие своего основного бизнеса: см. ниже «О компании ЛЕДАС». Сегодня я с некоторым сожалением констатирую, что у компании ЛЕДАС более нет возможности отвлекать ресурсы своих сотрудников на некоммерческий (фактически волонтерский) проект PLMpedia. Вся база данных ресурса может быть безвозмездно передана любому юридическому или физическому лицу с единственным условием: наш преемник должен будет публично объявить о состоявшейся передаче и взятии на себя [...] View the full article
    • gudstartup
      @NordCom  у вас наверное это так происходит читайте этот раздел itnc_530.pdf
    • fenics555
      интересный индус. А нового то чего?
    • gudstartup
      откудова качаете мне интересно?
    • ДОБРЯК
      Совсем забыл про собственные вектора       собственный тон частота           0.013                        1   Расчет собственных форм и частот   1         1   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   1         2   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00       собственный тон частота       15910.75                         2   Расчет собственных форм и частот   1         1   7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   1         2  -7.0711E-01   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00   0.0000E+00        
    • gudstartup
      так я это и написал
×
×
  • Создать...