Catia开发之测量(C#)

编辑于江苏南京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;
        }

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值