Autodesk Inventor API. Первые шаги/Уровень детали

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску

Работа на уровне документа детали[править]

Вектор нормали к плоской грани детали[править]

Информацию о реальной геометрии (топологии) грани предоставляет объект Evaluator, ассоциированный с гранью. Поэтому верный результат может быть получен вызовом следующего метода: Face.Evaluator.GetNormal.


Вектор нормали к поверхности в заданной точке[править]

Требуется вычислить компоненты вектора нормали к поверхности в заданной ее точке. Ниже приводится пример решения подобной задачи

Решение опирается на использование связанного с гранью объекта Evaluator, который предоставляет данные о реальной геометрии поверхности.

Стоит также обратить внимание на технику работы с параметрическим представлением поверхности.

Public Sub GetNormalToSurface_Test()
   
   'Ссылка на активный документ
   Dim oDoc As PartDocument
   Set oDoc = ThisApplication.ActiveDocument
   
   'Ссылка на грань 
   Dim oFace As Face
   Set oFace = oDoc.ComponentDefinition.Features. _
                  ExtrudeFeatures.Item(1).StartFaces.Item(1)
   
   'Ссылка на связанный с гранью объект SurfaceEvaluator
   Dim oEval As SurfaceEvaluator
   Set oEval = oFace.Evaluator
   
   'Создание на грани координатной точки,
   'в которой нас интересует нормаль.
   'Эта точка будет использована для получения
   'соответствующей праметрической точки на грани.
   'Префикс ad в имени массива означает "array of double".
   Dim adPoints(2) As Double
   adPoints(0) = 0
   adPoints(1) = 0
   adPoints(2) = 0
   
   Dim adGuessParams() As Double
   Dim adMaxDeviations() As Double
   Dim adParams() As Double
   Dim alngSolutionNatures() As SolutionNatureEnum
   
   Call oEval.GetParamAtPoint( _
                  adPoints, _
                  adGuessParams, _
                  adMaxDeviations, _
                  adParams, _
                  alngSolutionNatures)
   
   'Получение компонент вектора нормали
   'в точке, заданной параметрически.
   Dim adNormals() As Double
   Call oEval.GetNormal(adParams, adNormals)
   
   Debug.Print "Normal: " & adNormals(0) & ", " & _
                            adNormals(1) & ", " & _
                            adNormals(2)

End Sub


Как найти самую верхнюю грань детали?[править]

И заодно: поставить рабочую точку на макушке детали, не делая предположений о форме детали.


Анализ профильного пути экструдированной детали[править]

Определить количество профильных путей и их типы, а также количество и типы сегментов в каждом профильном пути.