找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 425|回复: 5

[求助]:MDL里如何正确修改单元里元素的层、色

[复制链接]
发表于 2004-4-15 15:44:26 | 显示全部楼层 |阅读模式

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

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

×
大虾快指点:
MDL里正确如何改变单元里元素的层、色?

急!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-4-18 21:03:12 | 显示全部楼层
因为单元内的元素可能是不同的层、色、线宽,因此需遍历修改。我是这么做的,不知是不是最笨的方法,仅供参考:
...
   if(mdlCell_getElmDscr(&elmDscrP,NULL,NULL,pntP,&cellscale,&RMatrix,NULL,
                         NULL,NULL,cellname)!=SUCCESS)  //获得单元头
      return;     

   mdlElmdscr_operation(elmDscrP,modelm,NULL,ELMD_ALL_ONCE);  //对单元元素遍历操作
...

Private int  modelm
  (
  MSElement         *elP,
  void        *params,
  int         operation,
  ULong       offset,
  MSElementDescr       *elemDscrP
)
{
...
elP->ehdr.level=level;   
elP->hdr.dhdr.symb.b.color=color;
elP->hdr.dhdr.symb.b.weight=weight;

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

使用道具 举报

发表于 2004-4-18 22:45:59 | 显示全部楼层
不建议直接访问元素结构,用mdlElement_setSymbology或mdlElmdscr_setSymbology 代替
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-4-19 08:10:13 | 显示全部楼层
上面的两种方法我都试过,单元内要素的层是改掉了,
在 J版里,
单元的层位图还没有变,在MICROSTAION的层控制器里还是跟着 层位图 走,
大虾,快想想办法啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2004-4-19 14:05:41 | 显示全部楼层
mdlModify_elementSingle(0,ulElmFilePos,MODIFY_REQUEST_HEADERS,MODIFY_ORIG,sdNewCell,inp, 0);

int sdNewCell(MSElement *el, Dpoint3d *params, int fileNum, MSElementDescr *elmDP,MSElementDescr **newElmDP)
{
        int eljust;
        eljust= g_Feature[g_mslink].flevel;
        if (mdlElement_getType(el)!=CELL_HEADER_ELM)
        {
                mdlElement_setProperties(el,&eljust, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
                return MODIFY_STATUS_REPLACE;
        }
        return MODIFY_STATUS_NOCHANGE;
}

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 01:33 , Processed in 0.215915 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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