Path for sweep not complete using ilogic

Path for sweep not complete using ilogic

Anonymous
Not applicable
457 Views
0 Replies
Message 1 of 1

Path for sweep not complete using ilogic

Anonymous
Not applicable

Hi

 

I have a question regarding the path for the sweep feature using ilogic. The sweep feature doesn't follow to the end of the path if I run my rule. However, when I choose the path manually there are no problems...

 

why is that? I must have missed something in my code.

 

 

I have used much of the API references in the help topics trying to solve the problem but to no success.

 

I really appreciate if someone can help me.

 

Dim oNOC As Integer
Dim oCoil_Start_X As Double
Dim oCoil_Start_Y As Double
Dim oCoil_Start_Z As Double
Dim oCoil_Distance As Double
Dim oCentral_Tube As Double
Dim oCoil_t As Double
Dim Coil_R As Double
Dim oBend_R As Double
Dim oManifold_Coil_Distance As Double
Dim oCoilHeight As Double
Dim oCoilDiff As Double
Dim oCoilPitch As Double
Dim oRevolutions As Double

'input
oCoil_Start_X = Shell_D+270
oNOC = NOC
oCoil_Distance = Coil_Distance
oCoil_D = Coil_D
oCoil_t = Coil_t
Coil_R = Central_Tube/2
oBend_R = Bend_R
oCoilPitch = Coil_Pitch
oCentral_Tube = Central_Tube
oRevolutions = Revolutions
oManifold_Coil_Distance = Manifold_Coil_Distance
oCoilHeight = Ceil((Round((Coil_D+1)*(Revolutions+1))/100+0.5))*100
oCoilDiff = oCoilHeight-0.5*oCoilPitch-oCoilPitch*oRevolutions
CoilDiff = oCoilDiff
'reference to the current active document
Dim oPartDoc As PartDocument
oPartDoc = ThisApplication.ActiveDocument

'reference to the component definition
Dim oCompDef As PartComponentDefinition
oCompDef = oPartDoc.ComponentDefinition


'transient geometry
Dim oTG As TransientGeometry
oTG = ThisApplication.TransientGeometry

Dim oWorkPlaneStart As WorkPlane
oWorkPlaneStart = oCompDef.WorkPlanes.AddByPlaneAndOffset(oCompDef.WorkPlanes.Item(3),0.1*oCoilHeight,False)
oWorkPlaneStart.Name = "Coil start plane"


For i=1 To oNOC
Coil_R = 0.5*(oCentral_Tube+(2*i-1)*(oCoil_Distance+oCoil_D))
oCoil_Start_Y = (-oNOC+1+2*(i-1))*oManifold_Coil_Distance*0.5



	'conditional statement to detemine wheter the coils are in quadrant 1 or 2.
	If oCoil_Start_Y >= 0 Then
	
	'equations for determination of the unknown variables
	Dim X As Double
	Dim X1 As Double
	Dim Y1 As Double
	Dim alfa As Double
	
	X = ((Coil_R+oBend_R)^2-(oCoil_Start_Y+oBend_R)^2)^0.5
	Alfa = Acos(X/(Coil_R+oBend_R))
	
	X1 = Coil_R*Cos(Alfa)
	Y1 = Coil_R*Sin(Alfa)
	
	
	
	'Coils at outlet
	'------------------------------------------------------------------------------------------
	'Dim oSketch1 As PlanarSketch
	Dim oSketch1 As PlanarSketch
	oSketch1 = oCompDef.Sketches.add(oCompDef.Workplanes.item(3))
	oSketch1.Name = "CoilSketch outlet" & i
	
	Dim oPoint1(0 To 6) As Point2d
	oPoint1(0) = oTG.CreatePoint2d(0.1*oCoil_Start_X,-0.1*oCoil_Start_Y)
	oPoint1(1) = oTG.CreatePoint2d(0.1*X,-0.1*oCoil_Start_Y)
	oPoint1(2) = oTG.CreatePoint2d(0.1*X1,-0.1*oCoil_Start_Y)
	oPoint1(3) = oTG.CreatePoint2d(0.1*X1,-0.1*Y1)							'intersection
	oPoint1(4) = oTG.CreatePoint2d(0.1*X,-0.1*(oCoil_Start_Y+oBend_R))		'center of bend
	oPoint1(5) = oTG.CreatePoint2d(0.1*X1,-0.1*Coil_R)
	oPoint1(6) = oTG.CreatePoint2d(0,-0.1*Coil_R)
	
	'create origin at outlet
	Dim oOriginOutlet1 As Point2d
	oOriginOutlet1 = oTG.CreatePoint2d(0,0)
	
	Dim oArc1 As SketchArc
	Dim oArc2 As SketchArc
	Dim oLine1 As SketchLine
	oLine1 = oSketch1.SketchLines.AddByTwoPoints(oPoint1(1),oPoint1(0))
	oArc1 = oSketch1.SketchArcs.AddByCenterStartEndPoint(oPoint1(4),oPoint1(1),oPoint1(3),True)
	oArc2 = oSketch1.SketchArcs.AddByCenterStartEndPoint(oOriginOutlet1,oPoint1(3),oPoint1(6),False)
	
	oSketch1.GeometricConstraints.AddGround(oLine1)
	oSketch1.GeometricConstraints.AddGround(oArc1)
	oSketch1.GeometricConstraints.AddGround(oArc2)
	
	'------------------------------------------------------------------------------------------
	'Create coils for helix
	Dim oSketch3D As Sketch3D
	oSketch3D = oCompDef.Sketches3D.Add
	oSketch3D.Name = "Coil system" & i
	Dim equationCurve1 As SketchEquationCurve3D
	equationCurve1 = oSketch3D.SketchEquationCurves3D.Add( _
	CoordinateSystemTypeEnum.kCylindrical, _
	Coil_R,"-90-90*t", "0.5*Coil_Pitch*t", 0, 1)
	oSketch3D.GeometricConstraints3D.AddGround(equationCurve1)

	Dim equationCurve2 As SketchEquationCurve3D
	equationCurve2 = oSketch3D.SketchEquationCurves3D.Add( _
	CoordinateSystemTypeEnum.kCylindrical, _
	Coil_R,"-180-360*t", "0.5*Coil_Pitch+Coil_Pitch*t", 0, Revolutions)
	oSketch3D.GeometricConstraints3D.AddGround(equationCurve2)
	
	Dim equationCurve3 As SketchEquationCurve3D
	equationCurve3 = oSketch3D.SketchEquationCurves3D.Add( _
	CoordinateSystemTypeEnum.kCylindrical, _
	Coil_R,"-180-90*t","0.5*Coil_Pitch+Coil_Pitch*Revolutions+CoilDiff*t" , 0, 1)
	oSketch3D.GeometricConstraints3D.AddGround(equationCurve3)
	
	'Coils at inlet
	'------------------------------------------------------------------------------------------
	
	oSketch2 = oCompDef.Sketches.add(oWorkPlaneStart)
	oSketch2.Name = "CoilSketch inlet" & i
	
	Dim oPoint2(0 To 6) As Point2d
	oPoint2(0) = oTG.CreatePoint2d(0.1*oCoil_Start_X,0.1*oCoil_Start_Y)
	oPoint2(1) = oTG.CreatePoint2d(0.1*X,0.1*oCoil_Start_Y)
	oPoint2(2) = oTG.CreatePoint2d(0.1*X1,0.1*oCoil_Start_Y)
	oPoint2(3) = oTG.CreatePoint2d(0.1*X1,0.1*Y1)							'intersection
	oPoint2(4) = oTG.CreatePoint2d(0.1*X,0.1*(oCoil_Start_Y+oBend_R))		'center of bend
	oPoint2(5) = oTG.CreatePoint2d(0.1*X1,0.1*Coil_R)
	oPoint2(6) = oTG.CreatePoint2d(0,0.1*Coil_R)
	

	'create origin at outlet
	Dim oOriginOutlet As Point2d
	oOriginOutlet = oTG.CreatePoint2d(0,0)
	
	Dim oLine As SketchLine
	oLine = oSketch2.SketchLines.AddByTwoPoints(oPoint2(0),oPoint2(1))
	oArc1 = oSketch2.SketchArcs.AddByCenterStartEndPoint(oPoint2(4),oLine.EndSketchPoint,oPoint2(3),False)
	oArc2 = oSketch2.SketchArcs.AddByCenterStartEndPoint(oOriginOutlet,oPoint2(3),oPoint2(6),True)
	
	oSketch2.GeometricConstraints.AddGround(oLine)
	oSketch2.GeometricConstraints.AddGround(oArc1)
	oSketch2.GeometricConstraints.AddGround(oArc2)
	
		'------------------------------------------------------------------------------------------
	'Create circle at endpoint of oLine1
	Dim oPointCircle As Point
	oPointCircle = oSketch1.SketchToModelSpace(oLine1.EndSketchPoint.Geometry)
	
	Dim oWorkPlaneCircles As WorkPlane
	oWorkPlaneCircles = oCompDef.WorkPlanes.AddByNormalToCurve(oLine1, oLine1.EndSketchPoint)
	oWorkPlaneCircles.Name = "Circles"
	
	oSketch1 = oCompDef.Sketches.add(oWorkPlaneCircles)
	oSketch1.Name = "Circles" & i
	Dim oCircle As SketchCircle
	oCircle = oSketch1.SketchCircles.AddByCenterRadius(oSketch1.ModelToSketchSpace(oPointCircle),0.1*oCoil_D*0.5)
	oSketch1.GeometricConstraints.AddGround(oCircle)
	oCircle = oSketch1.SketchCircles.AddByCenterRadius(oSketch1.ModelToSketchSpace(oPointCircle),(oCoil_D-2*oCoil_t)*0.1*0.5)
	oSketch1.GeometricConstraints.AddGround(oCircle)
	
	
	Dim oPath As Path
	oPath = oCompDef.Features.SweepFeatures.CreatePath(oLine)
	
	Dim oProfile As Profile
	oProfile = oSketch1.Profiles.AddForSolid
	
	'Sweep the circles And path
	Dim oSweep As SweepFeature
	oSweep = oCompDef.Features.SweepFeatures.AddUsingPath(oProfile,oPath,kJoinOperation)
	oSweep.Name = "Coil system"
	
	Else
End if
next
0 Likes
458 Views
0 Replies
Replies (0)