Обновление массовых характеристик

Автор Тема: Обновление массовых характеристик  (Прочитано 6320 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Добрый день! Столкнулся с такой вот проблемой: если массовые характеристики в деталях и сборках не обновлены, то свойство oDoc.PropertySets.Item("Design Tracking Properties").Item("Mass").Value  равно нулю. Можно ли программно обновить массовые характеристики всех деталей и сборок?

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
см. объект MassProperties.  При работе через API масовые характеристики перевычисляются при первом же обращении к MassProperties через объекты:
  • AssemblyComponentDefinition
  • PartComponentDefinition
  • SheetMetalComponentDefinition
  • FlatPattern
  • WeldmentComponentDefinition
  • ComponentOccurrence и ComponentOccurrenceProxy
Например,
    Dim oMassProps As MassProperties
    Set oMassProps = oPartComponentDefinition.MassProperties
или
    Set oMassProps = oComponentOccurrence.MassProperties

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
При обращении к MassProperties через ComponentOccurrence, если в строке масса значение было "Н/Д", то считывается значение 0. Я конечно попробую обратиться через другие объекты, но мне кажется ситуация будет такая же. Я поэтому и пытаюсь как-нибудь обновить массовые характеристики программно.

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
Значит самый верный путь - через определение документа.
ComponentOccurrence, похоже, пытается извлесь значение из кэша, а там пусто - он вычищается при изменении модели.

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Значит самый верный путь - через определение документа.
ComponentOccurrence, похоже, пытается извлесь значение из кэша, а там пусто - он вычищается при изменении модели.
Вы имеете ввиду oDoc.PropertySets.Item("Design Tracking Properties").Item("Mass").Value? Так у меня и здесь считывает ноль( Даже не знаю, что делать, приходится вручную обновлять каждый раз(

Отмечено как Решение Павел Тер-Микаэлян 20-06-2015, 11:14:25

Оффлайн Владимир Ананьев

  • ADN DevHelp
  • *
  • Сообщений: 148
  • Карма: 8
Не, вы не вполне меня поняли.  Свойства здесь ни при чем.  Я имю ввиду именно определение документа.
Document.ComponentDefinition. 
Код - Visual Basic [Выбрать]
  1.     Dim oDoc As PartDocument
  2.     Set Doc = ThisApplication.ActiveDocument
  3.     Dim oMassProps As MassProperties
  4.     Set oMassProps = oDoc.ComponentDefinition.MassProperties

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Не, вы не вполне меня поняли.  Свойства здесь ни при чем.  Я имю ввиду именно определение документа.
Document.ComponentDefinition. 
Код - Visual Basic [Выбрать]
  1.     Dim oDoc As PartDocument
  2.     Set Doc = ThisApplication.ActiveDocument
  3.     Dim oMassProps As MassProperties
  4.     Set oMassProps = oDoc.ComponentDefinition.MassProperties
А.. Теперь понял) не знал, что так можно) Попробую. Спасибо в очередной раз за помощь)

Оффлайн mikazakov

  • ADN
  • *
  • Сообщений: 752
  • Карма: 195
  • Skype: mikazakov@mail.ru
Pabloa,
если AI2015 то нужно SP2 поставить, там какая то речь про устранение не обновляющейся массы речь шла.

Оффлайн Павел Тер-МикаэлянАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 124
  • Карма: 5
Pabloa,
если AI2015 то нужно SP2 поставить, там какая то речь про устранение не обновляющейся массы речь шла.
У нас пока 2013, отстаем на 2 года) но если что, учту, спасибо! Я заметил, что вообще с установкой новых sp решаются многие, не понятно откуда появляющиеся проблемы, ошибки пропадают и т.д., в 2013 уж точно...