- UID
- 392623
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2006-2-12
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
我做了一个箭头程序没有什么问题,可是一打开对象捕捉中的中点捕捉后箭头就没了,请各位帮忙看一下:
ads_point start,end;
ads_point linestart,lineend;
acedCommand(RTSTR,"-OSNAP",RTSTR,"midpoint",0);
acedCommand(RTSTR,"-OSNAP",RTSTR,"qua",0);
acedGetPoint(NULL,"请点取起点:",linestart);
acedGetPoint(NULL,"请点取终点:",lineend);
ads_real k,d = 30;
ads_real eps = 0.000001;
ads_point_set(lineend,start);
if(fabs(lineend[X] - linestart[X]) < eps) { // 铅垂线
end[X] = lineend[X];
if(linestart[Y] > lineend[Y]) end[Y] = lineend[Y] + d;
else end[Y] = lineend[Y] - d;
}
else if(fabs(lineend[Y] - linestart[Y]) < eps) { //水平线
end[Y] = lineend[Y];
if(linestart[X] > lineend[X]) end[X] = lineend[X] + d;
else end[X] = lineend[X] - d;
}
else {
k = (lineend[Y] - linestart[Y]) / (lineend[X] - linestart[X]); //直线的斜率
ads_real x0,y0,x1,y1;
ads_real a,b,c;
x0 = linestart[X]; y0 = linestart[Y];
x1 = lineend[X]; y1 = lineend[Y];
a = 1 + k * k;
b = - 2 * x1 - 2 * k * k * x0 + 2 * k * (y0 - y1);
c = x1 * x1 + k * k * x0 * x0 - 2 * k * (y0 - y1) * x0 + (y0 - y1) * (y0 - y1) - d * d;
end[X] = (-b + sqrt(b * b - 4 * a * c))/ 2 / a;
if((linestart[X] - end[X]) * (lineend[X] -end[X]) > 0)
end[X] = (-b - sqrt(b * b - 4 * a * c))/ 2 / a;
end[Y] = k * (end[X] - x0) + y0;
}
acedCommand(RTSTR,"LINE",RTPOINT,linestart,RTPOINT,lineend,RTSTR,"",0);
acedCommand(RTSTR,"PLINE",0);
acedCommand(RTPOINT,start,0);
acedCommand(RTSTR,"W",0);
acedCommand(RTREAL,0.0,0);
acedCommand(RTREAL,10.0,0);
acedCommand(RTPOINT,end,0);
acedCommand(RTSTR,"",0); |
|