[求助]如何通过点击直线获得两端点的坐标
本帖最后由 作者 于 2007-3-17 12:23:02 编辑 <br /><br /> <p>有许多不相连的任意线段<br/>目标:通过点击每条线段,来得到每条线段两端点的坐标。最好能区分线段的StartPoint和EndPoint</p><p>如何实现这一目标?</p><p>我现在的代码如下():<br/>float xco1, yco1, xco2, yco2; //xco1,yco1是直线起点的x,y坐标;xco2,yco2是直线终点的x,y坐标<br/>int LineNumCount=0;<br/>ads_name entres;<br/>ads_point ptres;<br/>acedGetInt("Please input the line number:",&LineNumCount); //输入待选取的直线总数<br/>for(int i=0;i<LineNumCount;i++)<br/>{<br/> if(acedEntSel("\nPlease select a line:",entres,ptres)==RTNORM)<br/> {<br/> acutPrintf("\nPicking is OK!");</p><p> AcDbObjectId Id1;<br/> acdbGetObjectId(Id1, entres); //获得对象的ID<br/> acutPrintf("\nGetObjectId is OK!");</p><p> AcDbObject *pObj;<br/> acdbOpenAcDbObject(pObj, Id1, AcDb::kForRead, false); //根据ID打开对象,pObj指向对象的地址</p><p> isKindOf(AcDbLine::desc()); //这句语法对吗?要这么写吗?</p><p> //后面该怎么写??? <br/> }<br/> else<br/> {<br/> acutPrintf("\nPicking failed!");<br/> }<br/> }</p><p>写到isKindOf函数,后面就写不下去了。<br/>因为编译时编译器提示错误C2065: "isKindOf()" : 未声明的标识符。<br/>另外,我在objectARX2004的arxdoc.chm中搜索AcDbLine::desc(),没有搜到相关内容。</p><p>各位达人能否给一小段实现pick单根线段获得端点坐标的ARX代码让我借鉴一下<br/></p><p>我现在就卡在这里了,请大家帮个忙,不胜感激</p> <p> 我的ARX还不太会,觉的这句 <br/>isKindOf(AcDbLine::desc()); //这句语法对吗?要这么写吗?</p><p>应是<br/> isKindOf(AcDbLine::desc();); //这样写吧, </p><p>如果不对请不介意哦.我也是学习中....</p> 本帖最后由 作者 于 2007-3-15 12:40:40 编辑 <br /><br /> BDYCAD发表于2007-3-15 11:48:00static/image/common/back.gif 我的ARX还不太会,觉的这句 isKindOf(AcDbLine::desc()); //这句语法对吗?要这么写吗?应是 isKindOf(AcDbLine::desc();); //这样写吧, 如果不对请不介意哦.我也是学习中....<p>谢谢2楼的回复。不过</p><p>isKindOf(AcDbLine::desc();); //这句的写法显然是错的</p><p></p><p>我现在改成了这样:</p><p>pObj->isKindOf(AcDbLine::desc()); //判断pObj指向的对象是直线??</p><p>编译就通过了。但不知道这样写有什么意义,而且后面的代码仍然不会。</p><p>等待指点中...</p> <p>if(pObj->isKindOf(AcDbLine::desc()) == true)</p><p>{</p><p>AcDbLine *pLine = AcDbLine::cast(pObj);</p><p>AcGePoint3d ptStart = pLine->startPoint();</p><p>AcGePoint3d ptEnd = pLine->endPoint();</p><p>}</p> 老牛发表于2007-3-16 13:31:00static/image/common/back.gifif(pObj->isKindOf(AcDbLine::desc()) == true){AcDbLine *pLine = AcDbLine::cast(pObj);AcGePoint3d ptStart = pLine->startPoint();AcGePoint3d ptEnd = pLine->endPoint();}
<p>牛大哥太厉害了,我要的就是这三句!</p><p>尤其是括号里的第一句,没有你的指点我怎么都不会写。</p><p>非常谢谢你的帮助:)</p>
页:
[1]