找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 779|回复: 8

[求助]:几个mdl的问题 请大侠指点

[复制链接]
发表于 2004-10-12 20:13:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
1 我们可以使用fence 选中一个区域 然后输入命令ff=文件名
  就可以将选中的图挖出另存 在mdl有这种函数吗 或者大家
  有什么更好的办法  我要用程序实现 不想使用ms的这个命令
   因为不好控制
2  我想使用mdl直接打印读出的元素坐标文件 请问有这种命令吗
    如果没有 我在转dwg文件时  发现v8可以直接打开excel
    我们可以用execl打开我生产的坐标文件吗
3  能否有什么办法得到2个shape交叉所重叠部分的范围坐标
4  使用打开文件列表对话框是怎么选择打开目录的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-10-13 08:12:39 | 显示全部楼层
1、用mdlState_startFenceCommand,Fence中的每个元素都将逐一被传递给函数contentOp,可以在contentOp中将这些元素逐一写入另一文件。
2、你的“坐标文件”是什么格式的?
3、用mdlElmdscr_intersectShapes可以求得2个shape交叉部分,再进一步提取其坐标即可。
4、用自定义的对话资源来调用mdlDialog_fileOpen函数即可。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-13 09:07:25 | 显示全部楼层
4.可以用函数mdlFileList_edit (&g_astInfo, NULL, FILELISTATTR_DIRECTORIES, "路径选择", "", "*.*", g_lastInfo.lastDirectory);
其中第三个参数有多个选择,如果是FILELISTATTR_DIRECTORIES | FILELISTATTR_MULTIPLE就可以选择多个目录了,返回的结果在第二个参数中。
不加FILELISTATTR_MULTIPLE返回的结果可以在lastInfo.lastDirectory直接得到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-13 09:20:57 | 显示全部楼层
还是你的这个方法简单!
--------------------------
如何取消对话框中的第一个无标题的空文本输入条目(见附图红线所框部分)?现在它总是空的,显得不完美。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-13 09:21:30 | 显示全部楼层
1. 我读出fence中元素以后怎么写入到文件中 写入的不是dgn文件呀
    而且原文件中的各种设置都丢失了把 我就想问问 ff=  在ms里是如何实现的
   还有我可以将文件先另存 这个函数是什么
2  我还想问我选择文件 如果文件不存在就新建一个 我使用mdlDialog_fileOpen 不能新建文件
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 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);

}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-13 09:47:26 | 显示全部楼层
guanfahai : 附图是用我的方法生成的选路径对话框,还是比较完美的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-13 10:24:22 | 显示全部楼层
MicroStation迷:无标题的空文本输入条目是让你直接输入目录用的,也就是可填可选吧。

另:我想将'comfly'的程序做一点改动,

while((pos=mdlElmdscr_read(&edP,pos,0,FALSE,NULL)) != 0L)
{

//以下是将范围内的元素写入文件
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_copy = (edP,MASTERFILE,modelRef,NULL);

}

mdlElmdscr_freeAll(&edP);
}

修改后有一个缺陷:只有元素用到的设置才会被写到目标文件。它的设置是当前文件的一个子集。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-13 10:41:46 | 显示全部楼层
喔,原来如此,很好!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-9 23:09 , Processed in 0.348394 second(s), 46 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表