SolidWorks二次开发(2)核心API详解

260 阅读4分钟

核心 API 详解:二次开发的 “语言字典”

SolidWorks API 基于 COM(组件对象模型)架构,通过 “对象 - 方法 - 属性” 的层级结构实现与软件的交互。理解核心对象的功能与使用场景,是实现二次开发需求的关键。以下为信息管理人员与技术团队协作时需重点关注的 5 个核心对象:

(一)SldWorks 对象:二次开发的 “入口”

  • 功能定位:代表 SolidWorks 应用程序本身,是所有 API 操作的起点,用于获取软件全局信息、创建 / 打开文档、调用全局工具(如数学工具MathUtility)。

  • 常用方法与属性

    • GetActiveObject("SldWorks.Application"):获取当前运行的 SolidWorks 实例(需引用System.Runtime.InteropServices)。
    • NewDocument(templatePath, 0, 0, 0):基于模板创建新文档(零件、装配体、工程图),templatePath为模板文件路径(如零件模板Part.prtdot)。
    • OpenDoc6(filePath, swDocumentTypes_e.swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", out errors, out warnings):打开已有文档,支持静默打开(不弹出对话框)。
    • RevisionNumber():获取 SolidWorks 版本号(如 “2023 SP5.0”),用于版本兼容性判断。
  • 应用场景:启动软件、创建 / 打开文档、获取全局配置(如单位设置、模板路径)。

(二)ModelDoc2 对象:模型操作的 “核心”

  • 功能定位:代表 SolidWorks 中的单个文档(零件.sldprt、装配体.sldasm、工程图.slddrw),是对模型进行具体操作(如修改尺寸、添加特征、生成视图)的核心对象。

  • 常用方法与属性

    • ActiveDoc:通过SldWorks对象获取当前激活的文档(如swApp.ActiveDoc)。
    • GetType():获取文档类型,返回值为swDocumentTypes_e枚举(如swDocPART代表零件、swDocASSEMBLY代表装配体)。
    • Extension.SetConfigurationSpec(configName):切换文档的配置(如切换零件的 “标准件”“定制件” 配置)。
    • FeatureManager.FeatureCount(True):获取模型中的特征总数(包含隐藏特征)。
  • 应用场景:修改零件尺寸、添加 / 删除特征、切换配置、生成工程图视图。

(三)Feature 对象:模型特征的 “操作单元”

  • 功能定位:代表模型中的单个特征(如拉伸、旋转、倒角、孔、阵列),用于获取特征信息、修改特征参数(如尺寸、布尔运算类型)、抑制 / 解除抑制特征。

  • 常用方法与属性

    • FirstFeature() / NextFeature():通过ModelDoc2对象遍历模型中的所有特征(如从第一个特征开始,循环获取下一个特征,直至null)。
    • GetTypeName():获取特征类型名称(如 “Boss-Extrude” 代表拉伸凸台、“Hole-Wizard” 代表孔向导)。
    • GetDimension2(dimName, 0):获取特征的指定尺寸(如拉伸特征的 “深度” 尺寸),并通过SetSystemValue2(newValue, False)修改尺寸值。
    • Suppression(True):抑制特征(隐藏特征并排除其对模型的影响)。
  • 应用场景:批量修改特征尺寸、抑制不需要的特征(如简化模型)、遍历特征并提取 BOM 信息。

(四)SelectionMgr 对象:模型选择的 “管理器”

  • 功能定位:管理 SolidWorks 中的选择集,用于获取用户手动选择的对象(如面、边、顶点、特征),或通过代码自动选择对象(如选择某个面作为草图基准面)。

  • 常用方法与属性

    • ModelDoc2.SelectionManager:获取当前文档的选择管理器。
    • GetSelectedObjectCount():获取当前选择的对象数量。
    • GetSelectedObject6(index, mark):获取指定索引的选择对象(index从 1 开始,mark为选择标记,通常为 0),返回值需根据对象类型强制转换(如转换为Face2代表面、Edge代表边)。
    • CreateMark():创建选择标记,用于区分不同批次的选择对象(如批量选择多个面时标记分组)。
  • 应用场景:自动选择模型元素(如选择孔的内表面进行倒角)、获取用户选择的对象并进行批量操作(如对选中的特征统一修改颜色)。

(五)MathUtility 对象:几何计算的 “工具库”

  • 功能定位:提供数学计算与几何操作功能,支持点、向量、矩阵、坐标系的创建与变换,是实现复杂几何逻辑(如零件定位、路径规划)的核心工具。

  • 常用方法与属性

    • SldWorks.GetMathUtility():获取数学工具实例。
    • CreatePoint(double[] coordinates):创建三维点(坐标数组为[x, y, z]),返回MathPoint对象。
    • CreateVector(double[] direction):创建三维向量(方向数组为[dx, dy, dz]),返回MathVector对象,可用于计算向量的点积、叉积。
    • CreateTransform():创建变换矩阵,用于实现模型的平移、旋转(如将零件沿 X 轴平移 100mm)。
  • 应用场景:零件在装配体中的自动定位、基于坐标的特征创建(如在指定点创建孔)、几何尺寸的计算(如两点之间的距离)。