找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1052|回复: 9

[求助]:填充图案和边界关联的实现!

[复制链接]
发表于 2006-5-22 10:28:29 | 显示全部楼层 |阅读模式

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

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

×
请问谁实现了AutoCAD中填充图案和边界关联的!?讲讲思路!谢谢了!我的思路!
1.添加AcDbDataBaseRector,当有实体改变时查询看看是不是边界!
2.若是就通知改变!
不知道可不可以!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-5-22 10:47:59 | 显示全部楼层
思路的方向是对的,但不恰当,
给边界实体附加一个永久的实体反应器,当边界实体有任何改变,让反应器自动去响应并作出调整。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 14:40:40 | 显示全部楼层
是的,autoCAD就是这么实现的,不过的它的永久反应器是填充图案!该在什么地方相应和如何相应!谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-22 15:02:30 | 显示全部楼层
A:边界实体
B:永久反应器
C:填充实体(是否可以把填充图案也作为一种实体?我是这样认为的,它也是一种实体)
先建立A,然后建立C,在这个建立C的过程中,C会对A进行分析,从表面看C和A存在一定的关系,但是不然,当A变化后,C不会再去分析A以自己作出调整去适应A。
所以就在A与C之间架一座桥梁,这座桥梁就在幕后监视A的任何改动,当发现A有变化,B就对A进行分析(而不是C对A进行分析),B分析完后就主动将C进行调整以适应A的变化。
关键的就是在A上附加一个永久反应器实体B。
更具体的你就自己再研究一下,按这个思路去试试,不花工夫可是不行的哦。
参考代码:
pReactor=new WJRedPtReactor;
  //设置驱动实体
  pReactor->setDriverStyle(DriveStyle);
  pReactor->setSecondDriverEntityID(InsID);
  pReactor->setModifyEntityID(ModifyID);
  pReactor->setPtOsMode(PtMode);
  pReactor->setDriverPtNo(PtNo);
  pReactor->setModifyPtNo(ModifyPtNo);  
  pReactor->setRecInDicNo(i);
  pReactor->setIsReactor(1);
  //给驱动实体加入反应器实体   
  keyStr.Format("%d",i);
  pDict->setAt(keyStr,pReactor,nID);
  pReactor->close();
  acdbOpenAcDbEntity(pEnt,DriverID,AcDb::kForWrite);
  pEnt->addPersistentReactor(nID);
  pEnt->close();
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 15:27:17 | 显示全部楼层
我知道这个思路,而且研究了很长时间了,我看AutoCAD中实现没有第二个实体做反应器,反应器就是填充图案!可否流个QQ联系?我的271276700
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-22 16:16:20 | 显示全部楼层
我也研究了很长很长的时间,在实体内部做反应器我也尝试过,觉得不妥,我把他理解为一种胶水,将任何需要相关的实体联系起来。我几乎每天都上网的。目前根本没大量的时间上QQ,
我也从不玩QQ这东西。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-22 20:47:28 | 显示全部楼层
我一直想在实体内部实现,一直实现不了,估计是AutoCAD的机制问题,如果是ADN的话,可以咨询一下AutoDesk,如果是机制不允许,就不浪费时间了,我觉得实体在打开后会锁定文档或者什么其他的,不允许其他实体操作,具体的例子就是我在实体内部以Write的方式打开实体,返回值是成功的,但是isWriteEnabled返回的值确是kFalse,其他的值都是kFalse!我的理解是实体是一个过程,儿这个过程是独占的,别的过程不能与之相交,换句话说就是不允许相交!要不也就不需要永久反应器这个东西了,不知道你是怎么看的,问一句OPM你用的怎么样?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-22 22:45:24 | 显示全部楼层
对我的软件来说,我根本有不着这个东西,所以也没研究,另外说一下,在我的图纸中光反应器的数量就将达到几百个。上面你说得对,当一个实体被修改后,实体内部的反应可以去响应这个修改,但是无法在反应器中对实体再进行修改,这样将会引起无限循环。AutoDesk的做法是对的。而外部反应器是当实体被修改结束后去修改与其相关的实体。而且建立反应器必须是一个主驱动实体一个被驱动实体,不能两个互相驱动,这样也会产生死循环的。另外我也想问你是否使用过这个函数:acedSSSetFrist()
QQ号搞到了673798517
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-25 16:29:43 | 显示全部楼层
//最后把边界实体和HATCH用永久反映器联系起来setAssociative
    AcDbEntity *pEnt;
    int numObjs = dbObjIds.length();
    Acad::ErrorStatus es;
    for ( i = 0; i < numObjs; i++)
        {
        es = acdbOpenAcDbEntity(pEnt, dbObjIds, AcDb::kForWrite);
        if (es == Acad::eOk)
                {
            pEnt->addPersistentReactor(hatchId);
            pEnt->close();
        }
    }
可以么?
那个是不是只对"SOLID"有用啊?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-5-25 18:01:17 | 显示全部楼层
哪里有这样简单啊,而且pEnt->addPersistentReactor(hatchId);
中的ID不是hatchId而是永久反应器的Id.,你还的好好研究以下反应器才行
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-23 12:29 , Processed in 0.314232 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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