请高手指点一二!
struct point <br>{double x,y,z;<br>
};<br>
int fk(point &ptMin, point &ptMax)<br>
{ AcApDocManager *acDocManager;<br>
AcApDocument* pDoc = acDocManager->curDocument();<br>
acDocManager->lockDocument(pDoc);<br>
ads_point pt1,pt2;<br>
acedGetPoint(NULL,"Ñ¡¶¨×°ÔØ·¶Î§: ", pt1 );<br>
if(acedGetCorner(pt1,NULL,pt2)==RTCAN) return 0;<br>
<br>
if(pt1<=pt2){ptMin.x=pt1;ptMax.x=pt2;}<br>
else{ptMin.x=pt2;pMax.x=pt1;}<br>
if(pt1<=pt2) {ptMin.y=pt1;ptMax.y=pt2;}<br>
else{ptMin.y=pt2;ptMax.y=pt1;}<br>
acutPrintf("Ñ¡¶¨ptMin, ptMax)%f %f
%f %f \n",ptMin.x,ptMin.y ,ptMax.x,ptMax.y );<br>
acDocManager->unlockDocument(pDoc);<br>
<br>
return 1;<br>
<br>
}<br>
<br>
void :inifk()<br>
{<br>
AcApDocManager *acDocManager;<br>
AcApDocument* pDoc = acDocManager->curDocument();<br>
acDocManager->lockDocument(pDoc);<br>
CString tmp,strtmp;<br>
strtmp+="zoom ";;<br>
tmp.Format("%-10.4lf",pMin.x);<br>
strtmp+=tmp;strtmp+=",";<br>
tmp.Format("%-10.4lf",pMin.y);<br>
strtmp+=tmp;<br>
tmp.Format("%-10.4lf",pMax.x);<br>
strtmp+=tmp;strtmp+=",";<br>
tmp.Format("%-10.4lf",pMax.y);<br>
strtmp+=tmp;strtmp+=" ";<br>
//AfxMessageBox(strtmp);<br>
acDocManager->sendStringToExecute(pDoc,strtmp,true,false,true);<br>
acDocManager->unlockDocument(pDoc);<br>
<br>
<br>
}<br>
inifk();//初始化绘图范围<br>
fk();//选择小部分绘图范围<br>
两个函数连续执行有点问题<br>
单个执行都没有问题。请高手指点一二!<br>
qq :514341794 e-mail: gxglhnnywzk@tom.com<br> <P>请教第一个问题:定义这个struct point有什么意义。</P>
<P>在ObjectARX中或者用ads_point,或者用AcGePoint3d类(gepnt3d.h )、AcGePoint2d类(gepnt2d.h),有现成的东东最好拿来用,因为其比较完善。</P>
<P>而且有现成的转换函数(geassign.h ):</P>
<P>double * asDblArray(const AcGePoint3d& pnt);</P>
<P>AcGePoint2d & asPnt2d(const double* pnt);</P>
<P>AcGePoint3d & asPnt3d(const double* pnt);</P>
<P>第二,函数 inifk()中变量pMin没有定义。<BR></P> <P>inifk();//初始化绘图范围<BR>fk();//选择小部分绘图范围</P>
<P>这两个函数的现实意义或你的设想?</P> 问题关键不在与 STRUCT POINT 关键在于acDocManager->sendStringToExecute(pDoc,strtmp,true,false,true);执行后,再执行FK(),结果是先执行FK(),不能够按原来的设计执行。<br>
请高手联编执行一下。<br>
inifk();目的就是先将当前绘图区设置好。fk() 当前绘图区选择部分区域。<br>
页:
[1]