明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1481|回复: 3

请高手指点一二!

[复制链接]
发表于 2005-8-22 21:23:00 | 显示全部楼层 |阅读模式
struct point
{double x,y,z;
};
int fk(point &ptMin, point &ptMax)
{    AcApDocManager *acDocManager;
    AcApDocument* pDoc = acDocManager->curDocument();
    acDocManager->lockDocument(pDoc);
    ads_point pt1,pt2;
    acedGetPoint(NULL,"Ñ¡¶¨×°ÔØ·¶Î§: ", pt1 );
    if(acedGetCorner(pt1,NULL,pt2)==RTCAN) return 0;

    if(pt1[X]<=pt2[X]){ptMin.x=pt1[X];ptMax.x=pt2[X];}
    else{ptMin.x=pt2[X];pMax.x=pt1[X];}
    if(pt1[Y]<=pt2[Y]) {ptMin.y=pt1[Y];ptMax.y=pt2[Y];}
    else{ptMin.y=pt2[Y];ptMax.y=pt1[Y];}
    acutPrintf("Ñ¡¶¨ptMin, ptMax)%f  %f   %f  %f  \n",ptMin.x,ptMin.y ,ptMax.x,ptMax.y );
    acDocManager->unlockDocument(pDoc);

    return 1;

}

void :inifk()
{
    AcApDocManager *acDocManager;
    AcApDocument* pDoc = acDocManager->curDocument();
    acDocManager->lockDocument(pDoc);
    CString tmp,strtmp;
    strtmp+="zoom ";;
    tmp.Format("%-10.4lf",pMin.x);
    strtmp+=tmp;strtmp+=",";
    tmp.Format("%-10.4lf",pMin.y);
    strtmp+=tmp;
    tmp.Format("%-10.4lf",pMax.x);
    strtmp+=tmp;strtmp+=",";
    tmp.Format("%-10.4lf",pMax.y);
    strtmp+=tmp;strtmp+=" ";
//AfxMessageBox(strtmp);
    acDocManager->sendStringToExecute(pDoc,strtmp,true,false,true);
    acDocManager->unlockDocument(pDoc);


}
inifk();//初始化绘图范围
fk();//选择小部分绘图范围
两个函数连续执行有点问题
单个执行都没有问题。请高手指点一二!
qq :514341794 e-mail: gxglhnnywzk@tom.com
发表于 2005-8-22 23:33:00 | 显示全部楼层

请教第一个问题:定义这个struct point有什么意义。

在ObjectARX中或者用ads_point,或者用AcGePoint3d类(gepnt3d.h )、AcGePoint2d类(gepnt2d.h),有现成的东东最好拿来用,因为其比较完善。

而且有现成的转换函数(geassign.h ):

double * asDblArray(const AcGePoint3d& pnt);

AcGePoint2d & asPnt2d(const double* pnt);

AcGePoint3d & asPnt3d(const double* pnt);

第二,函数 inifk()中变量pMin没有定义。

发表于 2005-8-22 23:48:00 | 显示全部楼层

inifk();//初始化绘图范围
fk();//选择小部分绘图范围

这两个函数的现实意义或你的设想?

 楼主| 发表于 2005-8-23 08:02:00 | 显示全部楼层
问题关键不在与 STRUCT POINT 关键在于acDocManager->sendStringToExecute(pDoc,strtmp,true,false,true);执行后,再执行FK(),结果是先执行FK(),不能够按原来的设计执行。
请高手联编执行一下。
inifk();目的就是先将当前绘图区设置好。fk()  当前绘图区选择部分区域。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 06:43 , Processed in 0.148855 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表