Announcements
Attention for Customers without Multi-Factor Authentication or Single Sign-On - OTP Verification rolls out April 2025. Read all about it here.
cjfgns1003
292 Views, 4 Replies

How do I change iLogic?

I created iLogic below.
However, I do not want to display the "Length" value among the iProperties values.
How can I change iLogic?

 

Sub main
    Dim oDoc As PartDocument = ThisDoc.Document
    Dim oDef As PartComponentDefinition = oDoc.ComponentDefinition
	Dim LengthTotal As Double = 0
	Dim oPath As Path
	For Each oSweep As SweepFeature In oDef.Features.SweepFeatures
		oPath = oSweep.Definition.Path
		LengthTotal = LengthTotal + GetLengthOfSweep(oPath)
	Next

    Dim oUParams As UserParameters = oDoc.ComponentDefinition.Parameters.UserParameters
    Dim oExists As Boolean = False
	Dim oParamName As String = "Length"
    For Each oUParam As UserParameter In oUParams
    	If oUParam.Name = oParamName Then
			oUParam.Value = LengthTotal
			oExists = True
		End If
    Next

    If oExists = False Then
        oUParams.AddByValue(oParamName, LengthTotal, UnitsTypeEnum.kDefaultDisplayLengthUnits)
    End If
	ParaExport(oDef.Parameters.UserParameters, oParamName, kZeroDecimalPlacePrecision)	
    oDoc.Update
	iProperties.Value("custom", "SIZE1") = "t" & Parameter("T0") & "x(" & Round(Parameter("Length"), 1) & ")x" & Round(Parameter("V0"), 1)
End Sub


Private Function GetLengthOfSweep(ByVal oPath As Path) As Double
    Dim TotalLength As Double = 0
    Dim oCurve As Object
	Dim oCurveEval As CurveEvaluator
	Dim MinParam As Double
    Dim MaxParam As Double
    Dim length As Double
    For i As Integer = 1 To oPath.Count
        oCurve = oPath.Item(i).Curve 
        oCurveEval = oCurve.Evaluator
        oCurveEval.GetParamExtents(MinParam, MaxParam)
        oCurveEval.GetLengthAtParam(MinParam, MaxParam, length)
        TotalLength = TotalLength + length
    Next
	Return TotalLength
End Function

Private Sub ParaExport(ByRef oUParas As UserParameters, ByVal oParaName As String, _
						ByVal oDecimalPrecision As CustomPropertyPrecisionEnum)
    For Each oUPara As UserParameter In oUParas
		If oUPara.Name = oParaName Then
            oUPara.ExposedAsProperty = True
			Dim oCPF As CustomPropertyFormat = oUPara.CustomPropertyFormat
			oCPF.PropertyType = CustomPropertyTypeEnum.kNumberPropertyType
            oCPF.Precision = oDecimalPrecision
			oUPara.Comment = "스윕길이로 산출함."
            Exit Sub
        End If
    Next
End Sub

 

cjfgns1003_1-1710295590225.png