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

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

Всем салют!

Макрос высвечивает subFeature, но только активной конфигурации. Подскажите как сделать чтобы subFeature высветились на всех конфигурациях?

 

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim Part As SldWorks.ModelDoc2
    Dim feature As Object
    Dim feat As Object
    Dim featureName As String
    Dim bres As Boolean
    
    Set swApp = Application.SldWorks
    Set swApp = CreateObject("SldWorks.Application")
    Set Part = swApp.ActiveDoc
    Set swModel = swApp.ActiveDoc
    Set feature = Part.FirstFeature
    
    ' Dim ConfigNames As Variant
    ' Dim i As Integer
    '
    ' ConfigNames = Part.GetConfigurationNames
    ' For i = 0 To UBound(ConfigNames)
    
    While Not feature Is Nothing
    
        featureName = feature.Name
        
        Set subFeat = feature.GetFirstSubFeature
        
            While Not subFeat Is Nothing
            
            subFeatureName = subFeat.Name
            
                If InStr(1, featureName, SearchStr, 1) Then
                
                    res = Part.SelectByID(subFeatureName, "BODYFEATURE", 0, 0, 0)
                    
                    res = Part.EditUnsuppress()
                    
                    bres = swModel.EditRebuild3
                
                End If
            
            Set subFeat = subFeat.GetNextSubFeature
            
            Wend
        
        Set feature = feature.GetNextFeature()
    
    Wend
    
    ' Next

End Sub

post-41325-0-53655800-1387346791_thumb.png

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


Всем салют!

Макрос высвечивает subFeature, но только активной конфигурации. Подскажите как сделать чтобы subFeature высветились на всех конфигурациях?

 

Sub main()

    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim Part As SldWorks.ModelDoc2
    Dim feature As Object
    Dim feat As Object
    Dim featureName As String
    Dim bres As Boolean
    
    Set swApp = Application.SldWorks
    Set swApp = CreateObject("SldWorks.Application")
    Set Part = swApp.ActiveDoc
    Set swModel = swApp.ActiveDoc
    Set feature = Part.FirstFeature
    
    ' Dim ConfigNames As Variant
    ' Dim i As Integer
    '
    ' ConfigNames = Part.GetConfigurationNames
    ' For i = 0 To UBound(ConfigNames)
    
    While Not feature Is Nothing
    
        featureName = feature.Name
        
        Set subFeat = feature.GetFirstSubFeature
        
            While Not subFeat Is Nothing
            
            subFeatureName = subFeat.Name
            
                If InStr(1, featureName, SearchStr, 1) Then
                
                    res = Part.SelectByID(subFeatureName, "BODYFEATURE", 0, 0, 0)
                    
                    res = Part.EditUnsuppress()
                    
                    bres = swModel.EditRebuild3
                
                End If
            
            Set subFeat = subFeat.GetNextSubFeature
            
            Wend
        
        Set feature = feature.GetNextFeature()
    
    Wend
    
    ' Next

End Sub

Один из вариантов заложен же в вашем вопросе. Включить ваш цикл в цикл активации каждой конфигурации.

И если вы получили ссылку на Feature и она прошла вашу проверку, зачем использовать снова SelectByID? У Feature есть методы IsSuppressed2 для проверки погашенности и SetSuppression2 для установки погашенности...

 

P.S. И зачем применять строку bres = swModel.EditRebuild3 в каждой итерации?

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

@@Shvg, а можно чуть подробнее на этом месте "Включить ваш цикл в цикл активации каждой конфигурации" ?

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

@@Nazarrr,

ну всё же понятно)))

раскомментируйте

Dim ConfigNames As Variant
Dim i As Integer
ConfigNames = Part.GetConfigurationNames
For i = 0 To UBound(ConfigNames)
Ссылка на сообщение
Поделиться на других сайтах

@@streamdown, в том то и дело, не работает)) 

SolidWorksFile.rar

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

@@Shvg, а можно чуть подробнее на этом месте "Включить ваш цикл в цикл активации каждой конфигурации" ?

Я, к сожалению, не внимательно посмотрел код и ошибся с конфигурациями. Если и сейчас правильно понял проблему, то вот небольшой код:

Sub main()
    On Error GoTo LineError
    Set swApp = Application.SldWorks
    Dim swModel As ModelDoc2
    Set swModel = swApp.ActiveDoc
    
    If swModel Is Nothing Then Exit Sub
    
    Dim typeDoc As Integer
    typeDoc = swModel.GetType()
    
    If typeDoc <> swDocPART Then Exit Sub
    
    Dim swPart As PartDoc
    Set swPart = swModel
    
    Dim arrNamesConfig As Variant
    arrNamesConfig = swModel.GetConfigurationNames()
        
    Dim swFeature As SldWorks.Feature
    Set swFeature = swPart.FirstFeature
    
    Dim strSearch As String
    strSearch = "Flat-Pattern"
    
    While Not swFeature Is Nothing
        Dim nameTypeFeature As String
        nameTypeFeature = swFeature.GetTypeName2()
        
        Dim swSubFeature As SldWorks.Feature
        Set swSubFeature = swFeature.GetFirstSubFeature()
        
        If nameTypeFeature = "FlatPattern" Then
            While Not swSubFeature Is Nothing
                Dim nameTypeSubFeature As String
                nameTypeSubFeature = swSubFeature.GetTypeName2()
                
                Dim nameSubFeature As String
                nameSubFeature = swSubFeature.Name()
                
                If nameTypeSubFeature = "UiBend" Then
                    
                    Dim bres As Boolean
                    bres = swSubFeature.SetSuppression2(swUnSuppressFeature, swAllConfiguration, arrNamesConfig)
                
                End If
                
                Set swSubFeature = swSubFeature.GetNextSubFeature()
            Wend
        End If
        Set swFeature = swFeature.GetNextFeature()
    Wend
    
    swModel.EditRebuild3
    Exit Sub
    
LineError:
End Sub

 

P.S. Nazarrr, указывайте версию SW.

   

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

Не обязательно

Sub main()


Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim Part As SldWorks.ModelDoc2
    Dim feature As Object
    Dim feat As Object
    Dim featureName As String
    Dim bres As Boolean
    
    Set swApp = Application.SldWorks
    Set swApp = CreateObject("SldWorks.Application")
    Set Part = swApp.ActiveDoc
    Set swModel = swApp.ActiveDoc
    'Set feature = Part.FirstFeature
   
    Dim ConfigNames As Variant
    Dim i As Integer
    
     ConfigNames = Part.GetConfigurationNames
     For i = 0 To UBound(ConfigNames)
        sConfigName = ConfigNames(i)
        bShowConfig = swModel.ShowConfiguration2(sConfigName)
    Set feature = Part.FirstFeature
    While Not feature Is Nothing
    
        featureName = feature.Name
           Set subFeat = feature.GetFirstSubFeature
               While Not subFeat Is Nothing
               subFeatureName = subFeat.Name
            
                If InStr(1, featureName, SearchStr, 1) Then
                
                    res = Part.SelectByID(subFeatureName, "BODYFEATURE", 0, 0, 0)
                    
                    res = Part.EditUnsuppress()
                    
                    bres = swModel.EditRebuild3
                
                End If
            
            Set subFeat = subFeat.GetNextSubFeature
            
            Wend
        
        Set feature = feature.GetNextFeature()
    
    Wend
    
    Next


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

 

Не обязательно

Значит я не ошибся с мыслю о конфигурациях.... Хотя SetSuppression2, на мой взгляд, все таки элегантней...

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

@@Shvg, не элегантней - правильней. Ибо в детали может быть несколько погашенных элементов (не в работе).

Так что @@Nazarrr, код и там и там рабочий. Но если вы собираетесь работать именно с разверткой - смотрите код @@Shvg.

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

Добрый вечер, господа!

 

Помогите с OpenDoc6 :happy:

Добавляю в EPDM Add-in приложение, когда захожу в хранилище хочу на выбранном файле запустить его. Чтобы сработало правильно приложение должен открыться выбранный документ SolidWorks и произвести операцию и затем закрыться. Как бы у меня все работает в "Задачах(Сценарий VBA)", а как реализовать на VB.NET для меня загадка?

Вот как реализован код в сценарии задачи EPDM:

Может подскажите где копать?  :biggrin:

Спасибо.

 

Dim fileName As String
fileName = "<Filepath>"

Set swApp = Application.SldWorks

Set pdmVault = CreateObject("ConisioLib.EdmVault")
Dim folder As Object
Dim file As Object
pdmVault.Login USERNAME, PASSWORD, VAULT_NAME
Set file = pdmVault.GetFileFromPath(fileName, folder)

If False = file.IsLocked Then
file.LockFile folder.ID, 0
End If

Set swModel = swApp.OpenDoc6(fileName, swDocumentTypes_e.swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", 0, 0)

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

 

Добрый вечер, господа!

 

Помогите с OpenDoc6 :happy:

Добавляю в EPDM Add-in приложение, когда захожу в хранилище хочу на выбранном файле запустить его. Чтобы сработало правильно приложение должен открыться выбранный документ SolidWorks и произвести операцию и затем закрыться. Как бы у меня все работает в "Задачах(Сценарий VBA)", а как реализовать на VB.NET для меня загадка?

Вот как реализован код в сценарии задачи EPDM:

Может подскажите где копать?  :biggrin:

Спасибо.

А в чем проблема то? Нет ссылки на SldWorks?

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

@@Shvg,Перенес на VB.NET код VBA, не работает, только реагирует если задать в переменной FileName конкретный путь к файлу

fileName = "С:\1.sldprt"

И то SolidWorks не открывает файл, а просто появляется процесс(если посмотреть в диспетчере задач) SOLIDWORKS и висит там пока не завершить процесс вручную.

А хотелось чтобы по нужному ФАЙЛУ клацнуть правой клавишей мышки, выбрать приложение и запустить( в частности с открыванием нужного файла в SolidWorks).

Смотрел много примеров, но в них конкретно привязываются к пути файла  fileName = "С:\....."

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

Проблема вся в том что, в процессе висит SOLIDWORKS, но дальше ничего не происходит. Файл не открывается... =( 

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

Салют!


Подскажите как открыть выбранный документ SolidWorks не по указанному пути?


 


Dim fileName As String = "C:\1.sldprt"


 


        swApp = CreateObject("SldWorks.Application")


        swApp.Visible = True


 


        System.Threading.Thread.Sleep(5000)


 


        swModel = swApp.OpenDoc(fileName, swDocumentTypes_e.swDocPART)


Ссылка на сообщение
Поделиться на других сайтах
А хотелось чтобы по нужному ФАЙЛУ клацнуть правой клавишей мышки, выбрать приложение и запустить( в частности с открыванием нужного файла в SolidWorks).

Это уже не Solidworks. Смотрите, что-нибудь вроде этого: https://www.google.ru/search?ie=UTF-8&hl=ru&q=VB.NET%20explorer%20context%20menu

И/или WinAPI

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

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

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

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

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

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

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

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

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

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

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



  • Сообщения

    • Snake 60
      Скорее всего исправляли в конкретной сборке, для конкретных тел. Насколько я помню, надо в самом эскизе профиля заполнить свойство Description
    • Snake 60
      Делаете дырку в свае - вставляете в нее трубу и 2 человеко-силы крутят сваю ) Дёшево и сердито и не нужен никакой планетарный редуктор ))
    • gudstartup
      вы всегда ищите свой путь или будете делать то что вам советуют? с самого начала прежде чем приступать к экспериментам вам нужно было вынуть носитель и сделать образ. diskcopy делает копию гибкого диска на другой а вам надо сделать образ жесткого диска или карты памяти. делайте как советует @Viktor2004 иначе еще чего нибудь сломаете или вам станок не нужен и вы его приобрели для экспериментов ? вот а печатной машинке из прошлого нельзя а вот на синумерике можно - удивительные вещи в настоящем происходят!! на 100 % уверен что там не модуль а либо писимиси ай либо жд @mircomax81 хотите работать в дос почитайте помощь по командам 
    • PuKoLLleT
      Доброго дня всем. Поделитесь опытом,раньше такое не доводилось делать. На торце фланца нужно сделать  восемь отверстий ф17H7 на токарно-фрезерном станке с осью Y ,имеется ManualGuide.В моем понимании нужно просверлить,а затем торцевой фрезой расточить нужный диаметр.Получится такой фокус,или надо разверткой доводить нужный размер?  Стойка Fanuc 0i-Tf.
    • Snake 60
      Всё верно, я даже русификатор делал для него (ушло на это где-то около года). Хороший софт был, я всех знакомых на него подсадил в свое время :) У меня даже где-то образ на виртуалке лежит с SW2014+MechSoft, Жаль, что автодеск его поглотил, а не DS :( А по сути вопроса, проектировал двухступенчатый планетарный редуктор в свое время. Что было нужно: Справочник по планетаркам (автора не помню, если надо поищу), из софта MathCAD + GearTeq (софтина идет вместе с GearTrax, только рассчитывает и моделирует несколько зацеплений согласно выбранной схеме, в том числе планетарки) Ой и ошибаетесь. Звездочки - не равно зубчатые колеса в планетарке) Мы намучились с малой точностью изготовления на эл.эрозии, а Вы лазером ))) Был собран опытный образец редуктора с незакаленными деталями, чисто проверить геометрию, отладить сборку. Так потом начальство этот редуктор сказало испытать в бою, как я не противился)) Помер за пару дней интенсивных нагрузок ))) Материал, термообработка и точности изготовления решают )
    • Snake 60
      @Тихоход  Ещё один вариант - изучать программирование и писать свою программу/макрос. Вот пример конфигуратора двери: https://www.youtube.com/watch?v=wv4HryWQBSk
    • mircomax81
      Посредством Diskcopy можно сделать адекватную копию на флоппи диск?
    • Andrey_kzn
      Да, ведь советовали автору вытащить жёсткий диск и сделать образ. Неужели самому не интересно, как устроен этот старый промкомпьютер? Там может стоять как жёсткий диск, так и CF-карта, или же Disc-on-chip или Disc-on-module.  Как-то очень давно, на подобном промышленном оборудовании (большая печатная машина) я не смог перенести  ПО с родной CF - карты на другую, такого же размера но другой фирмы. Была также станочная оболочка под досом.  Образ я делал Нортон гостом, развернул его на другую CF-карту без проблем. Машина загрузилась нормально и работала ровно 2 дня, на неродной CF-карте,  потом зависла, и отказалась загружаться. Пришлось вызывать сервисника. От него мы узнали, что нельзя просто так взять и заменить карту  - носитель системного ПО, на другую. А полезли мы туда, так как руководство захотело печатать отчёты по работе машины. В станочном ПО такая функция была. Вот только принтер надо было купить у фирмы - производителя этой самой машины. В попытках заставить работать другой принтер мы редактировали файл  AUTOEXEС.BAT, на предмет загрузки драйвера принтера, ничего не получилось, зато перестали открываться некоторые страницы станочного ПО.  Образ у нас был давно снят, и мы развернули его на другую карту памяти. Родную карту я трогать не стал (как чувствовал, что нельзя ). Сервисник восстановил ПО с архивной дискеты на родную карту памяти, и всё заработало. Дискеты с архивами ПО шли вместе с документацией к машине.  Там были дискеты с Досом, станочной оболочкой, параметрами приводов, программой ПЛК. Он же и предупредил нас о предельно аккуратном обращении с родной картой памяти, и посоветовал немедленно сделать образы с архивных дискет, что мы сразу и проделали.. Вот такой сюрприз от машины эпохи Дос.
    • Борман
    • gudstartup
      а ведь все работало...
×
×
  • Создать...