UF_MODL.h 和 UF_MODL_legacy.h 函数分类介绍
一、uf_modl.h 函数分类
1. 特征管理
- UF_MODL_ask_feature_sign:获取特征符号(布尔操作类型)
- UF_MODL_ask_immediate_children:获取建模即时子项偏好设置
- UF_MODL_set_immediate_children:设置建模即时子项偏好设置
- UF_MODL_ask_dynamic_update:获取动态更新设置
- UF_MODL_set_dynamic_update:设置动态更新设置
- UF_MODL_ask_update_undo_feat:获取更新失败的特征信息
- UF_MODL_ask_feat_tolerance:获取特征的公差
- UF_MODL_set_feat_tolerance:设置特征的公差
- UF_MODL_ask_matching_face_in_instance:获取实例中与主特征面匹配的面
- UF_MODL_ask_instances_of_feature:获取特征的所有实例
- UF_MODL_is_browseable_feature:检查特征是否可浏览
- UF_MODL_ask_feat_error:获取特征的所有更新失败消息
- UF_MODL_ask_feat_display_name:获取特征的显示名称
- UF_MODL_ask_feat_fail_list:获取更新后所有失败的特征记录
- UF_MODL_ask_feat_warning_messages:获取特征的所有更新警告消息
- UF_MODL_record_feature_update_warnings:设置是否记录特征更新警告
2. 布尔运算
- UF_MODL_unite_bodies:合并两个体
- UF_MODL_subtract_bodies:从一个体中减去另一个体
- UF_MODL_intersect_bodies:创建两个体的交集
- UF_MODL_unite_bodies_with_retained_options:合并两个体,可选择保留原始体
- UF_MODL_subtract_bodies_with_retained_options:减去两个体,可选择保留原始体
- UF_MODL_intersect_bodies_with_retained_options:相交两个体,可选择保留原始体
- UF_MODL_edit_boolean_with_retained_options:编辑布尔特征,可选择保留原始体
- UF_MODL_ask_boolean_with_retained_options:获取布尔特征的保留选项信息
- UF_MODL_replace_boolean_body:替换布尔特征中的体
3. 体操作
- UF_MODL_split_body:分割体
- UF_MODL_cut_body:切割体
- UF_MODL_section_body:创建体的截面
- UF_MODL_thicken_sheet:加厚片体
- UF_MODL_offsets:创建偏移特征
- UF_MODL_ask_offset_parms:获取偏移特征的参数
- UF_MODL_edit_offset:编辑偏移特征
4. 几何查询
- UF_MODL_ask_face_uv_minmax:获取面的参数范围
- UF_MODL_ask_face_grid_count:获取面的网格计数
- UF_MODL_ask_face_normal:获取面的法线方向
- UF_MODL_ask_face_data:获取面的数据
- UF_MODL_ask_edge_data:获取边的数据
- UF_MODL_ask_curve_data:获取曲线的数据
- UF_MODL_ask_body_data:获取体的数据
- UF_MODL_ask_bounding_box:获取体的边界框
- UF_MODL_ask_point_containment:检查点是否包含在体中
- UF_MODL_validate_body:验证体的有效性
- UF_MODL_check_interference:检查体之间的干涉
- UF_MODL_trace_a_ray:追踪射线与体的交点
5. 特征创建
- UF_MODL_create_chamfer:创建倒角特征
- UF_MODL_create_fillet:创建倒圆特征
- UF_MODL_create_hole:创建孔特征
- UF_MODL_create_slot:创建槽特征
- UF_MODL_create_pad:创建凸台特征
- UF_MODL_create_pocket:创建型腔特征
- UF_MODL_create_sketch:创建草图特征
- UF_MODL_create_extrude:创建拉伸特征
- UF_MODL_create_revolve:创建旋转特征
- UF_MODL_create_sweep:创建扫描特征
6. 偏差检查
- UF_MODL_devchk_curve_to_curve:计算两条曲线之间的偏差
- UF_MODL_devchk_curve_to_face:计算曲线与面之间的偏差
- UF_MODL_devchk_edge_to_face:计算边与面之间的偏差
- UF_MODL_devchk_face_to_face:计算两个面之间的偏差
- UF_MODL_devchk_edge_to_edge:计算两条边之间的偏差
7. 几何相交
- UF_MODL_intersect_curve_to_curve:计算两条曲线的交点
- UF_MODL_intersect_curve_to_plane:计算曲线与平面的交点
- UF_MODL_intersect_curve_to_face:计算曲线与面的交点
8. 其他功能
- UF_MODL_update:更新模型
- UF_MODL_ask_update_fail_option:获取更新失败选项
- UF_MODL_set_update_fail_option:设置更新失败选项
- UF_MODL_ask_show_report_reference:获取是否显示报告引用
- UF_MODL_set_show_report_reference:设置是否显示报告引用
二、uf_modl_legacy.h 函数分类
1. 基本几何体操作
- uf5300:创建圆柱体
- uf5301:读取圆柱体数据
- uf5303:读取圆柱体端点和向量
- uf5305:读取圆柱体半径
- uf5309:读取圆柱体实际数据
- uf5310:创建圆锥体
- uf5311:读取圆锥体数据
- uf5313:读取圆锥体轴向量
- uf5315:读取圆锥体顶点坐标
- uf5317:读取圆锥体角度
- uf5319:读取圆锥体实际数据
- uf5320:创建球体
- uf5321:读取球体数据
- uf5323:读取球体轴向量
- uf5325:读取球体中心
- uf5327:读取球体半径
- uf5329:读取球体实际数据
- uf5374:创建平面(已被 UF_MODL_create_plane 替换)
- uf5375:读取平面数据(已被 UF_MODL_ask_plane 替换)
- uf5376:编辑平面数据(已被 UF_MODL_edit_plane 替换)
2. 面建模
- uf5400:读取面网格计数(已被 UF_MODL_ask_face_grid_count 替换)
- uf5401:编辑面网格计数(已被 UF_MODL_edit_face_grid_count 替换)
- uf5404:读取面 u-v 最小/最大值(已被 UF_MODL_ask_face_uv_minmax 替换)
- uf5406:读取面法线方向
- uf5407:编辑面法线方向
- uf5408:读取面生成曲线
- uf5409:通过环修剪片体
- uf5410:移除面修剪
- uf5411:读取面修剪状态
- uf5412:通过曲线和点修剪面
3. 自由形式建模
- uf5330:创建旋转体
- uf5331:读取旋转体轴向量
- uf5333:读取旋转体轴上的点
- uf5339:读取旋转体实际数据
- uf5340:创建拉伸体
- uf5341:读取拉伸体轴向量
- uf5349:读取拉伸体实际数据
- uf5350:创建规则片体
- uf5360:创建有界平面
- uf5363:读取面锚点计数
- uf5364:读取面锚点对象
- uf5368:读取面边曲线数据
- uf5380:创建曲线网格片体
- uf5381:读取曲线网格片体的主次曲线数量
- uf5382:读取曲线网格片体的主曲线
- uf5384:读取曲线网格片体的交叉曲线
- uf5405:为面创建边界框
- uf5440:创建 B 曲面片体
- uf5441:读取 B 曲面片体数据(已被 UF_MODL_ask_bsurf 替换)
- uf5442:从旋转体创建 B 曲面片体
- uf5443:从曲线列表创建 B 曲面片体
- uf5444:用 B 曲面近似面
- uf5448:通过点创建 B 曲面片体(已被 UF_MODL_create_bsurf_thru_pts 替换)
- uf5449:通过三次拟合创建自由形式特征
- uf5450:创建偏移面
- uf5451:读取偏移距离
- uf5452:编辑偏移距离
- uf5453:读取基面类型
- uf5460:使用圆锥面创建自由形式特征
- uf5461:使用扫描创建自由形式特征
- uf5462:创建 B 曲面面
- uf5464:读取极点计数
- uf5465:从面创建 B 曲面面
4. 实体操作
- uf6500:创建块体
- uf6501:创建球体
- uf6502:创建圆柱体
- uf6503:创建圆环体
- uf6504:创建圆锥体
- uf6505:创建棱柱体
- uf6506:从一系列片体创建缝合实体
- uf6507:创建拉伸体
- uf6508:创建旋转体
- uf6509:将面转换为片体
- uf6511:复制体
- uf6520:合并、相交或减去实体
- uf6523:分割实体(已被 UF_MODL_split_body 替换)
- uf6524:截面实体
- uf6525:切割实体
- uf6526:向实体添加倒圆
- uf6540:查询包含指定体的框(已被 UF_MODL_ask_bounding_box 替换)
- uf6541:查询指定点的包含关系(已被 UF_MODL_ask_point_containment 替换)
- uf6542:检查体的有效性(已被 UF_MODL_validate_body 替换)
- uf6543:返回体的质量属性
- uf6544:检查体的干涉(已被 UF_MODL_check_interference 替换)
- uf6545:用射线与体列表相交(已被 UF_MODL_trace_a_ray 替换)
- uf6546:读取面数
- uf6547:读取实体密度
- uf6548:编辑实体密度
- uf6549:读取全局(默认)实体密度(已被 UF_MODL_ask_default_density 替换)
- uf6550:编辑全局(默认)实体密度(已被 UF_MODL_set_default_density 替换)
5. 错误处理
- uc6560:返回上次调用实体例程的错误消息
6. 参数查询
- UF_MODL_ask_torus_parms:获取圆环体的参数
- UF_MODL_ask_prism_parms:获取棱柱体的参数
三、总结
uf_modl.h 包含了 NX/UG 建模的核心功能,涵盖了特征管理、布尔运算、体操作、几何查询等多个方面的函数。而 uf_modl_legacy.h 则包含了一些传统的建模函数,其中许多已经被 uf_modl.h 中的新函数所替换。
在使用这些函数时,建议优先使用 uf_modl.h 中的函数,因为它们是更现代、更完整的 API。对于 uf_modl_legacy.h 中的函数,只有在维护旧代码或特定情况下才需要使用。
uf_modl.h 文件函数功能完整介绍
uf_modl.h 是 NX/UG Open API 中最核心的建模模块头文件,提供了丰富的建模操作函数。本文将对其所有函数进行详细分类介绍。
一、文件概述
文件位置:c:\Users\**\source\repos\UgAsk\UGOPEN\uf_modl.h
主要功能:
- 提供各种建模操作函数,包括创建基本体和特征
- 提供建模对象查询功能
- 支持创建、删除和编辑表达式
- 定义了建模相关的数据类型和常量
层次结构:
- 体(Body)→ 特征(Feature)→ 面(Face)→ 边(Edge)
- 特征标识符仅在 UF_MODL_* 函数中使用
- 体、面、边标识符可在整个 Open API 中使用
二、功能分类与函数详解
1. 特征管理操作
| 函数名 | 功能描述 |
|---|---|
UF_MODL_ask_current_feature |
获取当前特征 |
UF_MODL_set_current_feature |
设置当前特征 |
UF_MODL_suppress_feature |
抑制特征 |
UF_MODL_unsuppress_feature |
取消抑制特征 |
UF_MODL_delete_feature |
删除特征 |
UF_MODL_move_feature |
移动特征(点到点、轴到轴、坐标系到坐标系) |
UF_MODL_reorder_feature |
重排特征 |
UF_MODL_feature_can_be_copied |
检查特征是否可复制 |
UF_MODL_ask_references_of_features |
获取特征的父引用 |
UF_MODL_copy_paste_features |
复制粘贴特征 |
UF_MODL_paste_features |
粘贴特征(已被替换) |
2. 体操作与布尔运算
| 函数名 | 功能描述 |
|---|---|
UF_MODL_active_part |
激活体 |
UF_MODL_set_default_density |
设置默认密度 |
UF_MODL_set_body_density |
设置体密度 |
UF_MODL_set_body_type_pref |
设置体类型偏好(实体/片体) |
UF_MODL_operations |
执行布尔操作(加、减、交) |
UF_MODL_unite_bodies |
合并体 |
UF_MODL_subtract_bodies |
减去体 |
UF_MODL_intersect_bodies |
相交体 |
UF_MODL_trim_body |
修剪体 |
UF_MODL_trim_sheet |
修剪片体 |
UF_MODL_split_body |
分割体 |
UF_MODL_split_body_retain_tool |
分割体并保留工具 |
UF_MODL_patch_body |
修补体 |
UF_MODL_create_mirror_body |
创建镜像体 |
3. 参数与数据管理
| 函数名 | 功能描述 |
|---|---|
UF_MODL_delete_body_parms |
删除体参数 |
UF_MODL_delete_object_parms |
删除对象参数 |
UF_MODL_replace_body_data |
替换体数据 |
UF_MODL_replace_boolean_body |
替换布尔体 |
UF_MODL_edit_face_grid_count |
编辑面网格计数 |
UF_MODL_edit_face_join |
编辑面连接 |
UF_MODL_redefine_replace_faces |
重定义替换面 |
UF_MODL_replace_feat_strings |
替换特征字符串 |
4. 特征重新定义和重附加
| 函数名 | 功能描述 |
|---|---|
UF_MODL_reattach_target_face |
重新附加目标面 |
UF_MODL_reattach_tool_face |
重新附加工具面 |
UF_MODL_reattach_thru_faces |
重新附加贯穿面 |
UF_MODL_remove_thru_faces |
移除贯穿面 |
UF_MODL_add_thru_faces |
添加贯穿面 |
UF_MODL_reattach_dir_ref |
重新附加方向参考 |
UF_MODL_calculate_ref_dir |
计算参考方向 |
UF_MODL_reverse_dir_ref |
反转方向参考 |
5. 更新操作
| 函数名 | 功能描述 |
|---|---|
UF_MODL_set_update_fail_option |
设置更新失败选项 |
UF_MODL_update |
更新部件 |
UF_MODL_update_for_animation |
为动画更新部件 |
UF_MODL_update_all_features |
更新所有特征 |
UF_MODL_ask_update_fail_option |
获取更新失败选项 |
UF_MODL_ask_update_error_message |
获取更新错误消息 |
UF_MODL_ask_out_of_date_features |
查询过时特征 |
6. 比较和验证
| 函数名 | 功能描述 |
|---|---|
UF_MODL_compare |
比较两个对象(几何等价性) |
UF_MODL_compare_topology |
基于公差比较两个对象 |
UF_MODL_validate_body |
验证体的有效性 |
7. 几何计算
| 函数名 | 功能描述 |
|---|---|
UF_MODL_evaluate_face |
计算面在给定参数值处的导数 |
UF_MODL_evaluate_parm |
评估参数结构 |
UF_MODL_intersect_objects |
计算两个对象的交点 |
UF_MODL_check_interference |
检查体之间的干涉 |
UF_MODL_trace_a_ray |
射线追踪 |
UF_MODL_devchk_adjacent_edges |
检查相邻边的偏差 |
8. 特征查询
| 函数名 | 功能描述 |
|---|---|
UF_MODL_ask_feature_sign |
获取特征的符号 |
UF_MODL_ask_feature_boolean |
获取特征的布尔状态 |
UF_MODL_ask_feat_direction |
获取特征方向 |
UF_MODL_ask_feat_location |
获取特征位置 |
UF_MODL_ask_feat_body |
获取特征所属的体 |
UF_MODL_is_body_feature |
检查是否为体特征 |
UF_MODL_ask_feat_edges |
获取特征的边 |
UF_MODL_ask_feat_faces |
获取特征的面 |
UF_MODL_ask_nested_frecs |
获取嵌套特征 |
UF_MODL_ask_link_faces |
获取链接面 |
UF_MODL_ask_thru_faces |
获取贯穿面 |
UF_MODL_ask_feat_type |
获取特征类型 |
UF_MODL_ask_feat_name |
获取特征名称 |
UF_MODL_ask_proper_legacy_feat_name |
获取特征的传统名称 |
UF_MODL_ask_feat_relatives |
获取特征的父子关系 |
UF_MODL_ask_time_stamp_of_feature |
获取特征的时间戳 |
UF_MODL_ask_object_feat |
获取对象所属的特征 |
UF_MODL_ask_feat_object |
获取特征的对象 |
9. 体查询
| 函数名 | 功能描述 |
|---|---|
UF_MODL_ask_body_type |
获取体类型(实体/片体) |
UF_MODL_ask_default_density |
获取默认密度 |
UF_MODL_ask_body_density |
获取体密度 |
UF_MODL_ask_body_type_pref |
获取体类型偏好 |
UF_MODL_ask_body_edges |
获取体的边 |
UF_MODL_ask_body_faces |
获取体的面 |
UF_MODL_ask_body_feats |
获取体的特征 |
UF_MODL_ask_body_features |
获取体的特征统计 |
UF_MODL_ask_named_body_object |
获取体上指定名称的对象 |
10. 面查询
| 函数名 | 功能描述 |
|---|---|
UF_MODL_ask_face_data |
获取面数据 |
UF_MODL_ask_face_parm |
获取面上参考点的参数 |
UF_MODL_ask_face_parm_2 |
获取面上参考点的参数(改进版) |
UF_MODL_ask_face_props |
获取面的属性 |
UF_MODL_ask_face_periodicity |
获取面的周期性 |
UF_MODL_ask_face_uv_minmax |
获取面的UV参数范围 |
UF_MODL_ask_face_grid_count |
获取面的网格计数 |
UF_MODL_ask_face_min_radii |
获取面的最小曲率半径 |
UF_MODL_ask_face_type |
获取面类型 |
UF_MODL_ask_face_torus_type |
获取环面类型 |
UF_MODL_ask_adjac_faces |
获取相邻面 |
UF_MODL_ask_face_topology |
获取面的拓扑类型 |
UF_MODL_ask_face_body |
获取面所属的体 |
UF_MODL_ask_face_edges |
获取面的边 |
UF_MODL_ask_face_feats |
获取面所属的特征 |
UF_MODL_ask_face_loops |
获取面的环 |
UF_MODL_ask_split_faces |
获取分割面 |
UF_MODL_ask_merged_faces |
获取合并面 |
UF_MODL_ask_alive_face |
获取存活面 |
11. 边查询
| 函数名 | 功能描述 |
|---|---|
UF_MODL_ask_shared_edges |
获取两个面共享的边 |
三、使用注意事项
-
标识符使用规则:
- 特征标识符仅在 UF_MODL_* 函数中使用
- 体、面、边标识符可在整个 Open API 中使用
- 获取体标识符:通过
UF_MODL_ask_feat_body()从特征获取
-
坐标系与单位:
- 函数返回的信息基于对象所属部件的单位系统
- 在混合单位装配中,使用实例标签作为输入时,数据会被缩放和转换到装配上下文
-
工作部件限制:
- 执行操作(创建/编辑)的对象不能是实例,且必须与工作部件在同一个部件中
- 否则,操作对象将返回 NULL_TAG
-
布尔操作注意事项:
UF_MODL_operations()函数中,UF_NULLSIGN默认等同于UF_POSITIVE(添加到目标实体)- 布尔操作后,目标实体将被修改,工具实体可能被消耗
-
特征操作注意事项:
- 移动特征后,应调用
UF_MODL_update更新数据库 - 重排特征会自动执行更新
- 复制粘贴特征时,需要指定父引用的映射关系
- 移动特征后,应调用
-
内存管理:
- 许多函数返回需要通过
UF_free释放的内存 - 例如,
UF_MODL_ask_feat_name返回的字符串需要通过UF_free释放
- 许多函数返回需要通过
-
错误处理:
- 大多数函数返回错误代码,应检查返回值以确保操作成功
- 对于复杂操作,应使用
UF_MODL_set_update_fail_option设置适当的失败处理选项
四、总结
uf_modl.h 文件是 NX/UG Open API 中最核心的建模模块头文件,提供了全面的建模操作函数。这些函数涵盖了从基本的特征管理到复杂的几何计算的各个方面,为开发者提供了强大的建模能力。
使用这些函数,开发者可以:
- 创建和管理各种类型的特征
- 执行布尔运算和其他体操作
- 查询和修改特征、体、面、边的属性
- 执行几何计算和分析
- 控制建模过程中的各种参数和偏好
掌握 uf_modl.h 中的函数对于开发 NX/UG 集成应用程序至关重要。通过合理使用这些函数,开发者可以实现复杂的建模自动化,提高设计效率和准确性。
在使用这些函数时,应注意遵循 NX/UG Open API 的最佳实践,包括正确管理内存、处理错误、遵循工作部件限制等,以确保应用程序的稳定性和可靠性。