Vytisknout stránku | Zavřít okno

Riadena a neriadena honota

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: iLogic a ETO
Popis fóra: Funkce a makra iLogic, Inventor Engineering to Order (ETO), automatizace a konfigurace výrobků
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=27917
Datum vytištění: 06.kvě.2026 v 23:21


Téma: Riadena a neriadena honota
Odeslal: hanc.mat
Předmět: Riadena a neriadena honota
Datum odeslání: 31.říj.2018 v 10:56
Dobrý den, viete mi poradiť so zapinanim riadenej(referenčnej) a neriadenej koty?
'If questions = "Angle" Then
'     oSketch = ThisDoc.Document.ComponentDefinition.Sketches.Item("moj-sketch")
'     oSketch.DimensionConstraints.Item(FlangeAngle).Driven = True
'     oSketch.DimensionConstraints.Item(d293).Driven = False
'Else If questions = "Diameter" Then
'     oSketch = ThisDoc.Document.ComponentDefinition.Sketches.Item("moj_sketch")
'oSketch.DimensionConstraints.Item(d293).Driven = True
'oSketch.DimensionConstraints.Item(FlangeAngle).Driven = False
'End If
Vyhadzuje error a nechce mi zprepinat koty v rovnakom načrte.



Odpovědi:
Odeslal: Navara
Datum odeslání: 31.říj.2018 v 11:25
Musíte se rozhodnout, jstli se ten náčrt jmenuje "moj-sketch" nebo "moj_sketch" Wink
Navíc identifikovat kótu musíte číslem (indexem v kolekci), ne názvem parametru
 
Výsledek
Sub Main()
 Dim oSketch As PlanarSketch = ThisDoc.Document.ComponentDefinition.Sketches.Item("moj-sketch")
 Dim dim1 = GetDimensionByParameterName(oSketch, "FlangeAngle")
 Dim dim2 = GetDimensionByParameterName(oSketch, "d293")
 If questions = "Angle" Then
  dim1.Driven = True
  dim2.Driven = False
 ElseIf questions = "Diameter" Then
  dim1.Driven = False
  dim2.Driven = True
 End If
End Sub
Function GetDimensionByParameterName(oSketch As Sketch, parameName As String)
 For Each d As DimensionConstraint In oSketch.DimensionConstraints
  If d.Parameter.Name = parameName Then
   Return d
  End If
 Next
 Return Nothing
End Function
 


Odeslal: hanc.mat
Datum odeslání: 02.lis.2018 v 11:37
Dakujem za radu. vas prikaz som musel dat do čisteho pravidla nakoľko ak boli dalšie podmienky za vašim kodom vyhadzovalo to dalšie chyby.

kód stale vyhadzuje tu istu chybu:

Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
More info:
System.Runtime.InteropServices.COMException (0x80004005): Unspecified error (Exception from HRESULT: 0x80004005 (E_FAIL))
   at Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateSet(Object o, Type& objType, String name, Object[] args, String[] paramnames, Boolean OptimisticSet, CallType UseCallType)
   at Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateSet(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean OptimisticSet, Boolean RValueBase, CallType CallType)
   at LmiRuleScript.Main()
   at Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem)
   at iLogic.RuleEvalContainer.ExecRuleEval(String execRule)



Odeslal: Navara
Datum odeslání: 02.lis.2018 v 12:46
tak sem dejte i ten model, protože mě to fungovalo


Odeslal: hanc.mat
Datum odeslání: 27.lis.2018 v 08:45
Ospravedlňujem sa a opravim moj unahleny post ...ano ak to nahodim na cistu verziu modelu kde nieje ziaden kod funguje to korektne - takze Vas kod funguje spravne!
Avšak ak to ale nahodim do môjho modelu kde je to naviazane na dalsie If ... tak to chybu vyhodi stale aj ked je to vo vlastnej rule a kod sa odkazuje len na danu rule ak ju požadujem z Formularu.



Vytisknout stránku | Zavřít okno