10-11-2021
10:46 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
10-11-2021
10:46 AM
This is little bit modified version of your code. It works well.
- I don't check type of entity and I directly try to get Evaluator from sketchEntity (Using LateBinding in VB.NET).
- I change mid point calculation.
- I change building of final message
Sub Main
Dim part As PartDocument = ThisDoc.Document
Dim sk As PlanarSketch = part.ComponentDefinition.Sketches("Test Sketch")
For Each sketchEntity As SketchEntity In sk.SketchEntities
Dim evaluator As Curve2dEvaluator = GetEvaluator(SketchEntity)
If evaluator Is Nothing Then Continue For
Dim periodicity As Double() = {}
Dim isSingular As Boolean
Dim unboundedParameter As Boolean
evaluator.GetParamAnomaly(periodicity, isSingular, unboundedParameter)
Dim endPoint As Double() = {}
Dim startPoint As Double() = {}
evaluator.GetEndPoints(startPoint, endPoint)
Dim minParam As Double
Dim maxParam As Double
Dim midParam As Double
Dim midPoint As Double() = {}
evaluator.GetParamExtents(minParam, maxParam)
midParam = minParam + (maxParam - minParam) / 2
evaluator.GetPointAtParam(New Double() {midParam }, midPoint)
Dim msg As String = String.Format( _
"Curve Type: {0}" & vbCrLf & _
"Start Point: [{1:N3},{2:N3}]" & vbCrLf & _
"End point: [{3:N3}, {4:N3}]" & vbCrLf & _
"Mid Point: [{5:N3}, {6:N3}]" & vbCrLf & _
"Param anomaly:" & vbCrLf & _
" - periodicity: [{7:N3}, {8:N3}]" & vbCrLf & _
" - Is sinhgular: {9}" & vbCrLf & _
" - Unbounded parameter: {10}",
SketchEntity.Type,
startPoint(0), startPoint(1),
endPoint(0), endPoint(1),
midPoint(0), midPoint(1),
periodicity(0), periodicity(1),
isSingular,
unboundedParameter
)
MsgBox(msg, Title := "Curve Info")
Next
End Sub
Function GetEvaluator(sketchEntity As SketchEntity) As Curve2dEvaluator
Try
Return sketchEntity.Geometry.Evaluator
Catch
Return Nothing
End Try
End Function