- UID
- 41823
- 积分
- 0
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2003-4-10
- 最后登录
- 1970-1-1
|
发表于 2004-10-13 09:38:52
|
显示全部楼层
为感谢gp341以前对我的帮助,贴我的一段代码供参考。(v8版的)
/*----------------------------
writefile
-------------------------------*/
Private void writeFile(char *fname)
{
StatusInt status;
DgnModelRefP modelRef;
char fileName[512];
MSWChar wModelName[512];
ULong filePos;
boolean isThreeD;
ULong pos=0L;
MSElementDescr *edP; //,*elmDP;
DgnModelRefP pModelRef;
int pFormat=DGNFILE_FORMAT_V8;
BoolInt threeD=FALSE;
workPos=-1L;
modelRef = INVALID_MODELREF;
status = mdlWorkDgn_createFile (&modelRef, fname, DGNFILE_FORMAT_V8, ACTIVEMODEL, SEED_CopyDefaultData, NULL, NULL, FALSE);
while((pos=mdlElmdscr_read(&edP,pos,0,FALSE,NULL)) != 0L)
{
if((edP->el.ehdr.type==DGNFIL_HEADER_ELM)|| //以下几行使生成的图纸具有与本图相同的设置。
(edP->el.ehdr.type==DIG_SETDATA_ELM)||
(edP->el.ehdr.type==LEV_SYM_ELM)||
(edP->el.ehdr.type==MICROSTATION_ELM)||
(edP->el.ehdr.type==TABLE_ELM)||
(edP->el.ehdr.type==ATTRIBUTE_ELM)
)
{
workPos=mdlWorkDgn_write(edP,-1,modelRef);
}
//以下是将范围内的元素写入文件
viewRElemx[0] =edP->el.hdr.dhdr.range.xlowlim;
viewRElemy[0] =edP->el.hdr.dhdr.range.ylowlim;
viewRElemx[1] =edP->el.hdr.dhdr.range.xhighlim;
viewRElemy[1] =edP->el.hdr.dhdr.range.yhighlim;
if( viewRElemx[0] >( viewRCellx[0] - 1 )&&
viewRElemy[0] >( viewRCelly[0] - 1 )&&
viewRElemx[1] <( viewRCellx[1] + 1 )&&
viewRElemy[1] <( viewRCelly[1] + 1 ))
{
workPos=mdlWorkDgn_write(edP,-1,modelRef);
}
mdlElmdscr_freeAll(&edP);
}
mdlWorkDgn_saveChanges(modelRef);
mdlWorkDgn_closeFile(modelRef);
} |
|