I am trying to get a tolerance to change when I create a dimension in Intent.
The code seems to work if run from the Immediate window but I can not seem to get it to run when the dimension is created.
Can anyone help to figure out what needs to be done to make this work.
Also I cannot seem to get any tolerance types except Deviation and Symmetrical. I can not seem to get the Limits-Stacked to work for example.
I call out a child for a dimension setting a variable (blnSetTolerance?) indicating I want to change the tolerance
Child DIM1 As :CompanyLinearDimension ':IvLinearDimension '
view=ViewA
dimType=:horizontal
part1= viewModel
part2= viewModel
entity1= "plane1"
entity2= "plane2"
centerText?= True
render?=Render? 'True
textOrigin= ViewA.origin + Vector (0,1.75,0)
dimStyle="Dual Dimension"
blnSetTolerance? = True
End Child
CompanyLinearDimension consists of the following iks file.
'! Intent Language(tm) 3.0
Design CompanyLinearDimension : ShaftRoot IvLinearDimension
Parameter Rule blnSetTolerance? As Boolean = False
Uncached Rule changeTolerance As List
If blnSetTolerance? Then
Return addMyTolerance(Me)
'Return addMyTolerance(%%updateSelf)
Else
Return {"NO"}
End If
End Rule
Method addMyTolerance(p As Part) As List
Dim linDim As Any = GetHostObject(p)
linDim.Tolerance.SetToDeviation("0.0125 in", "-0.0950 in")
'linDim.Tolerance.SetToSymmetric("0.0125 in")
linDim.Precision = 4
linDim.TolerancePrecision = 4
''linDim.Tolerance.SetTobasic
''linDim.Tolerance.SetToDefault
''linDim.Tolerance.SetToFits("FitType","HoleTolerance", "ShaftTolerance")
''linDim.Tolerance.SetToLimits("Stacked","0.0125 in", "-0.0950 in")
''linDim.Tolerance.SetToMax ''linDim.Tolerance.SetToMin
''linDim.Tolerance.SetToReference
Return { "Ok" }
End Method
End Design
Solved! Go to Solution.
Solved by morgangardiner. Go to Solution.
with some help from Wayne Brill this is my final code to reset the tolerance type and tolerance precision automatically when creating a dimension from within Inventor ETO (intent).
'-----------------------------------------------------------------------------------
' DESIGN CREATION INFORMATION
'
'
'Design Name: TidlandLinearDimension
'Design Intent: a file to add funtionality to ivLinearDimension such as being able to change the tolerance
'Drawing Design Based On:
'Date Created: 10/15/2012
'Created by: Morgan Gardiner
'-----------------------------------------------------------------------------------
' HISTORY
'
'
'-----------------------------------------------------------------------------------
Design
CompanyLinearDimension : IvLinearDimension
'####### EXAMPLE OF HOW TO CALL THIS DESIGN FROM ANOTHER #####################
'
'Child SlotStart As :CompanyLinearDimension
' view=ViewA
' dimType=:horizontal
' part1= viewModel
' part2= viewModel
' entity1= "End"
' entity2= "SlotStart"
' centerText?= True
' render?=Render? 'True
' textOrigin= ViewA.origin + Vector (0,1.75,0)
' dimStyle="Dual Dimension"
' blnSetTolerance? = True
' strToleranceType = "Deviation" ' "Default","Deviation","LimitLinear","LimitsStacked","Reference","Symmetric"
' 'intTolerancePrecision = -1
' anyUpperTolerance = "0.125 in" '0.00 'UPPERTOLERANCE CAN BE PUT In As A String WITH UNITS DEFINED Or As A Number And DEFAULT CENTIMETER UNITS IS ASSUMED.
' anyLowerTolerance = "-0.05 in" '0.00 'LOWERTOLERANCE CAN BE PUT In As A String WITH UNITS DEFINED Or As A Number And DEFAULT CENTIMETER UNITS IS ASSUMED.
' 'anySymmetricTolerance = 0.00
'End Child
'#############################################################################
'A VARIABLE TO DETERMINE IF YOU WANT TO SET/CHANGE A TOLERANCE FORMAT
Parameter
Rule blnSetTolerance? AsBoolean = False
'A VARIABLE TO SET THE TOLERANCE TYPE
Parameter
Rule strToleranceType AsString = "Default"' "Default","Deviation","LimitLinear","LimitsStacked","Reference","Symmetric"
'A VARIABLE TO SET THE PRECISION OF THE TOLERANCE IE. 2 DECIMAL PLACES OR 4 DECIMAL PLACES
Parameter
Rule intTolerancePrecision AsInteger = -1
'A VARIABLE TO SET THE UPPERTOLERANCE ON A RANGE
Parameter
Rule anyUpperTolerance AsAny = 0.00 'UPPERTOLERANCE CAN BE PUT In As A String WITH UNITS DEFINED("0.012 IN") Or As A Number(0.012) And DEFAULT CENTIMETER UNITS IS ASSUMED.
'A VARIABLE TO SET THE LOWERTOLERANCE ON A RANGE
Parameter
Rule anyLowerTolerance AsAny = 0.00 'LOWERTOLERANCE CAN BE PUT In As A String WITH UNITS DEFINED("-0.012 IN") Or As A Number(-0.012) And DEFAULT CENTIMETER UNITS IS ASSUMED.
'A VARIABLE TO SET THE SYMMETRICAL TOLERANCE IF USING THE SYMMETRICAL TOLERANCE TYPE.
Parameter
Rule anySymmetricTolerance AsAny = 0.00 'SYMMETRICTOLERANCE CAN BE PUT In As A String WITH UNITS DEFINED("0.012 IN") Or As A Number(0.012) And DEFAULT CENTIMETER UNITS IS ASSUMED.
'Pulled this from %%IvCommonDimensionMixin and added my rule to it so that it would generate automatically when the dimension was created.
' This should be used for post-create properties for ALL DIMENSIONS
< %%category(
"Inventor Internal") > _
Rule %%setGenericNonIntrinsicProperties AsBoolean
%%setDimensionLayer
%%setDimensionStyle
%%setFirstArrowheadInside
%%setSecondArrowheadInside
'Added to the rule
changeTolerance
'End added to the rule
ReturnTrue
End Rule
Uncached
Rule changeTolerance AsList
If blnSetTolerance? Then
Return addMyTolerance(Me)
Else
Return {"NO"}
EndIf
End Rule
Method
addMyTolerance(p AsPart) AsList
If blnSetTolerance? Then
'GET THE CURRENT DIMENSION
Dim linDim AsAny = GetHostObject(p)
'SET THE TOLERANCETYPE IF BLNSETTOLERANCE? IS TRUE
If strToleranceType = "Deviation"Then
linDim.Tolerance.SetToDeviation(anyUpperTolerance, anyLowerTolerance)
ElseIf strToleranceType = "LimitLinear"Then
linDim.Tolerance.SetToLimits(Inventor.ToleranceTypeEnum.kLimitLinearTolerance, anyUpperTolerance, anyLowerTolerance)
ElseIf strToleranceType = "LimitsStacked"Then
linDim.Tolerance.SetToLimits(Inventor.ToleranceTypeEnum.kLimitsStackedTolerance, anyUpperTolerance, anyLowerTolerance)
ElseIf strToleranceType = "Reference"Then
linDim.Tolerance.SetToReference()
ElseIf strToleranceType = "Symmetric"Then
linDim.Tolerance.SetToSymmetric(anySymmetricTolerance)
Else'"Default"
linDim.Tolerance.SetToDefault()
EndIf
'IF THE TOLERANCE PRECISION IS BEING SET BY THE USER TO SOMETHING OTHER THAN DEFAULT
If intTolerancePrecision > -1 Then
linDim.TolerancePrecision = intTolerancePrecision
EndIf
EndIf
Return { "Ok" }
'Tolerance Methods:
' OF NOTE IS THAT UPPERTOLERANCE and LOWERTOLERANCE CAN BE PUT IN AS A STRING WITH UNITS DEFINED OR AS A NUMBER AND DEFAULT CENTIMETER UNITS IS ASSUMED.
'SetTobasic()
'SetToDefault()
'SetToDeviation(UpperTolerance, LowerTolerance)
'SetToFits(FitsToleranceType As ToleranceTypeEnum, HoleTolerance As String, ShaftTolerance As String)
'SetToLimits(LimitsToleranceType As ToleranceTypeEnum, UpperTolerance, LowerTolerance) 'kLimitsStackedTolerance = 31237 , kLimitLinearTolerance = 31238
'SetToMax()
'SetToMin()
'SetToReference()
'SetToSymmetric(Tolerance)
'ToleranceTypeEnum:
'Const kBasicTolerance = 31245 (&H7A0D)
'Const kDefaultTolerance = 31233 (&H7A01)
'Const kDeviationTolerance = 31236 (&H7A04)
'Const kLimitLinearTolerance = 31238 (&H7A06)
'Const kLimitsFitsLinearTolerance = 31242 (&H7A0A)
'Const kLimitsFitsShowSizeTolerance = 31243 (&H7A0B)
'Const kLimitsFitsShowTolerance = 31244 (&H7A0C)
'Const kLimitsFitsStackedTolerance = 31241 (&H7A09)
'Const kLimitsStackedTolerance = 31237 (&H7A05)
'Const kMaxTolerance = 31239 (&H7A07)
'Const kMinTolerance = 31240 (&H7A08)
'Const kOverrideTolerance = 31234 (&H7A02)
'Const kReferenceTolerance = 31246 (&H7A0E)
'Const kSymmetricTolerance = 31235 (&H7A03)
End Method
End Design