цитатаузнать массу компонентов сборки находясь в пространстве сборочного чертежа
Dim oUnkNoumnDoc As Document Dim oDoc As Document Dim oApplication As Inventor.Application
Set oApplication = GetObject(, "Inventor.Application")
Set oDoc = oApplication.ActiveDocument ' открытый чертеж сборки хотя бы с одним видовым окном If oDoc Is Nothing Then MsgBox ("Откройте хоть один чертеж *.idw или *.iam") ' ничто не открыто End End If
If oDoc.FullFileName Like "" Then ' проверяем спасли ли мы чертеж , если нет спасаем
Dim oControlDef As ControlDefinition Set oControlDef = ThisApplication.CommandManager.ControlDefinitions.Item ("AppFileSaveCmd") ' AssemblyPropertiesCmd'AppiPropertiesWrapperCmd
oControlDef.Execute
End If If oDoc.FullFileName Like "" Then ' вы не стали спасать чертеж - выход из проги 'GoTo Again MsgBox "Вы не спасли файл,программа будет закрыта" UserForm_Terminate End End If Dim sPathName As String
sPathName = oDoc.ReferencedFiles.Item(1).FullFileName 'Полный путь к файлу сборки ( *.iam)
Set oUnkNoumnDoc = ThisApplication.Documents.Open(sPathName, False) ' открываем сборку без активизации окна
Dim oCompDef As Inventor.ComponentDefinition Set oCompDef = oUnkNoumnDoc.ComponentDefinition ' коллекция всех элементов сборки
If oDoc.DocumentType Like kDrawingDocumentObject Then oUnkNoumnDoc.Close End If
For Each oCompOcc In oCompDef.Occurrences ' проход по всей сборки
On Error Resume Next ' если ,например, деталь unresolve
If oCompOcc.SubOccurrences.count = 0 Then
Dim oMassProps As MassProperties Set oMassProps = oCompOcc.MassProperties '
Debug.Print "Mass: " & oMassProps.Mass ' масса каждой детали в сборке End If Next oCompOcc
цитатаТолько не совсем понял почему чертеж надо спасать
Это не обязательно, если ты потом не будешь где то в кодах своих ссылаться на свой чертеж сборки, типа найти его расположения на диске, полный путь к файлу и т.д.
Если вы только что создали чертеж и еще ни разу не спасали его, то соответственно и работать с ним используя файловую систему нет возможности, например oDoc.FullFileName - запрос его полного имени ( с путями) даст error.
или допустим вы захотите запросить у его сборки (*.iam) ссылку на чертеж(reference) ( то есть на файл *.idw который открыт , но еще не спасен вами на диске) - так же будет ошибка. Если вам этого не нужно, то конечно и спасать предварительно програмно нет необходимости.
Во всем остальном вы правы, работать с ним можно как обычно. brigval пишет:
цитатаИли перебором
У меня это вызывает сложности , не у меня а у системы.Когда я ищу ,допустим , в сборке чертеж для выбранной детали, то перебором по workspace, и workgroup в проекте приходиться методом перебора открывать ( Documents.Open(sPathName, False) все чертежи и просматривать на какую деталь они ссылаются Dim RefFilesDesc As ReferencedFileDescriptor Set RefFilesDesc = oMyDoc.ReferencedFileDescriptors.Item(1) а это занимает кучу времени, а не открыв файл я не могу получить доступ к его Referenced. ВОЗМОЖНО КТО ТО ЗНАЕТ БОЛЕЕ БЫСТРЫЙ ПУТЬ ??? При использовании Apprentice Server все происходит гораздо быстрее , чем в среде AIP. Всего хорошего.
Витек Теперь понял. Пока файл не сохранен на диске (не спасен:) )он не получает расширения. И, естественно, не входит в файловую систему. А методом перебора я предполагал искать среди открытых документов.
Витек пишет:
цитатазапросить у его сборки (*.iam) ссылку на чертеж(reference)
А разве в сборке есть ссылки на чертежи? Это интересно.
цитата ВОЗМОЖНО КТО ТО ЗНАЕТ БОЛЕЕ БЫСТРЫЙ ПУТЬ ???
Я не понял для чего мне было бы надо ИСКАТЬ ЧЕРТЕЖ компонента (детали или сборки)?
Это я не прав, ссылка есть в чертеже на *.ipt либо *.iam , *.ipn из которого он сделан ( да простят меня эстонцы за русский сленг , читайте создан ). А поиск всех чертежей я произвожу при открытии общей сборки для выяснения каких чертежей при разработке и оформления документации еще не достает. При большом проекте удобно.
Витек Понятно. Согласен, что удобно иметь информацию о еще не выпущенных чертежах. У меня такие "документы" помещаются пока в раздел "Прочие изделия". Вероятно, не самый лучший вариант, но информация эта должна присутствовать. Почему в "Прочие..."? Потому что если отсутствует чертеж, то еще не ясно сделает ли конструктор из этого компонета деталь, сборку, прочее изделие или материал.
Все даты в формате GMT
3 час. Хитов сегодня: 1
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет