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

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


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

а тут в общем то получилось... но вот вопрос как???

Ну загоните Вашу модельку в именную конфигу - думаю пройдёт...
Ссылка на сообщение
Поделиться на других сайтах


Option Explicit



Sub main()

	Dim swApp				   As SldWorks.SldWorks

	Dim swModel				 As SldWorks.ModelDoc2



	Set swApp = Application.SldWorks

	Set swModel = swApp.NewPart



	Debug.Print "Заголовок изменён = " & swModel.SetTitle2("Заголовок_вновь_создаваемой_детали")



End Sub

Здравствуйте!

А можно сделать так, чтобы вместо "Заголовок_вновь_создаваемой_детали" бралось свойство модели: "Обозначение" - "Наименование", дабы получить имя файла типа "АБВ 000.00.00.000 - Деталь" как это делает "Компас"?

Если да, то как это записать в макросе?

Спасибо!

Ссылка на сообщение
Поделиться на других сайтах
  • 7 лет спустя...
В 02.12.2009 в 10:41, Водяной сказал:

Здравствуйте!

А можно сделать так, чтобы вместо "Заголовок_вновь_создаваемой_детали" бралось свойство модели: "Обозначение" - "Наименование", дабы получить имя файла типа "АБВ 000.00.00.000 - Деталь" как это делает "Компас"?

+100

проблема актуальна!

нашлось решение?

 

есть мысль, что переменными)

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

Jpeg_0006.thumb.jpg.9da30ecbbf7558df0b753d58b17af8e5.jpg

Total commander инструмент переименования плагин Solidworks.wdx переименует имя файла созданного по любым свойствам что есть в файле или из шаблона который там можно создать. Вводить из шаблона значения в свойства инструментом изменения атрибутов. в сам плагин вписать можно как в справочник любые используемые значения. 3 варианта короче.

Изменено пользователем Maik812
Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Reddik сказал:

нашлось решение?

 

есть мысль, что переменными)

Решение чего? Всё решаемо, было бы желание.

 

Эти обозначения всё равно вводить, поэтому можно добавить пару окон ввода и добавлять эти самые свойства, вероятно как-то так:


 
Option Explicit
Sub main()
	Dim swApp				   As SldWorks.SldWorks
	Dim swModel				 As SldWorks.ModelDoc2
	Set swApp = Application.SldWorks
	Set swModel = swApp.NewPart
Dim Oboznachenie as String
Dim Naimenovanie as String
Oboznachenie=InputBox("Обозначение")
Naimenovanie =InputBox("Наименование")
swModel.AddCustomInfo3("", "Обозначение", swCustomInfoText, Oboznachenie)
swModel.AddCustomInfo3("", "Наименование", swCustomInfoText, Naimenovanie)
	Debug.Print "Заголовок изменён = " & swModel.SetTitle2(Oboznachenie & " - " & Naimenovanie)
End Sub
Ссылка на сообщение
Поделиться на других сайтах
9 часов назад, Maik812 сказал:

Total commander инструмент переименования плагин Solidworks.wdx переименует имя файла созданного по любым свойствам

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

 

можеть быть можно как-то использовать вот этот скрипт http://www.streamdivision.com/pereimenovanie-detaley/

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

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

@Сергей2014 ващет, всё должно происходить наоборот. И именно это делает программа (это не скрипт). Она берёт имя файла, разделённого пробелом "обозначение наименование" и вписывает в свойства.

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

 

Точнее добавление свойств AddCustomInfo3 без скобок:

9 часов назад, Kelny сказал:

Option Explicit
Sub main()
	Dim swApp				   As SldWorks.SldWorks
	Dim swModel				 As SldWorks.ModelDoc2
	Set swApp = Application.SldWorks
	Set swModel = swApp.NewPart 'создаём новую деталь
Dim Oboznachenie as String 'Объявляем строковую переменную
Dim Naimenovanie as String 'Объявляем строковую переменную
Oboznachenie=InputBox("Обозначение") 'Спрашиваем обозначение
Naimenovanie =InputBox("Наименование") 'Спрашиваем наименование
swModel.AddCustomInfo3 "", "Обозначение", swCustomInfoText, Oboznachenie 'Добавляем свойство Обозначение
swModel.AddCustomInfo3 "", "Наименование", swCustomInfoText, Naimenovanie 'Добавляем свойство Наименование
	Debug.Print "Заголовок изменён = " & swModel.SetTitle2(Oboznachenie & " - " & Naimenovanie) 'Меняем заголовок, заодно результат замены заголовка в отладочную консоль
End Sub

 

 

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

И именно это делает программа (это не скрипт). Она берёт имя файла, разделённого пробелом "обозначение наименование" и вписывает в свойства.

 ну в программировании - я как свинья в апельсинах, поэтому сорян если обидел.

 

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

 

 

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

ващет, всё должно происходить наоборот

 

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

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

поэтому сорян если обидел.

Ни разу. Просто я уточнил.

55 минут назад, Сергей2014 сказал:

сначала создается деталь с произвольным именем

Ну так и зачем ей тогда свойства? Если файл назван абы как.

В очередной момент у вас появится "Супердеталюшка.sldprt" со свойствами "Обозначение: АБВГ.100 Наименование: Уникальный биокирпич от майка218" и "НенужнаяДеталюшка.sldprt" со свойствами "Обозначение: АБВГ.100 Наименование: Уникальный биокирпич от майка218"

А что потом? Ставить тотолкомандер с кривоплагинами? Для поиска нужного файла по всему этому мусору.

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

Присоединяюсь к вопросу Сергей2014. Я делаю также. Сначала называю файлы: Супердеталюшка, Уникальный кирпич, Деталь1, Матрица..., но без заполнения свойств. После того как сборка готова создаю спецификацию, где расставляю детали в нужном порядке и прописываю Обозначение и меняю, если нужно, Наименование. И потом для порядка желательно переименовать и файлы, беря значения с Обозначения и Наименования.

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

В очередной момент у вас появится "Супердеталюшка.sldprt" со свойствами "Обозначение: АБВГ.100 Наименование: Уникальный биокирпич от майка218" и "НенужнаяДеталюшка.sldprt" со свойствами "Обозначение: АБВГ.100 Наименование: Уникальный биокирпич от майка218"

 

такое ощущение что мы не понимаем друг-друга....

Я работаю следующим образом.

1. Начинаю проектирование - появляется детали с названием "Деталь1.sldprt","Деталь2.sldprt","Деталь3.sldprt" и т.д. например до 10, и мне не важно какие у них свойства и как заполнены...

2. В процессе появляется детали с номерами 10-11-12, а деталь 2 и 3 удаляются из сборки, но в папке остаются на всякий случай, мало ли что...

3. В процессе появляется подсборки из разных деталей и добавляются еще детали.

4. Процесс проектировки законцился и начались подготовки к чертежам.

5. Захожу в свойства детали и ручками вбиваю обозначение и наименование.

6. После этого переименовываю детали чтобы они назывались "Обозначени"_"Наименование".sldprt

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

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

 

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

Но для этого нужно чтобы была ПДМ, а нам до неё как до китая раком...

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

5. Захожу в свойства детали и ручками вбиваю обозначение и наименование.

6. После этого переименовываю детали чтобы они назывались "Обозначени"_"Наименование".sldprt

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

37 минут назад, Сергей2014 сказал:

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

Но для этого нужно чтобы была ПДМ, а нам до неё как до китая раком...

Если в имени файла только обозначение оставить, то не вопрос, можно без ПДМ просто ссылку на имя файла брать и вставлять в поле обозначения или свойство, поменял имя файла, номер и в чертеже сменился.

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

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

 

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

 

или может быть я как-то неправильно подхожу к проектированию?

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

@Сергей2014 "в конце проектирования" изменяйте имена файлов и потом вносите свойства, оставшиеся - выкидывайте.

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

или может быть я как-то неправильно подхожу к проектированию?

У вас какая-то каша, вы сами-то читаете, что пишите.

У вас 4 пунктом:

Цитата

4. Процесс проектировки законцился и начались подготовки к чертежам.

Дальше нужно лишь поменять местами пункты 5-6, что бы сначала переименовывать фалы, потом добавить свойства.

 

1 час назад, Сергей2014 сказал:

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

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

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

5. Захожу в свойства детали и ручками вбиваю обозначение и наименование.

6. После этого переименовываю детали чтобы они назывались "Обозначени"_"Наименование".sldprt

Можно сначала переименовать деталь по принципу "Обозначение"-"Наименование", а потом запустить макрос, который запишет всё, что в имени файла до дефиса в свойство "Обозначение", а что после дефиса-в "Наименование". Вытащите кнопку макроса на панель инструментов и создайте "горячие клавиши" на макрос, те же "Ctrl+S". Макрос сам создаёт свойства, перезаписывает значения свойств, но не будет работать, если свойства уже существуют, но значения не заполнены.

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2

Sub main()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc


    If swModel.CustomInfo("Обозначение") = "" Then
      swModel.AddCustomInfo2 "Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, "-") - 1)
    Else
        swModel.CustomInfo("Обозначение") = Left(swModel.GetTitle, InStr(swModel.GetTitle, "-") - 1)
    End If

    If swModel.CustomInfo("Наименование") = "" Then
      swModel.AddCustomInfo2 "Наименование", swCustomInfoText, Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "-"))
    Else
        swModel.CustomInfo("Наименование") = Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "-"))
    End If

End Sub

 

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

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

во первых Солид запросит и просто указать. не так и сложно.

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

 

Ну а если ты хочешь автоматом то плагин Total commander нужен с Solidworks API. Собираем средства.. тогда все что связано с именем и значениями будет делать вместо солида.

translit.wdx имеет возможности исходя из значений менять по предварительной таблице имя файла.

Инструмент группового переименования имеет шаблоны, рег выражения и ид. Ве можно использовать но чтоб ссылки менять автоматом нужен Апи. жду 8 год его... кто сделает?

Jpeg_0001!.thumb.jpg.0d862da0516702ce92a47db371c84d5e.jpg

Изменено пользователем Maik812
Ссылка на сообщение
Поделиться на других сайтах
В ‎01‎.‎09‎.‎2017 в 13:14, streamdown сказал:

"в конце проектирования" изменяйте имена файлов и потом вносите свойства, оставшиеся - выкидывайте.

 А если версия выше 2016, файлы можно переименовывать прямо в дереве, затем запустить макрос, заполняющий свойства. Я файлы именую с разделителем "—" (длинное тире, клавиши Alt+0151), чтобы не обрезались дефисы, точки, пробелы, подчёркивания и т.д. в обозначениях и наименованиях. Файл называю по типу "17-001_1—Деталь-01", тогда макрос в обозначение записывает "17-001_1", а в наименование "Деталь-01".

Выкладываю немного доработанный вариант кода - после переименования компонентов в дереве, можно, не открывая подсборки и детали заполнять свойства "Обозначение" и "Наименование" у самой сборки и всех входящих компонентов, отключено предупреждение об ошибке, если в названии файла нет разделителя - всё имя файла просто запишется в графу "Наименование":

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

Dim swApp As SldWorks.SldWorks
Dim swModel As ModelDoc2

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
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
   
    count = swApp.GetDocumentCount
    vModels = swApp.GetDocuments
   
    For index = LBound(vModels) To UBound(vModels)

        Set swModel = vModels(index)

    Next index
   
    ' Save All

Set swModel = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = swModel.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized

Dim swErrors As Long
Dim swWarnings As Long
boolstatus = swModel.Save3(5, 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

  ' Убирает предупреждения, если файл не назван по типу Обозначение-Наименование
    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
   
    Set cpm = swModel.Extension.CustomPropertyManager("")
   
    'Разделитель в имени файла "-" можно заменить на свой, например —(длинное тире, клавиши Alt+0151)

    If swModel.CustomInfo("Обозначение") = "" Then
      swModel.AddCustomInfo2 "Обозначение", swCustomInfoText, Left(swModel.GetTitle, InStr(swModel.GetTitle, "-") - 1)
    Else
        swModel.CustomInfo("Обозначение") = Left(swModel.GetTitle, InStr(swModel.GetTitle, "-") - 1)
    End If

    If swModel.CustomInfo("Наименование") = "" Then
      swModel.AddCustomInfo2 "Наименование", swCustomInfoText, Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "-"))
    Else
        swModel.CustomInfo("Наименование") = Right(swModel.GetTitle, Len(swModel.GetTitle) - InStrRev(swModel.GetTitle, "-"))
    End If

End Function

 

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

А если версия выше 2016

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

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

×
×
  • Создать...