Length of segments in the 3D sketch

Length of segments in the 3D sketch

Rogov_Sergey
Collaborator Collaborator
610 Views
4 Replies
Message 1 of 5

Length of segments in the 3D sketch

Rogov_Sergey
Collaborator
Collaborator

Hi, tell me. There is a 3D sketch in which several segments have several questions.

1. How to use ilogic for the total and each segment?

2. How do I create a plane at the end of the last segment?



Находите сообщения полезными? Поставьте Нравится (Like) этим сообщениям!
На ваш вопрос успешно ответили? Нажмите кнопку 'Утвердить решение'


Рогов Сергей/ Rogov Sergey
Инженер-конструктор

0 Likes
Accepted solutions (1)
611 Views
4 Replies
Replies (4)
Message 2 of 5

Rogov_Sergey
Collaborator
Collaborator

1. How to get the length of each segment?

 

sorry for my bad English



Находите сообщения полезными? Поставьте Нравится (Like) этим сообщениям!
На ваш вопрос успешно ответили? Нажмите кнопку 'Утвердить решение'


Рогов Сергей/ Rogov Sergey
Инженер-конструктор

0 Likes
Message 3 of 5

JhoelForshav
Mentor
Mentor

Hi @Rogov_Sergey 

 

Something like this maybe? 🙂

 

Dim oDoc As PartDocument = ThisDoc.Document
Dim oDef As PartComponentDefinition = oDoc.ComponentDefinition
Dim oSketch As Sketch3D = oDef.Sketches3D.Item(1)
Dim i As Integer = 1
For Each oEnt As SketchEntity3D In oSketch.SketchEntities3D
	If oEnt.Type <> ObjectTypeEnum.kSketchPoint3DObject
		Dim length As Double
		oCurve = oEnt.Geometry
		Dim oCurveEval As CurveEvaluator
		oCurveEval = oCurve.Evaluator
		Dim MinParam As Double
		Dim MaxParam As Double
		Call oCurveEval.GetParamExtents(MinParam, MaxParam)
		Call oCurveEval.GetLengthAtParam(MinParam, MaxParam, length)
		MsgBox("Segment:" & i & vbCrLf & "Length: " & length * 10 & "mm")	
		i += 1
	End If
Next

EDIT: I forgot the i += 1 line....

Message 4 of 5

JhoelForshav
Mentor
Mentor
Accepted solution

To also add a workplane:

 

Dim oDoc As PartDocument = ThisDoc.Document
Dim oDef As PartComponentDefinition = oDoc.ComponentDefinition
Dim oSketch As Sketch3D = oDef.Sketches3D.Item(1)
Dim i As Integer = 1
Dim oLastSegment As SketchEntity3D
For Each oEnt As SketchEntity3D In oSketch.SketchEntities3D
	If oEnt.Type <> ObjectTypeEnum.kSketchPoint3DObject
		Dim length As Double
		oCurve = oEnt.Geometry
		Dim oCurveEval As CurveEvaluator
		oCurveEval = oCurve.Evaluator
		Dim MinParam As Double
		Dim MaxParam As Double
		Call oCurveEval.GetParamExtents(MinParam, MaxParam)
		Call oCurveEval.GetLengthAtParam(MinParam, MaxParam, length)
		MsgBox("Segment:" & i & vbCrLf & "Length: " & length * 10 & "mm")	
		i += 1
		oLastSegment = oEnt
	End If
Next
'Add workPlane
oDef.WorkPlanes.AddByNormalToCurve(oLastSegment, oLastSegment.EndSketchPoint)
Message 5 of 5

Rogov_Sergey
Collaborator
Collaborator

Thank you very much.



Находите сообщения полезными? Поставьте Нравится (Like) этим сообщениям!
На ваш вопрос успешно ответили? Нажмите кнопку 'Утвердить решение'


Рогов Сергей/ Rogov Sergey
Инженер-конструктор