许可优化
许可优化
产品
产品
解决方案
解决方案
服务支持
服务支持
关于
关于
软件库
当前位置:服务支持 >  软件文章 >  Catia开发之测量功能(C#实现)

Catia开发之测量功能(C#实现)

阅读数 3
点赞 0
article_banner

编辑于江苏南京2021年7月31号。

Catia中测量的方法有两种,第一是通过获取 文档 SPAWorkbench对象,通过SPAWorkbench获取Measurable对象,进而获取需要测量的参数,如角度、长度、体积等。这种方法只适用于当个物体的测量,对于两个物体如点的距离、线的间距等无法进行测量。

相关 代码 如下

//1.首先获取当前文档的SPAWorkbench对象var spaWorkbench = oDoc.GetWorkbench("SPAWorkbench") as SPAWorkbench;//2.得到Measurable对象Measurable measureable = spaWorkbench.GetMeasurable(selRef);//3.测量长度var length = measureable.Length;

第二种方法可以通过知识工程模块来获得测量的参数,通过知识工程的distance 方法获取两个物体之间的长度等。


C#代码如下:

Application catapp = Marshal.GetActiveObject("Catia.Application") as Application;var oDoc = catapp.ActiveDocument as PartDocument;  var rootPart= oDoc.Part;var paras= rootPart.Parameters.RootParameterSet;//(1)创建一个参数用于接收测量的参数var c1= paras.AllParameters.CreateDimension("Custome", "LENGTH", 12d); //(2)选择需要测量的物体,并找到物体存放的路径var p1= CatiaHelper.SelectionObject<HybridShapeCurveExplicit>(catapp);var str1 = paras.AllParameters.GetNameToUseInRelation(p1); var p2 = CatiaHelper.SelectionObject<HybridShapeCurveExplicit>(catapp);var str2 = paras.AllParameters.GetNameToUseInRelation(p2); //(3)拼接用于知识工程公式的字符串string resultStr = "distance (" + str1 + "," + str2 + ")"; //(4)创建知识工程的关系var resutFormula= rootPart.Relations.CreateFormula("Result","计算两点距离",c1, resultStr);

其中CatiaHelper是自定义的Catia帮助类,CatiaHelper.SelectionObject()方法是用于交互选择Catia类型的。具体实现参考代码如下。

        public static T SelectionObject<T>( INFITF.Application catapp) where T:class        {            T resultItem = default(T);            string typeStr = typeof(T).ToString();            string[] strAry = typeStr.Split('.');            typeStr =strAry[strAry.Length-1];                        Selection sel = (catapp.ActiveDocument).Selection;            sel.Clear();            Array arr = new object[1];            arr.SetValue(typeStr, 0);            PushCatiaToUpper();            string str = sel.SelectElement2(arr, "请选择"+typeof(T).ToString(),true);            try            {                resultItem = str == "Normal" ? (T)sel.Item(1).Value : null;            }            catch (Exception e)            {                throw new Exception(e.Message);            }            return resultItem;        }


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


相关文章
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
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

姓名不为空

姓名不为空
手机不正确

手机不正确

手机不正确
公司不为空

公司不为空

公司不为空