- UID
- 19424
- 积分
- 2767
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-12-8
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
为了推动MS的发展 展现MS的强大功能 学习Ms的人越来越多
所以要体现Ms的功能就要进行MdL和VBA的开发 希望大家来多进行交流交流 本人想开个MDL的学习 ,但是本人才疏学浅 希望大家来指正
学习程序最简单的方法是看例子 修改例子 将v8例子下的basic例子
basic.mc 内容删除 将以下内容粘贴上 编译就行了
//程序用于MS V8
//用于搜索DGN中所有元素
#include <mdl.h>
#include <tcb.h>
#include <mselems.h>
#include <scanner.h>
#include <userfnc.h>
#include <cmdlist.h>
#include <string.h>
#include <math.h>
#include <dlogman.fdf>
#include <mssystem.fdf>
#include <mslinkge.fdf>
#include <msscan.fdf>
#include <msoutput.fdf>
#include <msparse.fdf>
#include <mselemen.fdf>
#include <msrsrc.fdf>
#include <mslocate.fdf>
#include <msstate.fdf>
#include <msscancrit.fdf>
#include <mscnv.fdf>
#include <msscan.fdf>
#include <msvec.fdf>
#include <mselmdsc.fdf>
#include <msmisc.fdf>
#include <msmbstr.fdf>
#include <msscell.fdf>
int ScanElem()
{
UInt32 elemAddr[50],eofPos,filePos;
int scanWords,status,i,numAddr;
ExtScanlist scanList;
MSElement el;
int num=0;
mdlScan_initScanlist(&scanList);
scanList.scantype =ELEMTYPE|ONEELEM|NESTCELL;
scanList.extendedType =FILEPOS;
mdlScan_noRangeCheck(&scanList);
//搜索所有类型的元素
scanList.typmask[0]= TMSK0_LINE|TMSK0_LINE_STRING|TMSK0_SHAPE|
TMSK0_CURVE|TMSK0_TEXT_NODE|TMSK0_CELL_HEADER|
TMSK0_CMPLX_STRING|TMSK0_CONIC|TMSK0_CMPLX_SHAPE|
TMSK0_ELLIPSE|TMSK0_ARC;
scanList.typmask[1] = TMSK1_TEXT;
scanList.typmask[2] = TMSK2_SHARED_CELL;
/* 用于设置搜索范围 没有使用
scanList.xlowlim = (Int64)rangeP->org.x;
scanList.ylowlim = (Int64)rangeP->org.y;
scanList.xhighlim = (Int64)rangeP->end.x;
scanList.yhighlim = (Int64)rangeP->end.y;
scanList.zlowlim = -1;
scanList.zhighlim = 1;
*/
eofPos = mdlElement_getFilePos(FILEPOS_EOF,NULL);
filePos =0L;
mdlScan_initialize(0,&scanList);
do {
scanWords=sizeof(elemAddr)/sizeof(short);
status =mdlScan_file(elemAddr,&scanWords,sizeof(elemAddr),&filePos);
numAddr =scanWords/sizeof(short);
for(i=0;i<numAddr;i++)
{
if(elemAddr>=eofPos) break;
mdlElement_read(&el,0,elemAddr);
printf("%d %d\n",num,el.ehdr.type);
num++;
}
} while(status==BUFF_FULL);
return num;
}
void main()
{
ScanElem();
mdlSystem_exit(0,1);
} |
|