Forums:
Hello
When i try scale 1 body, i need to use a variable but the formula only accept integer variables, but i need to use double, what i need to change or is there another way to do this?
Imports System Imports NXOpen Module NXJournal Sub Main (ByVal args()AsString) Dim theSession As NXOpen.Session= NXOpen.Session.GetSession()Dim workPart As NXOpen.Part= theSession.Parts.WorkDim displayPart As NXOpen.Part= theSession.Parts.Display ' Menu: Insert->Offset/Scale->Scale Body... Dim nullNXOpen_Features_Feature As NXOpen.Features.Feature=Nothing Dim scaleBuilder1 As NXOpen.Features.ScaleBuilder=Nothing scaleBuilder1 = workPart.Features.CreateScaleBuilder(nullNXOpen_Features_Feature) Dim scCollector1 As NXOpen.ScCollector=Nothing scCollector1 = workPart.ScCollectors.CreateCollector() Dim selectionIntentRuleOptions1 As NXOpen.SelectionIntentRuleOptions=Nothing selectionIntentRuleOptions1 = workPart.ScRuleFactory.CreateRuleOptions() selectionIntentRuleOptions1.SetSelectedFromInactive(False) Dim bodies1(0)As NXOpen.BodyDim body1 As NXOpen.Body=CType(workPart.Bodies.FindObject("UNPARAMETERIZED_FEATURE(1)"), NXOpen.Body) bodies1(0)= body1 Dim bodyDumbRule1 As NXOpen.BodyDumbRule=Nothing bodyDumbRule1 = workPart.ScRuleFactory.CreateRuleBodyDumb(bodies1, True, selectionIntentRuleOptions1) selectionIntentRuleOptions1.Dispose()Dim rules1(0)As NXOpen.SelectionIntentRule rules1(0)= bodyDumbRule1 scCollector1.ReplaceRules(rules1, False) scaleBuilder1.BodyCollector= scCollector1 Dim coordinates1 As NXOpen.Point3d=New NXOpen.Point3d(0.0, 0.0, 0.0)Dim point1 As NXOpen.Point=Nothing point1 = workPart.Points.CreatePoint(coordinates1) scaleBuilder1.Point= point1 Dim origin1 As NXOpen.Point3d=New NXOpen.Point3d(0.0, 0.0, 0.0)Dim vector1 As NXOpen.Vector3d=New NXOpen.Vector3d(0.0, 0.0, 1.0)Dim direction1 As NXOpen.Direction=Nothing direction1 = workPart.Directions.CreateDirection(origin1, vector1, NXOpen.SmartObject.UpdateOption.WithinModeling) scaleBuilder1.Vector= direction1 Dim unit1 As NXOpen.Unit=CType(workPart.UnitCollection.FindObject("MilliMeter"), NXOpen.Unit) Dim origin2 As NXOpen.Point3d=New NXOpen.Point3d(0.0, 0.0, 0.0)Dim xDirection1 As NXOpen.Vector3d=New NXOpen.Vector3d(1.0, 0.0, 0.0)Dim yDirection1 As NXOpen.Vector3d=New NXOpen.Vector3d(0.0, 1.0, 0.0)Dim xform1 As NXOpen.Xform=Nothing xform1 = workPart.Xforms.CreateXform(origin2, xDirection1, yDirection1, NXOpen.SmartObject.UpdateOption.WithinModeling, 1.0) Dim cartesianCoordinateSystem1 As NXOpen.CartesianCoordinateSystem=Nothing cartesianCoordinateSystem1 = workPart.CoordinateSystems.CreateCoordinateSystem(xform1, NXOpen.SmartObject.UpdateOption.WithinModeling) scaleBuilder1.Csys= cartesianCoordinateSystem1 dim a asinteger=1.001 scaleBuilder1.UniformFactor.SetFormula(a) Dim nXObject1 As NXOpen.NXObject=Nothing nXObject1 = scaleBuilder1.Commit() scaleBuilder1.Destroy() workPart.MeasureManager.SetPartTransientModification() workPart.MeasureManager.ClearPartTransientModification() theSession.CleanUpFacetedFacesAndEdges() EndSubEndModule