几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » ObjectARX(VB.NET/C#)
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-04-20, 05:28 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】【新手求助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++的强大功能。
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 09:24 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多