编辑于江苏南京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; }
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删