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

значения переменных в макросе из 3d модели


алексей556

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

5 минут назад, Kir95 сказал:

У вас свойство CNCKad прописано заранее? И вы в свойствах Конфигурации вручную или макросом заполняете значение Сортамент и Толщина, получаете значение  CNCKad, затем хотите запустить макрос, который бы активный файл "Деталь1_00" сохранил под именем "Деталь1_00 Оцинковка-2мм" в папку детали? То есть "Имя файла+CNCKad"? Версия солида какая?

Сортамент и толщина заполняются макросами. Файл у меня остается с прежним названием.  НО, ЭКСПОРТ dft и dxf файлов произойдет в файл "Деталь1_Оцинковка-2мм_00.dxf" (dft). Экспорт идет через cad link с использованием штатной настройки.

Свойство CNCKad хочу создавать макросом, тк cad link берет не значение свойства, а текст свойства.

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


12 часа назад, Solan сказал:

Сортамент и толщина заполняются макросами

Если из списка вырезов, так и создавайте этим же макросом свойство CNCKad с объединением значений Сортамент и Толщина граничной рамки (может по другому называться, посмотрите в своём макросе), вот пример (работает, начиная с 12 версии солида):

Sub main()
    Dim swApp               As SldWorks.SldWorks
    Dim swModel             As SldWorks.ModelDoc2
    Dim swFeat              As SldWorks.Feature
    Dim swCustPropMgr       As SldWorks.CustomPropertyManager
    Dim strValue(3)         As String
    Dim swBodyFolder        As SldWorks.BodyFolder


          
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swFeat = swModel.FirstFeature

    
    swModel.ForceRebuild3 True
    
    Do While Not swFeat Is Nothing
    
        If swFeat.GetTypeName = "SolidBodyFolder" Or swFeat.GetTypeName = "CutListFolder" Or swFeat.GetTypeName = "SubWeldFolder" Then
        Set swBodyFolder = swFeat.GetSpecificFeature2
        swBodyFolder.UpdateCutList
                
            If UCase(swFeat.Name) Like "*" Then
                    swFeat.CustomPropertyManager.Get2 "Толщина граничной рамки", strValue(0), strValue(1)
                    swFeat.CustomPropertyManager.Get2 "Сортамент", strValue(2), strValue(3)

            End If
            
        End If
        
    Set swFeat = swFeat.GetNextFeature
    Loop
    
Set swCustPropMgr = swModel.Extension.CustomPropertyManager("")
    swCustPropMgr.Add2 "CNCKad", strValue(3) & "-" & strValue(1) & "мм"

End Sub

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

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

забыл в предпоследнюю строчку тип поля добавить, вот так нужно:

swCustPropMgr.Add2 "CNCKad", 30, strValue(3) & "-" & strValue(1) & "мм"

 

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

@Kir95 Вставил код в существующий макрос, работает. Спасибо.

Но столкнулся с такой бякой - при изменении толщины или сортамента для обновления значения в свойствах файла необходимо было удалять свойство (новое значение не присваивалось)

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

Но столкнулся с такой бякой - при изменении толщины или сортамента для обновления значения в свойствах файла необходимо было удалять свойство (новое значение не присваивалось)

Просто нужно отслеживать наличие свойства и в этом случае либо удалять свойство с последующем добавлением или использовать инструмент замены значения свойства. Но второй инструмент не работает, если свойства нет и поэтому всё равно потребуется отслеживать наличие свойства с последующим добавлением.

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

необходимо было удалять свойство

Не надо

swCustPropMgr.Add3 "CNCKad", swCustomInfoText, strValue(3) & "-" & strValue(1) & "мм", swCustomPropertyDeleteAndAdd

 

Или даже лучше по правилам:

Dim retResult As swCustomInfoAddResult_e
retResult = swCustPropMgr.Add3("CNCKad", swCustomInfoText, strValue(3) & "-" & strValue(1) & "мм", swCustomPropertyDeleteAndAdd)

А то блин сплошной текст выше, а не метод.

Изменено пользователем streamdown
Ссылка на сообщение
Поделиться на других сайтах
В ‎27‎.‎01‎.‎2018 в 23:12, Solan сказал:

Версия солида какая?

-не ответил.

Add3, в 2014 солиде, вроде бы появился, может не сработать в более ранних версиях, я так понимаю.

Если свойство есть в шаблоне детали, тогда удобней поставить swCustomPropertyReplaceValue или 2,

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

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

не ответил.

Сорри... SW 2017sp3 и на на второй машинке sp5. 

Ребят, спасибо. Завтра не смогу обкатать - буду в Москве. Опробую в среду.

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

@streamdown , @Kir95 , @Kelny

Заработало обновление свойства только с swCustomPropertyReplaceValue.

С swCustomPropertyDeleteAndAdd не смог добиться обновления свойства.

Спасибо.

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

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

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

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

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

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

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

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

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

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

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




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