大家对读取cad中的等高线很感兴趣,那我就介绍一下怎么搞把!
这个程序使用arx写的,如果大家想调试,就要安装arx及其对应的vc版本。程序如下:
//
// ObjectARX defined commands
#include "StdAfx.h"
#include "StdArx.h"
// This is command 'READ'
void lenglengread()
{
// TODO: Implement the command
AcDbBlockTable *pBt=NULL;
acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBt,AcDb::kForRead);
if(!pBt)
return;
AcDbBlockTableRecord *pBtr=NULL;
pBt->getAt(ACDB_MODEL_SPACE,pBtr,AcDb::kForRead);
pBt->close();
if(!pBtr)
return;
AcDbBlockTableRecordIterator *pIt=NULL;
pBtr->newIterator(pIt);
pBtr->close();
if(!pIt)
return;
FILE * fp;
fp=fopen("c:\\arx.txt","w");
int ptN=0;
for(;!pIt->done();pIt->step())
{
AcDbEntity *pEntity;
pIt->getEntity(pEntity,AcDb::kForWrite);
char Name;
strcpy(Name,pEntity->isA()->name());
BOOL c1,c3,c4;
c1=strcmp(Name,"AcDbPolyline")==0;
c3=strcmp(pEntity->layer(),"cudenggaoxian")==0;
c4=strcmp(pEntity->layer(),"xidenggaoxian")==0;
if(c1&&(c3||c4))
{
AcDbPolyline *pLine=(AcDbPolyline *)pEntity;
AcGePoint3d point;
int numVerts=pLine->numVerts();
AcGePoint3dArray stretchPoints(numVerts,5);
pLine->getStretchPoints(stretchPoints);
for(int i=0;i<stretchPoints.length();i++)
{
point=stretchPoints;
fprintf(fp,"%14.3f%14.3f%14.3f \n",point,point,pLine->elevation());
}
}
pEntity->close();
}
fclose(fp);
AfxMessageBox("finisehd!");
/*ads_printf("hello , everyone !!\n");
ads_printf("if you have any problem , please mail to me .\n");
ads_printf("mail: lengxianlun@tom.com !!\n");*/
}
[ 本帖最后由 hanfengleng 于 2007-1-24 22:20 编辑 ] 具体调试方法是:在vc建立一个arx程序,然后增加一个命名,把上面的代码去覆盖你建立的命名,具体的文件应该是*command.cpp,然后调试就可以在cad中调用。
具体用法:
1、打开cad,记住arx的版本要与cad的版本对应,
2、输入arx,然后输入load,找到你编译的文件*.arx,
3、把你要提取的等高线的图层名字改成粗等高线或细等高线,
4、最后输入你创建的arx的名字,就可以得到cad图形等高线的坐标了。
文件保存在c:\\arx.txt
为了便于下载,我把命名在以附件的形式贴上。 up hanfengleng大侠一下:victory:;P! 好东东!:)
顶一个! d顶一下
我们是用Autolisp做的切剖面和读坐标程序,挺方便
现在的地形图中的等高线大都是用很多控制点的多义线定义的,所以在读取坐标之前最好重新定义多义线,减少控制点数量。我们一般用剖面法建模型,就不用重定义了
[ 本帖最后由 elite1218 于 2007-1-25 10:28 编辑 ] CAD 有很多二次开放的方法,还有一种是直接用ole来做,
利用cad的.atl模版做,效果一样,看自己的熟悉程度。 好东西,下载用一下!
顶,顶!!!!!!!!!!!!!!!!! 需要自己调试一下,并不是拿着就可以用的! 好东西,可惜使用的相关软件太多,本人还无力使用呀 能不能举个例子,具体操作一下。。。 。。 楼主,讲讲原理吧 牛x大侠,小弟佩服的紧啊,如滔滔江水,,,,,,,,, 谢谢!!!几下了 呵呵!!大有裨益啊 cad 转ansys有什么小程序 真是高手啊,可惜我还不会用VC的,只能望而兴叹了! 牛人呀。。。。。。。。。。。。。 heh呵呵,真实牛人
崇拜之情悠然而生呀
祝楼主,万事如意
以后继续发一些精华贴 搂主真是牛人一个,佩服! 为什么有些搞岩土的人在编程上这么强??好奇。 真是高手啊,可惜我还不会用VC的,只能望而兴叹了!