请教各位老师,我想求直线与Complex Shape的交点,请问有没有比较便捷的方法?
在MSCE下用C#编程的话仍然可以使用在MS V8i中的那套Interop对象模型,请看如下GetIntersecionPoints函数(C#中叫方法)应该是比较合适而简单的解决方案:
符老师,我试过这个方法,没有获得交点。
BIM.Application app = Bentley.MstnPlatformNET.InteropServices.Utilities.ComApp; BIM.LineElement lineEl = app.ActiveModelReference.GetElementByID(985).AsLineElement(); BIM.Element myElem = app.ActiveModelReference.GetElementByID(897); BIM.Point3d[] p = lineEl.GetIntersectionPoints(myElem, app.Matrix3dIdentity());
如果是二维的,您试试mdlIntersect_allBetweenElms这个函数,否则,您可以试试CurveCurve里面的IntersectionsXY函数。
我提及的这个GetIntersectionPoints适用于求二维中两个线型元素的交点。对于三维,就是它们的表观交点,即按着RotationMatrix方向看过去的交点。但指的是线线交点。
其实三维中求线线交点的情况比较少见,大多是体体求交、体面求交、体线求交、面线求交。
如果你将Shape看做一个面的话,那就是要实现面线求交,可考虑多重方法:
1、将Shape转成一个Mesh,调用Mesh和线求交的现成方法;
2、将线和面都转成Solid,调用SolidUtil.RayTestFace 【该方法在MSCE-U9还是U10后才在C#中封装了,需要在项目中引用DgnDisplayNET库】
好的,我都测试一下。
多谢,我测试一下。