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

Макрос для экспорта данных о деталях


johnny.mk

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

Здравствуйте. Подскажите пожалуйста, есть ли возможность написания макроса, который бы экспортировал данные о деталях сборки в excel-файл? К примеру: моменты инерции, массы, координаты центров масс.

Если такое всё же существует, был бы рад глянуть на пример и источники, с которых можно черпать информацию данного рода. Благодарю)

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


13 часа назад, johnny.mk сказал:

есть ли возможность написания макроса, который бы экспортировал данные о деталях сборки в excel-файл? К примеру: моменты инерции, массы, координаты центров масс.

Можете написать макрос.

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

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

Макрос сохраняет свойства файла (не все, а которые я захотел) в экселе...

Sub prop2xls()
 Dim swModel As ModelDoc2
 Dim mde As SldWorks.ModelDocExtension
 Dim swConfigMgr As SldWorks.ConfigurationManager
 Dim swConfig As SldWorks.Configuration
 Dim swCustPropMgr As SldWorks.CustomPropertyManager
 Dim cpm As CustomPropertyManager
 Dim strName() As String
 Dim strValue() As String
 Dim strResValue() As String
 Dim i As Integer
 Dim strTemp1 As String, strTemp2 As String
 Dim vNames As Variant
 Dim xls As Object
 Dim wbs As Excel.Workbooks
 Dim wbk As Excel.Workbook
 Dim wsh As Excel.Worksheet
 Dim rng As Range
 
 Set swApp = Application.SldWorks
 Set swModel = swApp.ActiveDoc

 ' Начальные проверки
 If swModel Is Nothing Then
     MsgBox "Ничего не открыто", , "Откройте сборку или деталь"
     Exit Sub
 End If
 If swModel.GetType <> swDocASSEMBLY And swModel.GetType <> swDocPART Then
     MsgBox "Текущий документ д.б. сборкой или деталью!", , "Откройте сборку или деталь"
     Exit Sub
 End If

 Set mde = swModel.Extension
 Set cpm = mde.CustomPropertyManager("")

 ReDim strName(cpm.Count + 2) As String
 ReDim strValue(cpm.Count + 2) As String
 ReDim strResValue(cpm.Count + 2) As String

 ' обозначение и наименование из текущей конфигурации
 Set swConfigMgr = swModel.ConfigurationManager
 Set swConfig = swConfigMgr.ActiveConfiguration
 Set swCustPropMgr = swConfig.CustomPropertyManager
 strName(0) = "": strName(1) = ""
 vNames = swCustPropMgr.GetNames
 For i = 0 To swCustPropMgr.Count - 1
   swCustPropMgr.Get2 vNames(i), strTemp1, strTemp2
   If UCase(vNames(i)) = "ОБОЗНАЧЕНИЕ" Then
     strName(0) = vNames(i)
     strValue(0) = strTemp1
     strResValue(0) = strTemp2
   End If
   If UCase(vNames(i)) = "НАИМЕНОВАНИЕ" Then
     strName(1) = vNames(i)
     strValue(1) = strTemp1
     strResValue(1) = strTemp2
   End If
 Next i

 ' запоминание имён и значений свойств из средней вкладки в массивы и вывод массивов в Excel
 vNames = cpm.GetNames
 If IsEmpty(vNames) = False Then
    For i = 0 To UBound(vNames)
    cpm.Get3 vNames(i), True, strValue(i + 2), strResValue(i + 2)
    strName(i + 2) = vNames(i)
    Next i
    On Error Resume Next
    i = 0
    Set xls = GetObject(, "Excel.Application")
    If Err Then
      Err.Clear
      Set xls = CreateObject("Excel.Application")
      If Err Then
        Err.Clear
        On Error GoTo 0
        MsgBox "Не могу запустить Excel"
        Exit Sub
      End If
    'Else
      'i = 1
    End If
    On Error GoTo 0
    xls.Visible = True
    'If i = 1 Then
      'Set wbk = xls.ActiveWorkbook
    'Else
      Set wbs = xls.Workbooks
      Set wbk = wbs.Add
    'End If
    With wbk.Worksheets(1)
       For i = 0 To UBound(vNames) + 2
           .Cells(i + 1, 1).Value = strName(i) 'add 1 because row 0 doesn't exist
           .Cells(i + 1, 2).Value = strValue(i)
           .Cells(i + 1, 3).Value = strResValue(i)
       Next i
    End With
    Set rng = wbk.Worksheets(1).UsedRange
    rng.Columns.AutoFit
    Set xls = Nothing
    Set wbs = Nothing
    Set wbk = Nothing
 End If
End Sub

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

Перед запуском макроса нужно ещё библиотеку подключить в VBA Tools->Reference-

Microsoft Excel XX.0 Type Library (ХХ-версия Эксель)

 

Ссылка на сообщение
Поделиться на других сайтах
В 02.04.2019 в 21:57, johnny.mk сказал:

есть ли возможность написания макроса, который бы экспортировал данные о деталях сборки в excel-файл? К примеру: моменты инерции, массы, координаты центров масс.

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

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

А вообще еще бывает потребность сортировать по ним (на фотках по материалу) и с именем файла.

Есть вариант оригинальный Total commander Solidworks.wdx . Может Вам просто и достаточно смотреть сразу их или сортировать без файла, ну если фаил то в Excel вставляете из буфера. Вывод данных плагином Solidworks.wdx и потом командой cm_CopyFileDetailsToClip копируете содержимое выведенных данных плагинов. Это универсальный вариант, для любых файлов.

Koмпас и др . тоже самое , главное плагин WDX, а еще если нужно изысканы вещи по данным ну например на каждый фаил данные в отдельный готовый и автоматически, то

http://wincmd.ru/plugring/WdxInfopacker.html

 

Плагин под Solidworks 2014 и ниже.

Вот бы кто сделал бы выше :)

 

колонки.gif

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • ДОБРЯК
      Вы постоянно говорите про гидростатическое давление. Как мантру пишите одно и тоже в разделе Динамика и прочность.  Только слово гидростатическое забываете написать. Крутите свою шарманку во время весеннего или осеннего обострения. А я в разделе Динамика и прочность говорю о поверхностной нагрузке, говорю о силе на единицу площади, которая также называется давлением. Но ничего страшного, пройдет неделя и вы успокоитесь, правда только осени.
    • Fedor
      Бывает направленный отрезок, а бывает его длина. Единичный направленный отрезок задает направление, а длина его величину. Так и давление аналог длины, а направление задает площадка через нормальный вектор вместе они порождают силу давления. Вроде все очевидно, а Добряк не может смекнуть уж пару десятилений. Но пора вернуться к взаимодействию атмосферного давления и грунта... :) Когда Борман закапывает газовую трубу в землю, то надо учитывать атмосферное давление на грунт или нет ?  Вот в чем вопрос , вот в чем загвоздка даже можно сказать :)
    • gudstartup
      Логично это когда ОС не замешана среди файлов системного ПО ЧПУ а имеет свой установочный раздел полноценную систему команд bash а не какую то смесь дос'а и линукса систему безопасности selinux позволяющую контролировать целостность разделов и системных файлов собственный графический интерфейс, средства логирования и мониторинга состояния системы и наконец файловую систему extfs которая на порядок надежнее старой доброй FAT  и это точно не Heros 4 HEROS5 это продукт для настоящего времени жалко что нет его дистрибутива для инсталляции...
    • Fedor
      "мерой воздействия на данное тело со стороны других тел или внешнего поля"  давление это параметр среды, а не мера взаимодействия тел. :)  Так учит термодинамика, а она основа всей физики  :)
    • arctog
      Оно бы обработало их все, будь небольшой припуск материала.
    • ДОБРЯК
      Это и доказывать не нужно. Открываете учебник и читаете. Сила это векторная величина. А сила это нагрузка.  Это вы умножая скалярное давление на скаляр (площадь) получаете скалярную) силу, и эту глупость доказываете уже пятнадцать лет. Я вам ничего не доказываю, я смеюсь над вашими знаниями. Обсуждали уже этот вопрос. Почему Федор про Паскаля говорит? Забыли уже...:=) Гидростатическое давление направлено во все стороны. Мы это обсуждали уже много раз, но вы это забываете.:=)    
    • maxx2000
      Так, а ты сам то читал заголовок 158 млн. раз?  Твои дубли никому тут не нужны, свой быдлопром можешь форсить в ранее созданных темах где уже есть ответы на твои вопросы, достаточно научиться пользоваться поиском.
    • maxx2000
      так кто же спорит, есть. Только зачем и что  с ним потом делать и почему просто не взять трубу прямоугольного сечения. Тут да же вон умник есть, профиль повернул открытым краем вниз, как очевидное для всех, а то что он может как лоток использоваться и как гайки крутить уже неважно.
    • ruslod
      Это даже хорошо - всё логичней чем могло быть
    • arctog
      Добрый человек, а не подскажешь где ее найти? Все перерыл
×
×
  • Создать...