![]() |
【转帖】【新手求助3】实体相交问题
【新手求助3】实体相交问题
www.dimcax.com 【新手求助3】实体相交问题 得到大家的帮助,我学习了面向对象的一些东西。明白了一些,上次的intersectwith()中public point3d[ ] intersectwith(planarentity plane);返回值类型应该是point3d类的,point3d pint=linear.intersectwith(plane);其中linear为linearentity3d类型的,plane为planarentity 类型的。应该是这样吧? 现在我想要求两个实体(直线和平面)的交点。首先先在auto cad中选择两个实体,然后求交,返回值。使用intersectwith()方法,我找不到实体类相交的方法,intersectwith()方法中均为几何类相交。 代码如下: public class intersectwith { [commandmethod("intersect")] public point3d[ ] intersect() { editor edr= tools.editor; promptentityresult resentr=edr.getentity("\nselect an region: "); region region = (region)tools.getentity(resentr.objectid); editor edl = tools.editor; promptentityresult resentl = edl.getentity("\nselect an line: "); line line = (line)tools.getentity(resentl.objectid); point3d[ ] ptr = line.intersectwith(region); return ptr; } } 其中编译出错,我的分析: 由于我选的是两个实体,但line.intersectwith(region)是几何类相交,所以出错。但几何类与实体类不能相互转换,而且intersectwith()方法中均为几何类相交。 如何求实体的相交,希望得到大家的帮助。 想求直线和面域的交点? 对。 实体类是有intersectwith的,下面是定义的原型: public void intersectwith( entity entitypointer, autodesk.autocad.databaseservices.intersect intersecttype, plane projectionplane, point3dcollection points, int thisgraphicsystemmarker, int othergraphicsystemmarker ); c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。 还是有问题,我依照上面改了一下:代码如下: [commandmethod("intersect")] public point3dcollection intersect( ) { editor edr= tools.editor; promptentityresult resentr=edr.getentity("\nselect an region: "); region region = (region)tools.getentity(resentr.objectid); editor edl = tools.editor; promptentityresult resentl = edl.getentity("\nselect an line: "); line line = (line)tools.getentity(resentl.objectid); point3dcollection ptr=new point3dcollection(); tools.getentity(resentr.objectid).intersectwith(tools.getentity(resentl.objectid), intersect.onbothoperands, ptr, 0, 0); return ptr; } 编译通过了,也生成了.dll文件。但是我在auto cad中输入命令intersect怎么没有反应?即不出现select an region和select an line,希望大家帮忙。 补充一下,我是在auto cad中打开了一张.dwg的图后,已经加载了.dll文件。 原帖由 liming0311 于 补充一下,我是在auto cad中打开了一张.dwg的图后,已经加载了.dll文件。 请注意[commandmethod]修饰的函数,必须是public void类型的,即不能有返回值。 c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。 |
所有的时间均为北京时间。 现在的时间是 09:15 PM. |