许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  CATIA二次开发:强大的Selection选择功能

CATIA二次开发:强大的Selection选择功能

阅读数 5
点赞 0
article_banner

文章目录

  • 一、前言 二、方法及步骤 2.1 单选 2.2 多选 2.3 删除 2.4 隐藏元素 2.5 修改几何样式 2.6 隔离(使用StartCommand) 三、参考资料


一、前言

我的一天 🌞 (按照推文发送的时间来说应该是我的昨天):早上7:40起床,洗漱吃完早饭9:00坐在电脑面前,打开Typora,看看自己整理的论文思路,再看一看GoodNote中的其他学者的论文。嗯,不出所料,这一块能写的点别人都一个不落地写过了。稍微有点了思路,于是想码点字,写一个删一个,写一行删一行,就这样来来回回,陷入自我怀疑。10:00实在坐不住了,骑车去淞南公园转一转,调整一下心态,发现大爷大妈的生活比我精彩多了。11:00去新江湾吃个牛丼饭,可能是在宿舍没状态,所以吃完饭就骑车去了公司。到了公司正好12:30,平时午休的点,困了,先来一觉。13:00开始起来干活,到17:00时共计码了个字,也就是说平均每小时100个字😂,就这效率还感觉整个人被掏空了。食堂吃个晚饭,就骑车回去了,19:00准时到长江西路羽毛球馆打球,遇到高手还被教育了一顿,顺利地把写论文的精神压力转移到身体上。21:00离开球馆,22:00洗完澡,22:30再次回到宿舍的电脑面前,发现自己还欠一篇推文,不过推文比论文简单多了,怎么写都行,不看专家脸色,就算写得不好,粉丝也不可能顺着网线来打我啊。

二、方法及步骤

不扯了,今天这期还是继续CATIA二次开发系列,主要讲的内容。因为之前做过Revit二次开发的缘故,在接触到CATIA选择的时候,我发现两者截然不同。Revit API中的select,字面意思,就是用于过滤选择的(印象里是这样的,如有不妥可私信我),而CATIA中的Selection被赋予了很多功能,例如隐藏、删除、更改几何样式等都需要通过Selection来完成。当然这也很容易理解,试想一下软件的实际操作,如果你想隐藏一个元素,是不是先得先选中它,然后在它的基础上右击Hide,完成隐藏。在Revit中,只要在代码层面拿到对应的元素 实例 就可以进行隐藏等操作了,而CATIA在获取元素实例后需要先将其添加至选择集,然后对当前选择集进行属性设置,实现隐藏等功能。

讲起来很简单,但在实际代码编写过程中,还会遇到很多像这样的坑,例如你想把一个HybridShape从一个Part复制到另一个Part,想想好像挺简单的一个事,遍历结构树,拿到被复制元素,Copy();然后再遍历结构树拿到另一个Part,执行Paste()。但如果你的ActivePart不是被复制元素所在的那个Part,这个程序是走不通的。下面的内容我就直接上干货了,写完可以早点休息。

2.1 单选

Selection selection = CATIA.ActiveEditor.Selection;
// 清空选择
selection.Clear();
Array filter = Array.CreateInstance(typeof(object),1);
// ElemType 是元素类型,一般为VPMReference HybridBody等 
filter.SetValue(ElemType, 0);
// iMaySkipInteractiveSelection为true,程序首先去判断当前已选元素是否符合要求,再决定是否需要交互选择(即同下)
// iMaySkipInteractiveSelection为false,用户去树中选择一个符合要求的元素,然后程序清空Selection并加当前选择加入Selection
string status = selection.SelectElement(filter, ref msg, false);

2.2 多选

// 建议使用SelectElement3;不推荐使用SelectMultipleElements
public string GetSelectedElems(INFITF.Application CATIA, string ElemType, string msg)
{
    Selection selection = CATIA.ActiveEditor.Selection;
    selection.Clear();
    Array filter = Array.CreateInstance(typeof(object), 1);
    filter.SetValue(ElemType, 0);
    string status = selection.SelectElement3(filter, ref msg, true, CATMultiSelectionMode.CATMultiSelTriggWhenSelPerf, false);
    return status;
}
🔔选择之后一定要对status进行判断,否则程序是有缺陷的

2.3 删除

Selection.Delete();

2.4 隐藏元素

// 先加入选择集
Selection sel = CATIA.ActiveEditor.Selection;
sel.Clear();
sel.Add(splitStarCurve);
sel.Add(extraStartPoint);
sel.Add(extraEndPoint);
// 隐藏
sel.VisProperties.SetShow( CatVisPropertyShow.catVisPropertyNoShowAttr);
sel.Clear();

2.5 修改几何样式

Selection sel = activeEditor.Selection;
sel.Add(StartLine_L);
sel.VisProperties.SetRealColor(255,0,0,0);
sel.VisProperties.SetRealLineType(2, 0);
sel.Clear();

2.6 隔离(使用StartCommand)

大家可以多多尝试 StartCommand,发掘一些新的功能字符串
ActiveEditor.Selection.Clear();
ActiveEditor.Selection.Add(item);
CATIA.StartCommand("Isolate");
ActiveEditor.Selection.Clear();

三、参考资料

《3DEXPEROENCE Automation Help》
在这里插入图片描述


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

相关文章
QR Code
微信扫一扫,欢迎咨询~
customer

online

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 board-phone 155-2731-8020
close1
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空