Zobrazit plnou verzi příspěvku: ilogic
Zravím všechny,mam malinkou prozbu, obdrželi jsme od zákazníka veliké sestavy kde jsou všechny díly namodelovány z plechu.Ale ani u jednoho dílu není zaškrtnuto v parametrech políčko "Exportovat parametr" Thickness.Chtěl bych přes ilogic vše najednou zašrtnout jelikož to dělat po jednou kuse tak to bych dělal do příštích vánoc.Podařilo se mi sehnat tento kod ale nějak mi nejde, možná tam je někde chybička ale já jí nevidim.Dim oAsmDoc As AssemblyDocument oAsmDoc = ThisApplication.ActiveDocument If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then MsgBox("Toto není sestava!", vbExclamation) Return Exit Sub End If Dim oRefDocs As DocumentsEnumerator oRefDocs = oAsmDoc.AllReferencedDocuments For Each oRefDoc As PartDocument In oRefDocs Try Parameter.Param(oRefDoc.DisplayName, "Thickness").ExposedAsProperty = True Catch End Try Next
Vladimír Michl
08.01.2018, 10:33
Možná něco jako (moc nezkoušeno): [CODE]Dim oAsmDoc As AssemblyDocumentoAsmDoc = ThisApplication.ActiveDocumentDim userParam As UserParameterDim oRefDocs As DocumentsEnumeratorDim oRefDoc As ObjectoRefDocs = oAsmDoc.AllReferencedDocumentsFor Each oRefDoc In oRefDocsTry For Each userParam In oRefDoc.ComponentDefinition.Parameters.UserParameters If userParam.Name = "Thickness" userParam.ExposedAsProperty = True End If NextCatchEnd TryNext[/CODE]
Děkuji za radu ale pořád mi to nechce zaškrtávat Thickness.Napadlo jestli by někdo nevěděl udělat aby to zašktlo všechny ty okýnka v parametrech.Já bych si pak vybral které budu používat dále.Děkuji
Vladimír Michl
08.01.2018, 11:35
Pokud to není uživatelský, ale běžný geometrický parametr, pak: [CODE]Dim oAsmDoc As AssemblyDocumentoAsmDoc = ThisApplication.ActiveDocumentDim userParam As ParameterDim oRefDocs As DocumentsEnumeratorDim oRefDoc As ObjectoRefDocs = oAsmDoc.AllReferencedDocumentsFor Each oRefDoc In oRefDocsTry For Each userParam In oRefDoc.ComponentDefinition.Parameters ' MsgBox(oRefDoc.DisplayName & "=" & userParam.Name) If userParam.Name = "Thickness" userParam.ExposedAsProperty = True End If NextCatchEnd TryNext[/CODE]
Děkuji moc už to běhá, jste dobrej.
Ještě jednou chci poprosit. To zašrtnutí "Thickness" už běží, ale věděl by někdo jak napsat aby to zašrtlo všechny parametry. Zkusil jsem to takto ale nedělá to co má.Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveDocument
Dim userParam As Parameter
Dim oRefDocs As DocumentsEnumerator
Dim oRefDoc As Object
oRefDocs = oAsmDoc.AllReferencedDocuments
For Each oRefDoc In oRefDocs
Try
For Each userParam In oRefDoc.ComponentDefinition.Parameters
' MsgBox(oRefDoc.DisplayName & "=" & userParam.Name)
userParam.ExposedAsProperty = True
Next
Catch
End Try
NextJá bych si pak vybral které budu používat dále.Děkuji
Vladimír Michl
10.01.2018, 15:21
Takto by to fungovat mělo - možná zkuste odkomentovat ten MsgBox, abyste viděl k jakému parametru to dojde - možná vám ten Try vypadne na nějaké chybě.
Nevim proč ale po odmazaní "MsgBox" to šlape, opět děkuji.
tak ještě malinkou pomoct, chtěl bych aby u všech zaškrtnutých parametrů se mi nastavilo "přesnost - na celá čísla" a pak odškrtnout řetězec jednotek a koncové nuly.vše niz příloha
třeba takhle: [code]Dim part As PartDocument = ThisDoc.DocumentDim userParam As Inventor.Parameter = part.ComponentDefinition.Parameters(1) '...Dim propertyFormat = userParam.CustomPropertyFormatuserParam.ExposedAsProperty = Truepart.UpdatepropertyFormat.Precision = Inventor. custompropertyprecisionenum.kZeroDecimalPlacePrecisionpropertyFormat.ShowTrailingZeros = FalsepropertyFormat.ShowUnitsString = False'...[/code]
mohu ještě jednou poprosit, mam asi při pátku zatmění a nějak si nevim rady jak to spasovat dohromady. předem moc děkuji.Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveDocument
Dim userParam As Parameter
Dim oRefDocs As DocumentsEnumerator
Dim oRefDoc As Object
oRefDocs = oAsmDoc.AllReferencedDocuments
For Each oRefDoc In oRefDocs
Try
For Each userParam In oRefDoc.ComponentDefinition.Parameters
userParam.ExposedAsProperty = True
Next
Catch
End Try
Next
Dim part As PartDocument = ThisDoc.Document
Dim userParam As Inventor.Parameter = part.ComponentDefinition.Parameters(1)
'...
Dim propertyFormat = userParam.CustomPropertyFormat
userParam.ExposedAsProperty = True
part.Update
propertyFormat.Precision = Inventor.
custompropertyprecisionenum.kZeroDecimalPlacePrecision
propertyFormat.ShowTrailingZeros = False
propertyFormat.ShowUnitsString = False
'...
Vít Marčík
15.01.2018, 13:19
zkuste takhle po drobné úpravě:Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveDocument
Dim userParam As Parameter
Dim oRefDocs As DocumentsEnumerator
Dim oRefDoc As Object
oRefDocs = oAsmDoc.AllReferencedDocuments
For Each oRefDoc In oRefDocs
Try
For Each userParam In oRefDoc.ComponentDefinition.Parameters
userParam.ExposedAsProperty = True
Dim propertyFormat = userParam.CustomPropertyFormat
oRefDoc.Update
propertyFormat.Precision = Inventor. custompropertyprecisionenum.kZeroDecimalPlacePrecision
propertyFormat.ShowTrailingZeros = False
propertyFormat.ShowUnitsString = False
Next
Catch
End Try
Next