请教高手
<P>我是一个初学者</P><P>有一个问题想请教高手</P>
<P>在ARX中用什么方法求POLYLINE的两个顶点的连线同X轴的夹角?</P>
<P>希望能有个例子.</P>
<P>在这里先谢谢了</P> <P>void adeskfirst()<BR>{<BR> // TODO: Implement the command<BR> ads_name ent;<BR> ads_point pnt;<BR> int ret = acedEntSel("\nSelect A Entity:",ent,pnt);<BR> if(RTNORM == ret)<BR> {<BR> AcDbObjectId id;<BR> Acad::ErrorStatus es = acdbGetObjectId(id,ent);<BR> assert(Acad::eOk == es);<BR> AcDbEntity *pEnt;<BR> es = acdbOpenAcDbEntity(pEnt,id,AcDb::kForRead);<BR> if(Acad::eOk == es)<BR> {<BR> AcDbPolyline *pPl = AcDbPolyline::cast(pEnt);<BR> assert(pPl);<BR> AcGePoint3d startpnt,endpnt;<BR> pPl->getStartPoint(startpnt);<BR> pPl->getEndPoint(endpnt);<BR> pPl->close();<BR> AcGeVector3d vec = endpnt - startpnt;<BR> AcGeVector3d xAxis(1.0,0.0,0.0);<BR> double angle;<BR> angle = vec.angleTo(xAxis,AcGeVector3d(0,0,-1));<BR> angle = angle*180/3.1415926;<BR> } <BR> }</P>
<P>}</P>
<P>这只是对plinetype=2,而且pline只有一节的情况下适用!</P> <P> dPTS,dPtE是POLY的两个点,. 下面的代码是VBA的,<BR> '''''第一顶点と第二顶点の连结线とX轴の夹角<BR> dAngSE = ThisDrawing.Utility.AngleFromXAxis(dPTS, dPtE)<BR> '''''第二顶点と第一顶点の连结线とX轴の夹角<BR> dAngES = ThisDrawing.Utility.AngleFromXAxis(dPtE, dPTS)</P>
<P>上面两句话转换成ARX如下:</P>
<P> 传入的点值是不变的, 类型为:</P>
<P> AcArray<double> dPTS;<BR>AcArray<double> dPTE;</P>
<P> dAngSE = atan((dPTS.at(1)-dPTE.at(1))/(dPTS.at(0)-dPTE.at(0)));<BR> dAngES = atan((dPTE.at(1)-dPTS.at(1))/(dPTE.at(0)-dPTS.at(0)));</P>
<P>得到的角度是不同的, 不太明白是什么原因还请高手指点呀</P> <P>真的很感谢你提供的方法</P>
<P>但现在还存在一个问题<BR>我做的这个东东是要实现VBA的代码的功能<BR>但算的这个角度值,和VBA的有0.0 几的差别,</P>
<P>为什么会这样呢</P>
页:
[1]