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

Переименование файлов сборки по "маске"


Ectoplaza

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

Собственно в вопросов два:

 

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

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

Есть ли в CATIA такая возможность?

 

p.s. PDM'ы не предлагать их нет у нас...

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


  • 2 месяца спустя...

@lexincton Написал скрипт, который рекурсивно обходит дерево, нумерует детали/сборки и обновляет дату ревизии документов входящих в сборку. Далее попытался сохранить измененные файлы под новыми именами, но получил ошибку. Не могу понять почему код не работает, строку с ошибкой закомментировал.

 

Reveal hidden contents  
Language = "VBSCRIPT"
Sub CATMain()
Set mainDocument = CATIA.ActiveDocument
Set rootAssembly = mainDocument.Product
sTmpPath = CATIA.ActiveDocument.Path
clrProp rootAssembly
setProp rootAssembly, 0, sTmpPath
clrProp rootAssembly
End Sub

Sub setProp(thisProduct, thisAsm, sTmpPath)
  Dim currAsm, currPrt
  currAsm = thisAsm
  currPrt = 0
  Set productList = thisProduct.Products
  setData thisProduct, currAsm, 0, "CADProduct", sTmpPath
  For i = 1 To productList.Count
    If (productList.Item(i).DescriptionRef <> "True" And _
        productList.Item(i).Revision <> "ANY") Then
      If (productList.Item(i).Products.Count > 0) Then
        currAsm = currAsm + 1
        setProp productList.Item(i), currAsm, sTmpPath
      Else
        currPrt = currPrt + 1
        setData productList.Item(i), thisAsm, currPrt, "CADPart", sTmpPath
      End If
    End If
  Next
End Sub

Sub setData(document, thisAsm, thisPrt, thisDfn, sTmpPath)
  document.PartNumber = "MP 2720 " & _
    String(2 - Len(thisAsm), "0") & thisAsm & _
    String(2 - Len(thisPrt), "0") & thisPrt
  document.Definition = "Definition"
  document.Revision = getDate()
  document.DescriptionRef = "True"

  'Error: Object doesn't support this property or method "document.SaveAs"
  'document.SaveAs(sTmpPath & "\" & document.PartNumber & " " & _
  'document.Definition & " " & document.Revision & "." & thisDfn)
End Sub

Function getDate()
  SetLocale "en-us"
  Dim currDay, currMonth, currYear, mark
  currDay = Day(Date)
  currMonth = Month(Date)
  currYear = Year(Date) Mod 100
  getDate = String(2 - Len(currDay), "0") & currDay & "." & _
         MonthName(currMonth,true) & "." & currYear
End Function

Sub clrProp (thisProduct)
  Set productList = thisProduct.Products
  For i = 1 To productList.Count
    productList.Item(i).DescriptionRef = ""
    clrProp productList.Item(i)
  Next
End Sub
Hide  

 

А вот код, что ниже  под спойлером, работает, т.е. сохраняет деталь под новым именем. Код простой, в нем нет проверки соответствия типу, работает только с ранее сохраненными деталями, но, тем не менее работает.

 

Reveal hidden contents  
Language = "VBSCRIPT"
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set product1 = partDocument1.GetItem("PartName")

partDocument1.SaveAs(CATIA.ActiveDocument.Path & "\" & product1.PartNumber & " " & _
		     product1.Definition & " " & product1.Revision & ".CATPart")
End Sub
Hide  

 

Буду благодарен за любую помощь.

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

@lexincton Строку "document.SaveAs" заменил на "document.ReferenceProduct.Parent.SaveAs" и все заработало.

Правда я так и не понял что я сделал. Пока что в работе макроса много ограничений, но он работает.

 

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

 

Reveal hidden contents  

33.JPG.6906c14f82942b32c09516165f42beee.JPG

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

'Language = "VBSCRIPT"
Sub CATMain()
CATIA.DisplayFileAlerts = False
Set mainDocument = CATIA.ActiveDocument
Set rootAssembly = mainDocument.Product
sTmpPath = CATIA.ActiveDocument.Path
clrProp rootAssembly
setProp rootAssembly, 0, sTmpPath
clrProp rootAssembly
CATIA.DisplayFileAlerts = True
End Sub

Sub setProp(thisProduct, thisAsm, sTmpPath)
  Dim currAsm, currPrt
  currAsm = thisAsm
  currPrt = 0
  Set productList = thisProduct.Products
  setData thisProduct, currAsm, 0, "CADProduct", sTmpPath
  For i = 1 To productList.Count
    If (productList.Item(i).DescriptionRef <> "True" And _
        productList.Item(i).Revision <> "ANY") Then
      If (productList.Item(i).Products.Count > 0) Then
        currAsm = currAsm + 1
        setProp productList.Item(i), currAsm, sTmpPath
      Else
        currPrt = currPrt + 1
        setData productList.Item(i), thisAsm, currPrt, "CADPart", sTmpPath
      End If
    End If
  Next
End Sub

Sub setData(document, thisAsm, thisPrt, thisDfn, sTmpPath)
  document.PartNumber = "MP 2720 " & _
    String(2 - Len(thisAsm), "0") & thisAsm & _
    String(2 - Len(thisPrt), "0") & thisPrt
  document.Definition = "Definition"
  document.Revision = getDate()
  document.DescriptionRef = "True"
  'Error: Object doesn't support this property or method "document.SaveAs"
  Dim dc As document
  Set dc = document.ReferenceProduct.Parent
  dc.SaveAs sTmpPath & "\" & document.PartNumber & " " & document.Definition & " " & document.Revision & "." & thisDfn
End Sub

Function getDate()
Dim codeString As String
Dim scriptControl As Object
Set scriptControl = CreateObject("MSScriptControl.ScriptControl")

codeString = "Sub getDateByLocale(locale)" & vbCrLf & "SetLocale locale" & vbCrLf & " End Sub"
With scriptControl
    .Language = "VBScript"
    .addCode codeString
    printDateByLocale = .Run("getDateByLocale", "en-us")
End With
  Dim currDay, currMonth, currYear, mark
  currDay = Day(Date)
  currMonth = Format(Date, "m") 'MonthName(Month(Now)) '
  
  currYear = Year(Date) Mod 100
  getDate = String(2 - Len(currDay), "0") & currDay & "." & _
         Format(Date, "m") & "." & currYear
End Function

Sub clrProp(thisProduct)
  Set productList = thisProduct.Products
  For i = 1 To productList.Count
    productList.Item(i).DescriptionRef = ""
    clrProp productList.Item(i)
  Next
End Sub

 

Ну зачем у продукта то сейв аз вызывать. Код в примере для VBA. Кстати после SetLocale месяц все равно русский (может на скрипте срабатывает, может неправильно вызываю - не уверен).

CATIA.DisplayFileAlerts = False

 возможно поможет

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

@Martmath2  Спасибо, это именно то что мне нужно было.

 

Тестовая сборка до применения макроса 

5be5862b0e436_1bedore.JPG.6eb31c4ae4cb01ca0354a73e6727070d.JPG

Hide  

 

Тестовая сборка после применения макроса  

5be5862bcbf36_2after.JPG.136ffd80540490b78055e9d57e264baa.JPG

Hide  

 

В планах добавить дополнительную проверку и обновлять дату ревизии только тем сборкам/деталям, в которые вносились правки. Правда пока не знаю как получить доступ к этому свойству. Предполагаю что должно быть какое-то свойство "Modified"  но пока не нашел.

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

Sub CATMain()
Dim productDocument1 As ProductDocument
Set productDocument1 = CATIA.ActiveDocument
Dim product1 As Product
Set product1 = productDocument1.Product
rtt = FileDateTime(product1.ReferenceProduct.Parent.FullName)
End Sub

 

Дату из файла сравнивать с тем что записал до этого, как вариант.

Цитата

Предполагаю что должно быть какое-то свойство "Modified"

нету.

Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...
В 09.11.2018 в 18:12, Ectoplaza сказал:

@Martmath2  Спасибо, это именно то что мне нужно было.

 

Тестовая сборка до применения макроса 

5be5862b0e436_1bedore.JPG.6eb31c4ae4cb01ca0354a73e6727070d.JPG

Hide  

 

Тестовая сборка после применения макроса  

5be5862bcbf36_2after.JPG.136ffd80540490b78055e9d57e264baa.JPG

Hide  

 

В планах добавить дополнительную проверку и обновлять дату ревизии только тем сборкам/деталям, в которые вносились правки. Правда пока не знаю как получить доступ к этому свойству. Предполагаю что должно быть какое-то свойство "Modified"  но пока не нашел.

Всем привет. Итоговым вариантом макроса можете поделиться?

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • mactepnew
      Вот я тоже так думал, пока не столкнулся с обратным) Как еще столкнусь, пришлю скриншот. Хаос еще в том, что порядок в дереве построения весьма условный. операция, которая стоит перед групой, имеет бОльший timestamp(пардон, не знаю как это в переводе), чем эта группа, и выполняется позже. При этом все операции в группе имеют timestamp на пару сотен меньше и выполняются раньше, чем две группы, стоящие перед ней. Логика?  Если в эскизе все элементы определены, то можно поставить еще один размер (хочешь переопределить эскиз - да пожалста!), изменить его - и NX самостоятельно выберет, какой размер или ограничение отпустить и весь эскиз летит к чертям. Это ли не хаос?   Назовете хоть один CAD, которым можно пользоваться так? Любой из встреченных мной имеет много неочевидных нюансов, которые конечно не проявляются при выполнении университетского или базового курса. В Creo я на протяжении 5 лет находил всё новые фишки, которые не прописаны в документации. Огромная благодарность Ruslan за пояснения тонкостей. Даже Компас и Solidworks, которые считаются самыми дружественными, оказалось непросто обуздать, когда проходил собеседования и делал тестовые. А ведь университетский курс знал на отлично!   Возвращаясь к NX - вот сегодняшний пример. Утром деталь была оранжевая, единая. Изменил пару уклонов и толщин, стала желтая с элементами оранжевого и частично твердотельной, частично листовой. Я даже не знаю, как сформулировать вопрос в поддержку. 
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • kkk
      Короче, как сделать автоматом не нашел. Раскрасил нужные грани нужными цветами. Затем на вкладке с цветом модели можно выбирать нужный цвет, тогда в модели выбираются грани, покрашенные этим цветом. Можно еще сохранить выбор этих граней, но смысла не вижу, т.к. все легко выбирается по цвету. Затем либо в инструменте Измерить смотрим площадь и как-то ее используем, либо можно макросом (что выкладывал Kir95 ) внести площадь в свойства (на вкладку Конфигурации). Можно еще внести выбранные грани в датчики, но как использовать их в свойствах не нашел.    Макрос прикрепляю.     Площадь выбранных граней в свойства.swp
    • IgnatvKudrin
      Для нашего производства требуются постоянно инструментальные пружины для штампов. Сейчас заказы обрабатываются довольно долго - до 2-х месяцев. А у нас сроки на штампы 1-2 месяца с испытанием, доработкой и т.п. Хотелось бы найти поставщика, у которого уже есть склад с данными пружинами или кто может доставить за 1 месяц.   Пружины стандартные по ISO, но на всякий случай приложил каталог. Вот список пружин, которые нужны очень срочно:   LR 32 x 44 - 1 шт. LR 25 x 51 - 2 шт. LB 63 x 89 - 7 шт. LB 32 x 102 - 10 шт. LB 32 x 89 - 20 шт. LB 32 x 76 - 12 шт. LB 32 x 51 - 6 шт. LB 25 x 127 - 9 шт.   Готов выслушать все предложения. Возможно даже есть те, кто сможет изготовить подобные пружины с такими же параметрами. 20231101.pdf
    • bubblyk
      Знатоки форума, подскажите, как смоделировать простую (на первый взгляд) задачу термомеханики в упругой постановке.   Есть брусок правильный формы ака кирпич, в котором генерируется НЕРАВНОМЕРНОЕ удельное тепловыделение (HGEN). Задняя и передняя поверхности конвективно охлаждаются с известными (но различными) коэффициентами теплоотдачи и температурами жидкости/газа. Свойства кирпича (теплофизика + механика) принимаются зависящими от температуры. Постановка - стационарная Собственно вопрос : как грамотно смоделировать температурное поле в кирпиче с учетом температурного расширения?   Исходный код приложил.     Надеюсь на коллективный разум и опыт! EPTH2D.mac p.s.   Если есть опыт решения этой задачи в Ansys WB, тоже можно сюда приложить командные вставки.
    • OutXL
      Это было давно использовал NC-Link  и данную инструкцию. The Maho.docx
    • Mikhail_Podgornyj
      Добрый день, кто может поделиться SKF Bearing V1.6 (ANSYS App)? Заранее благодарен!
    • alexqwq10
      В данных корпусах ничего лишнего быть не должно. Максимум шпильки заземления, в количестве предусмотренном для конкретного корпуса. Рассматривал очень много подобных корпусов разных производителей и данная проблема актуальна для подавляющего большинства.
    • MFS
      Коллеги, приветствую, нужно штамповать на горячую из алюминиевого сплава (АК6 или около того) заготовки размером 280*180*12. Подскажите, пожалуйста, параметры пресса для такой заготовки - размеры, усилия. А есл дадите пример такой марки и модели, более менее подходящей для этой работы (нашего или импортного), то будет и еще лучше. Заранее спасибо!
    • Elbaro
      Добрый день. Уже несколько дней пытаюсь найти на просторах инета макрос, позволяющий менять материал выделенных деталей в сборке. У меня есть макрос это делающий, но только в открытой детали, заставить его работать в сборке не получается. Может кто поделится ссылкой или часть кода? Спасибо.
×
×
  • Создать...