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

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


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 пользователей

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




  • Сообщения

    • marchuk-86
      Хочу примерно одинакового времени обработки. Не может быть такого что где-то в параметрах стойки ограничена скорость поворота оси C на холостом ходу? По техническим характеристикам у осей одинаковая максимальная скорость вращения. 
    • gudstartup
      @marchuk-86 два разных станка с разными параметрами осей и чего вы хотите?  
    • marchuk-86
      Добрый день. Есть два фрезерных станка с Fanuc 0i. На одном станке установлена поворотная ось(4я), на втором наклонно-поворотный стол (4+1). Проблема в разнице отработки управляющей программ. При отработке практически одной и той же управляющей программы на станке с наклонно-поворотным столом замечено существенная разница по времени отработки. Происходит какое-то торможение при повороте детали. Кусок УП для поворотной оси: G0G90G17G54 T2M6  S1500M3 G0X-15.7Y0.M8 G43Z50.H2 B0.M11  G83G98X-15.7Y0.Z.881R4.17B0.Q0.15F20. B45.  B90.  B135. B180. B225. B270. B315. X-14.75B22.5  B67.5 B112.5  B157.5  B202.5  B247.5  B292.5  B337.5 ...   Кусок УП для наклонно-поворотного стола: G0G90G17 G57B90C0 T2M6  S1500M3 G0X-15.7Y0.M8 G43Z50.H2 C0.M11  G83G98X-15.7Y0.Z.881R4.17C0.Q0.15F20. C45.  C90.  C135. C180. C225. C270. C315. X-14.75C22.5  C67.5 C112.5  C157.5  C202.5  C247.5  C292.5  C337.5 ...    Всего сверлится 120 отверстий. Разница по времени набегает в 35 минут.  После переделки УП с минимальным количеством поворотов по оси С, разница минимизировалась. Т.е. "тормозит" именно наклонно-поворотный стол. С этим можно что-нибудь сделать?
    • Maxim.Oi TF
      Померил Биение зубов у фрезы получилось 0.07(семь соток). Это перепад от наименьшее до наибольшего
    • Maxim.Oi TF
      Еще Заметил что обороты фрезы не соответствуют заданным. Проверял следующим образом: Задал 100 об в минуту. Сделал метку белым штрихом на фрезе. И за минуту по секундомеру я насчитал 122 оборота. Видимо 100 оборотов крутится сам серво двигатель, а через шестерни получается 122. 
    • Artas28
      Почему пост рисует Х 50.118 а сам станок на симуляции показывает -3.9257 и фреза находится по центру детали.  И Y там тоже очень сильно отличается. Почему? Станок по этой программе едет в х50.118 и фреза там не по центру детали. Где косяк?
    • maxx2000
      Это такая же команда и порядок её использования есть в инструкции на стойку. Т.е. как и вместе с чем включается и как выключается.
    • ДОБРЯК
      А для нахождения собственного вектора не нужно решать систему линейных уравнений? :=)
    • Artas28
      А ничего не надо добавлять в события, что бы траектория правильно выводилась?
    • Killerchik
      Ещё раз предположу, что заготовка прошла улучшение, а не закалку - просто с целью улучшения обрабатываемости.   Полностью поддерживаю, даже для хорошего современного покрытого быстрореза с СОЖ под высоким давлением 80м/мин по стали с 14% хрома и 17% никеля выглядят как запредельно много, не говоря уже про непокрытый Р6М5 с СОЖ поливом.
×
×
  • Создать...