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

Получить массы деталей/сборок с помощью VBA Excel


mechanical

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

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

Написал следующий макрос, код которого, практически полностью взят из примера, приведенного в справке:

Sub Массы()

Application.ScreenUpdating = False

Dim swApp As SldWorks.SldWorks
Dim vMassProp As Variant
Dim sConfig As Variant
Dim FilePathName As String
Dim ConfigurationName As String

Set swApp = CreateObject("SldWorks.Application")

On Error Resume Next

For i = 1 To Range("Таблица_данных").Rows.Count
    vMassProp = Nothing
    FilePathName = ... указывается ячейка содержащая путь
    ConfigurationName = ... указывается ячейка содержащая имя конфигурации
    vMassProp = swApp.GetMassProperties2(FilePathName, ConfigurationName, 1)
    Cells(i + 1, 2) = Application.RoundUp(vMassProp(5), 1)
Next i

Application.ScreenUpdating = True

End Sub

И вроде бы все должно быть ОК, но почему-то массы возвращаются не на все детали/сборки, а как-то выборочно. В справке написано, что для того чтобы получить массу, необходимо, чтобы при сохранении модели были рассчитаны массовые характеристики. И дается команда (SetUserPreferenceToggle swUpdateMassPropsDuringSave, True/False) для установки расчета массовых характеристик автоматически при сохранении файла. Эта команда, как я понял, является аналогом последовательности действий в солидворксе "Параметры -> Качество изображения -> Обновить массовые характеристики при сохранении документа". Так вот галочка у меня в этой настройке стоит и командой "SetUserPreferenceToggle swUpdateMassPropsDuringSave, True" я ее тоже включал, но тем не менее результата нет. При открытой сборке, количество деталей на которые значение массы все-таки будет получено увеличивается (но тем не менее не до 100%), но мне надо, чтобы массы возвращались из закрытых файлов.

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


На работе используем Workgroup PDM, соответственно все файлы на моем ПК располагаются в одной папке. Изначально имя солидовского файла имеет вид "XXXX_YYYY.sldprt", в таблице оно разбито на три столбца: в первом - "XXXX", во втором - "YYYY", в третьем - ".sldprt". Путь указывается следующим образом:

FilePathName = "D:\PDM\Project files\" & Cells(i + 1, 1) & "_" & Cells(i + 1, 2) & Cells(i + 1, 3)

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

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

Тебе это срочно надо? 

Мне тема VBA Excel интересна вообще. В том числе в связке с SW. 

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

 

Конфигурации, как я понимаю, то же не влияют на результат?

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

Да чем тут заниматься-то? Я же не прошу написать новый код. Здесь вопрос конкретного знания/незнания. Задачи-то как таковой и нет, просто нужен человек, который в курсе каких-то конкретных настроек, с которыми я просто не знаком и не знаю где найти информацию о них.

 

У меня появилось новое предположение, что проблема как-то связана с использованием Workgroup PDM.

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

А что значит "массы возвращаются не на все"?

-Null/Nothing

-Пустой масив


Так вот галочка у меня в этой настройке стоит
 

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

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

А что значит "массы возвращаются не на все"?

 

Просто пустая строка, если значения в Immediate выводить.

 

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

 

Разумеется модель я сохранил-пересохранил сто раз и даже вручную массовые характеристики пересчитывал - не помогло.

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

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

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

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

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

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

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

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

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

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

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




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