Zobrazit plnou verzi příspěvku: ilogic

assaxio
08.01.2018, 09:33
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]

assaxio
08.01.2018, 10:46
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]

assaxio
08.01.2018, 11:44
Děkuji moc už to běhá, jste dobrej.

assaxio
10.01.2018, 14:11
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ě.

assaxio
10.01.2018, 15:57
Nevim proč ale po odmazaní "MsgBox" to šlape, opět děkuji.

assaxio
10.01.2018, 16:25
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

Navara
11.01.2018, 10:03

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] 

assaxio
12.01.2018, 15:07
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