大数跨境

Inventor API 进阶5--特征与几何操作实战

Inventor API 进阶5--特征与几何操作实战 锐和软件资讯服务
2026-09-29
15
导读:Inventor API 进阶5--特征与几何操作实战

本文是「Inventor API 进阶」系列第 5 篇。用代码创建拉伸、旋转、阵列——掌握特征 API,你就掌握了参数化设计的钥匙。

特征 API 的核心逻辑

在 Inventor UI 中创建一个特征需要几步?以拉伸为例:
  1. 选择轮廓(Profile)
  2. 选择输出类型(实体/曲面)
  3. 选择操作方式(添加/切削/相交)
  4. 定义范围(距离/贯通/到面)
  5. 设置拔模角度
API 的调用方式完全对应这些步骤。你在对话框里填的每个参数,API 调用也要传。

草图是特征的基础

所有基于轮廓的特征都需要先有草图。
创建草图
Sub CreateSketchAndProfile()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 在 XY 工作平面上创建草图    Dim sketch As PlanarSketch    Set sketch = compDef.Sketches.Add( _        compDef.WorkPlanes.Item(3))  ' XY 平面    ' 获取 TransientGeometry 用于创建点    Dim tg As TransientGeometry    Set tg = ThisApplication.TransientGeometry    ' 画一个矩形    Dim rectLines As SketchEntities    Call sketch.SketchLines.AddAsTwoPointRectangle( _        tg.CreatePoint2d(0, 0), _        tg.CreatePoint2d(5, 3))End Sub
定义轮廓
创建特征时,需要一个 Profile 对象。Profile 从草图中提取:
' 获取草图的轮廓Dim profile As ProfileSet profile = sketch.Profiles.AddForSolid
AddForSolid 表示用于实体特征,AddForSurface 表示用于曲面特征。

创建拉伸特征

Sub CreateExtrude()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 假设已有草图和轮廓    Dim sketch As PlanarSketch    Set sketch = compDef.Sketches.Item(1)    Dim profile As Profile    Set profile = sketch.Profiles.AddForSolid    ' 定义拉伸参数    Dim extrudeDef As ExtrudeDefinition    Set extrudeDef = compDef.Features.ExtrudeFeatures.CreateExtrudeDefinition( _        profile, _        kJoinOperation)  ' 添加操作    ' 设置距离    extrudeDef.SetDistanceExtent "10 mm", kPositiveExtentDirection)    ' 创建拉伸特征    Dim extrude As ExtrudeFeature    Set extrude = compDef.Features.ExtrudeFeatures.Add(extrudeDef)End Sub

拉伸操作方式

枚举

说明

kJoinOperation

添加(合并到已有实体)

kCutOperation

切削(从已有实体移除)

kIntersectOperation

相交

kNewSolidOperation

新实体

范围类型

' 距离范围extrudeDef.SetDistanceExtent "10 mm", kPositiveExtentDirection' 贯通范围extrudeDef.SetThroughAllExtent kPositiveExtentDirection' 到面范围extrudeDef.SetToExtent targetFace' 从到范围(两面之间)extrudeDef.SetFromToExtent startFace, endFace

创建旋转特征

Sub CreateRevolve()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    Dim sketch As PlanarSketch    Set sketch = compDef.Sketches.Item(1)    Dim profile As Profile    Set profile = sketch.Profiles.AddForSolid    ' 获取旋转轴(草图中的中心线)    Dim axisAxis As SketchLine    Set axisAxis = sketch.SketchLines.Item(1)    ' 创建旋转定义    Dim revolveDef As RevolveDefinition    Set revolveDef = compDef.Features.RevolveFeatures.CreateRevolveDefinition( _        profile, _        axisAxis, _        kJoinOperation)    ' 设置角度范围(360度)    revolveDef.SetAngleExtent "360 deg", kPositiveExtentDirection)    ' 创建旋转特征    Dim revolve As RevolveFeature    Set revolve = compDef.Features.RevolveFeatures.Add(revolveDef)End Sub

创建圆角特征

Sub CreateFillet()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 创建圆角定义    Dim filletDef As FilletDefinition    Set filletDef = compDef.Features.FilletFeatures.CreateFilletDefinition    ' 选择要倒圆角的边    Dim edge As Edge    Set edge = compDef.SurfaceBodies.Item(1).Edges.Item(1)    ' 添加到圆角集合并设置半径    Call filletDef.FilletSet.Add(edge, "3 mm", False)    ' 创建圆角特征    Dim fillet As FilletFeature    Set fillet = compDef.Features.FilletFeatures.Add(filletDef)End Sub

特征的修改与抑制

修改特征参数

Sub ModifyFeatureParameter()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 获取拉伸特征    Dim extrude As ExtrudeFeature    Set extrude = compDef.Features.ExtrudeFeatures.Item(1)    ' 修改距离    extrude.Definition.SetDistanceExtent "20 mm", kPositiveExtentDirection)    ' 更新模型    partDoc.UpdateEnd Sub

抑制/解除抑止特征

Sub SuppressFeature()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 抑制特征    Dim feat As Feature    Set feat = compDef.Features.Item(1)    feat.Suppressed = TrueEnd Sub

遍历特征树

Sub ListAllFeatures()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    Dim feat As Feature    For Each feat In compDef.Features        Debug.Print "名称: " & feat.Name & _                    " | 类型: " & feat.Type & _                    " | 抑制: " & feat.Suppressed    NextEnd Sub

检测几何变化

如果需要检查模型自上次某时间点以来是否被修改,可以使用 ModelGeometryVersion属性:
Sub CheckGeometryChange()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 获取当前几何版本号    Dim version As Long    version = compDef.ModelGeometryVersion    Debug.Print "当前几何版本: " & version    ' 每次模型变化后,版本号会改变End Sub

几何对象操作

获取面和边

Sub AccessFacesAndEdges()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    Dim compDef As PartComponentDefinition    Set compDef = partDoc.ComponentDefinition    ' 遍历实体    Dim body As SurfaceBody    For Each body In compDef.SurfaceBodies        Debug.Print "实体: " & body.Name        ' 遍历面        Dim face As Face        For Each face In body.Faces            Debug.Print "  面: " & face.FaceType        Next        ' 遍历边        Dim edge As Edge        For Each edge In body.Edges            Debug.Print "  边: " & edge.EdgeType        Next    NextEnd Sub

面的几何信息

Sub GetFaceGeometry()    Dim partDoc As PartDocument    Set partDoc = ThisApplication.ActiveDocument    ' 假设选中了一个面    Dim face As Face    Set face = partDoc.SelectSet.Item(1)    ' 获取面的参数范围    Dim eval As SurfaceEvaluator    Set eval = face.Evaluator    Dim paramRange As Box2d    Set paramRange = eval.ParamRangeRect    Debug.Print "参数范围: U=[" & paramRange.MinPoint.X & ", " & paramRange.MaxPoint.X & "]"    ' 获取等参曲线(用于分析面的形状)    Dim isoCurves As ObjectCollection    Set isoCurves = eval.GetIsoCurve(paramRange.MinPoint.X, True)End Sub

本篇小结

要点

说明

草图

用 Sketches.Add 创建,AddAsTwoPointRectangle 画矩形

Profile

Profiles.AddForSolid / AddForSurface

拉伸

ExtrudeFeatures.CreateExtrudeDefinition + Add

旋转

RevolveFeatures.CreateRevolveDefinition + Add

圆角

FilletDefinition.FilletSet.Add + Add

范围

SetDistanceExtent / SetThroughAllExtent / SetToExtent

抑制

Feature.Suppressed = True

几何版本

ModelGeometryVersion 检测几何变化

面和边

SurfaceBody.Faces / .Edges 遍历


下篇预告:《颜色与外观控制 API 指南》——用代码控制零件的颜色、材质和外观。
本文素材参考自 Autodesk Developer Blog「Mod The Machine」系列文章。

【声明】内容源于网络
0
0
锐和软件资讯服务
专注制造业设计服务20年,Autodesk产品金牌经销商,为您提供专业的技术解答,及时的信息资讯,全新的产品动态。各种好看、好玩、实用的设计咨询,惊爆您的眼球
内容 102
粉丝 0
锐和软件资讯服务 专注制造业设计服务20年,Autodesk产品金牌经销商,为您提供专业的技术解答,及时的信息资讯,全新的产品动态。各种好看、好玩、实用的设计咨询,惊爆您的眼球
总阅读868
粉丝0
内容102