- UID
- 9914
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-9-13
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
//
// ObjectARX defined commands, created by [三月/24/2003], ,
#include "StdAfx.h"
#include "StdArx.h"
#include "stdio.h"
//-----------------------------------------------------------------------------
// This is command 'XXL, by [三月/24/2003], ,
void fangchanxxlxxl()
{
#ifdef OARXWIZDEBUG
acutPrintf ("\nOARXWIZDEBUG - fangchanxxlxxl() called.");
#endif // OARXWIZDEBUG
// TODO: Implement the command
//选取对象
ads_name en1;
ads_point pt1;
if (ads_entsel("\n选择封闭线:\n",en1,pt1)!=RTNORM)
{
ads_printf("没有选择任何实体.\n");
return;
}
//打开要输出的文件
FILE *fp;
if ((fp=fopen("c:\\point.txt","w+"))==NULL)
{
ads_printf("cannot open txt-file");
return;
}
//转换
AcDbObjectId plineId1;
acdbGetObjectId(plineId1,en1);
//转换成AcDbPolyline对象并打开,并对过程中需要的变量进行定义
AcDbPolyline *pPline;
AcGeCircArc2d *arc;
AcGePoint2d pt2;
double bulge;
acdbOpenObject(pPline,plineId1,AcDb::kForRead);
//获取Pline的各个端点,并输出到文件中
for (int i = 0; pPline->numVerts()>i; i++)
{
pPline->getPointAt (i,pt2);
pPline->getBulgeAt(i,bulge);
//运行到if里面就会出错
if (bulge!=0)
{
pPline->getArcSegAt(i,*arc);
bulge=arc->radius();
}
ads_printf("%5d,%8.8f,%8.8f,%8.8f\n",i+1,pt2[X],pt2[Y],bulge);
fprintf(fp,"%5d,%8.8f,%8.8f,%8.8f\n",i+1,pt2[X],pt2[Y],bulge);
}
fclose(fp);
//获取Pline的面积,并输出到文件中
double area;
pPline->getArea(area);
if ((fp=fopen("c:\\Information.txt","w+"))==NULL)
{
ads_printf("cannot open txt-file");
return;
}
else
{
fprintf(fp,"面积为%0.8f\n",area);
}
fclose(fp);
//最后的一些处理
pPline->close();
}
VC编译通过,在CAD运行中出错 |
|