Creo protoolkit 二次开发(三) 遍历模型的特征

news2024/11/15 21:38:09

一、特征概念

        Creo是基于特征的参数化建模,在模型树上的每个项目都是特征。

        模型主要由各类特征构成。以零件模型为例,其基本特征包括基准特征、拉伸特征、孔特征、倒圆角特征、旋转特征、曲面特征、切口特征、阵列特征和扫描特征等。这些特征的叠加形成一个完整的三维零件模型。

        在装配件中,元件则是其构成特征,通常由零件或子装配件组成。元件相对于装配件的特性而言,在装配件中起到关键作用。而如果元件本身是零件模型,则其内部又由构成零件模型的基本特征组成。因此,在装配件中,特征构成呈现出层次结构。

二、特征的定义

特征对象结构。

typedef struct pro_model_item
{
  ProType  type;
  int      id;
  ProMdl owner;
}ProModelitem, ProGeomitem, ProExtobj, ProFeature

其中:

  • type:值为PRO_FEATURE;
  • id:特征ID;
  • owner:特征所属的模型;

三、遍历模型下的特征

        要访问组件,可以用【ProSolidFeatVisit】进行访问 ,并使用函数ProFeatureTypeGet()查找类型为PRO_FEAT_COMPONENT的特征。

实例代码。

void VisitAllFeatrues()
{
    //分配一个数组存特征id
	ProError status;
	ProArray id_array = NULL;
	status = ProArrayAlloc(0, sizeof(int), 1, (ProArray*)&id_array);
	if (status != PRO_TK_NO_ERROR)
	{
		AfxMessageBox(_T("ProArrayAlloc error"));
		return;
	}
	//获取当前模型,遍历特征
	ProMdl mdl;
	ProMdlCurrentGet(&mdl);

	ProSolidFeatVisit((ProSolid)mdl,
		(ProFeatureVisitAction)UserFeatVisitAct,
		(ProFeatureFilterAction)VisitFilter,
		(ProAppData)&id_array);
	
	int array_size;
	ProArraySizeGet((ProArray)id_array, &array_size);
	ProArrayFree((ProArray*)&id_array);
}

其中,关于访问函数。

// 实体模型特征访问函数
ProError SolidFeatVisitFunc(ProFeature* p_feature,
                            ProError status,
                            ProAppData app_data)
{
    ProArrayObjectAdd((ProArray*)app_data, -1, 1, p_feature);
    return PRO_TK_NO_ERROR;
}

关于过滤函数。

ProError VisitFilter(ProFeature* feature,ProError status,ProAppData appdate)
{
    ProError status;
	ProFeattype ftype;
	status = ProFeatureTypeGet(feature, &ftype);
	if (ftype == PRO_FEAT_COMPONENT)
		return (PRO_TK_NO_ERROR);
	return (PRO_TK_CONTINUE);
}

更多学习内容,可关注公众号:CAD软件二次开发

 以上内容为个人测试过程的记录,供大家参考。

内容如有错欢迎批评指正,谢谢!!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1960898.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

angular入门基础教程(七)系统路由

路由的实现 当我们系统越来复杂,功能越来越多,路由也就是必须的了。在 ng 中如何实现路由呢? 启用路由 在 app 目录下,新建一个 router 目录,把 app.routers.ts 文件拷贝过来,并修改一下。 import { Ro…

【数据结构】链式二叉树的实现和思路分析及二叉树OJ

【数据结构】链式二叉树的实现和思路分析及二叉树OJ 🔥个人主页:大白的编程日记 🔥专栏:数据结构 文章目录 【数据结构】链式二叉树的实现和思路分析及二叉树OJ前言一.链式二叉树的定义及结构二.链式二叉树的遍历2.1前序遍历2.2中…

《LeetCode热题100》---<双指针篇四道②>

本篇博客讲解LeetCode热题100道双指针篇中的 第三道:三数之和(中等) 第四道:接雨水(困难) 第三道:三数之和(中等) 法一:暴力枚举(三重循环&#x…

Java学习Day18:基础篇8

多态 基本信息: 应用场景: 可以把子类对象赋值给父类对象,实现多态从而使用同一种方法; 多态中调用成员的特点 1.调用成员变量都看左边 调用成员变量:编译看左边,运行也看左边 编译看左边: javac编译代码的时候&a…

【BSV生态亮点】体育进入区块链时代:波兰奥委会与Zetly建立战略伙伴关系

​​发表时间:2024年7月18日 波兰奥运委员会和Zetly宣布正式建立战略伙伴关系。这一合作是波兰将现代技术、数字资产和创新解决方案整合到波兰体育中的重要一步,将把波兰体育产业带入数字时代。 Zetly是一个非常活跃的数字平台,它将体育与区…

3.6.锚框

锚框 ​ 13.4. 锚框 — 动手学深度学习 2.0.0 documentation (d2l.ai) ​ 一类目标检测算法是基于锚框的,步骤如下: ​ 使用多个被称为锚框的区域(边缘框),预测每个锚框里是否含有关注的物体,如果有,则预测从这个锚…

双指针-【3,4,5,6,7,8】

第三题:快乐数 . - 力扣(LeetCode). - 备战技术面试?力扣提供海量技术面试资源,帮助你高效提升编程技能,轻松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/happy-number/算法思想: 1.每个…

jdk版本管理利器-sdkman

1.什么是sdkman? sdkman是一个轻量级、支持多平台的开源开发工具管理器,可以通过它安装任意主流发行版本(例如OpenJDK、Kona、GraalVM等等)的任意版本的JDK。通过下面的命令可以轻易安装sdkman: 2.安装 curl -s "https://…

IFM易福门LR3000LR3300液位传感器操作说明

IFM易福门LR3000LR3300液位传感器操作说明

使用ssh-remote连接远程vscode运行yolo项目时的一点坑

使用ssh-remote连接远程vscode运行yolo项目时的一点坑 1.坑1 因为我是直接下载的release包,然后运行 pip install -e .来下载依赖的,那么这个时候需要使用YOLO时都需要在下载的release文件的目录下的py文件才能生效 比方说我下载的yolov8(ultralytic…

SpringBoot 快速上手

1. 环境准备 ⾃检Idea版本: 社区版: 2021.1 -2022.1.4 专业版: ⽆要求 如果个⼈电脑安装的idea不在这个范围, 需要卸载重新安装. Idea 卸载参考: https://blog.csdn.net/qq_19072921/article/details/126408402 (⼀定要删除注册表) 2. Maven 2.1 什么是Maven 官⽅…

Stable Diffusion 模型的安装和使用

一、SD模型简介 Stable Diffusion的绘图风格主要由模型来控制,基础模型主要由二次元图片训练获得,所以在不安装其他模型的情况下,只能生成二次元风格的图像。 模型能够有效地控制生成的画风和内容。 常用的模型网站有: Stable D…

Taro 框架中使用iconfont 阿里巴巴矢量图标 class版

想必大家都知道这个图标库的 图标还是很多的‘ 大家应该都也用过 最进开发 Taro nut-ui 的H5 移动端的时候 我发现一些图标我在组件库中找不到 我看到了nut-ui 中还有另一种使用方法 这个叫做 自定一图标 、 我来用实际操作 代码 来介绍一下 这个怎么使用 我总结文章 …

docker环境安装kafka/Flink/clickhouse镜像

1、安装Kafka服务 1、将一下三个tar文件复制到ubuntu指定目录下 2、进入到/home/cl/app目录,使用docker命令加载tar镜像文件 # cd /home/cl/app # docker load -i kafka.tar # docker load -i kafka-manager.tar # docker load -i kafka-zookeeper.tar3、查看d…

MySQL基础练习题11-换座位

题目:交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。按 id 升序 返回结果表。 准备数据 分析数据 方法一:利用power函数对id进行交换,得出的答案只有0或1 第一步:用power()函数将…

HDBaseT远距离无压缩传输系统源头厂家

HDBaseT双绞线延长器是一款集成HDBaseT的远距离高清信号无压缩、无延时传输器,HDMI信号从接收端输出, 信号分辨率高达4Kx2K可以通过单根CAT5/CAT6网线将信号长距离传输高清无压缩音视频信号, 采用单根网线最远可传输70/100米, …

Linux 安装 nacos 2.4.0

参看:Nacos 快速开始 2.4.0 版本是Nacos2.X的又一个功能性版本,此版本的更新主要在 Nacos 的安全性、扩展功能和改进用户体验方面的持续努力,为用户提供了更安全、更灵活的服务管理平台。版本主要的功能如下: 增强安全性&#xf…

Duix AI 太上瘾,让我熬夜体验的AI女友

✨点击这里✨:🚀原文链接:(更好排版、视频播放、社群交流、最新AI开源项目、AI工具分享都在这个公众号!) Duix AI 太上瘾,让我熬夜体验的AI女友 开启 Duix AI 女友的奇妙之旅_ Hi,这…

C++:类和对象2

1.类的默认成员函数 默认成员函数就是用户没有显示实现编译器会自动生成的成员函数称为默认成员函数。一个类,我们在不写的情况下编译器会默认生成6个默认成员函数,分别是构造函数,析构函数,拷贝构造函数,拷贝赋值运算…

前缀和与差分大总结!!!C++

学了忘忘了学o(╥﹏╥)o 题源acwing 讲解前缀和一维,用于序列二维,用于矩阵 讲解差分什么是差分数组?一维差分数组二维差分数组 题目一:前缀和题目二:子矩阵的和题目三:差分题目四:差分矩阵 讲…