找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1844|回复: 9

[求助]:修改后的实体怎么能立即更新 急 !!!

[复制链接]
发表于 2002-7-3 18:02:10 | 显示全部楼层 |阅读模式

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

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

×
我做了一个DockControlBar,在上面修改实体后,实体不立即更新,只有当鼠标离开DockControlBar后才更新.
        acDocManager->lockDocument(curDoc());
        acdbOpenAcDbEntity(pEntity,objId,AcDb::kForWrite);
        if(pEntity)
        {
                pEntity->setColorIndex(256);
                pEntity->close();
                pEntity=NULL;
                acedUpdateDisplay();
                acedRedraw(name,1);
        }
        acDocManager->unlockDocument(curDoc());

我用了acedUpdateDispaly()和acedRedraw()都没用,是否有其他函数,请给位帮忙
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2002-7-3 18:25:01 | 显示全部楼层
我上传了一个图片,我想实现在“特性”对话框中修改了实体后,实体能立即更新,但我现在是修改后只有当鼠标离开对话框后才更新,(我自己做了一个“特性”对话框)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2002-8-16 12:02:50 | 显示全部楼层
//此法有效
acDocManager->lockDocument(curDoc());
acdbOpenAcDbEntity(pEntity,objId,AcDb::kForWrite);
if(pEntity)
{
pEntity->upgradeOpen();///!!!!!!!!!!!!!!!!!!!!!!!
pEntity->setColorIndex(256);
pEntity->downgradeOpen();///!!!!!!!!!!!!!!!!!!!!!!!
pEntity->draw(); //更新实体
pEntity->close();
}
acDocManager->unlockDocument(curDoc());
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-8-17 17:30:11 | 显示全部楼层

Re: [求助]:修改后的实体怎么能立即更新 急 !!!

最初由 zhoufs_1205 发布
我做了一个DockControlBar,在上面修改实体后,实体不立即更新,只有当鼠标离开DockControlBar后才更新.


你就差那么一点就会找到答案。

准确的说法应该是当 [B]Acad编辑窗口 获得输入焦点[/B] 才更新
既然如此那么就让鼠标“进入” Acad编辑窗口吧。
...
acDocManager->lockDocument(curDoc());
acdbOpenAcDbEntity(pEntity,objId,AcDb::kForWrite);
if(pEntity)
{
pEntity->setColorIndex(256);
pEntity->close();
}
acDocManager->unlockDocument(curDoc());
//让Acad编辑窗口 获得输入焦点
[B]acedGetAcadDwgView()->SetFocus();[/B]
...

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-8-19 02:34:01 | 显示全部楼层
对实体用AcDbEntity::recordGraphicsModified方法,使用Adesk::kTrue参数,实体关闭后,将UPDATE。你使用的acedUpdateDisplay(); 仅仅是刷新屏幕,而实体不重新生成,对实体设置了上面的位后,实体关闭后,将重新生成。

void
recordGraphicsModified(

    Adesk::Boolean setModified = Adesk::kTrue);

setModified        Input Boolean value to indicate if the entity's graphics should be updated on screen when the object is closed

This method sets the entity's state to indicate whether or not the entity should be updated on screen when it is closed. If the entity is set not to update, then any changes made will appear the next time the entity is regenerated.
If setModified == Adesk::kFalse and the entity is currently set to update its graphics on close (which is its default state), then this function sets the entity so that it will not update on screen when it is closed and objectModified notification is sent to all entity type reactors attached to the entity. If setModified == Adesk::kFalse and the entity is already set not to update its graphics on close, then this function simply returns.

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

使用道具 举报

发表于 2004-12-22 18:12:22 | 显示全部楼层
那个线宽,和厚度是怎么改的,

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

使用道具 举报

发表于 2005-5-26 11:31:52 | 显示全部楼层
最初由 dubing 发布
[B]//此法有效
acDocManager->lockDocument(curDoc());
acdbOpenAcDbEntity(pEntity,objId,AcDb::kForWrite);
if(pEntity)
{
pEntity->upgradeOpen();///!!!!!!!!!!!!!!!!!!!!!!!
pEntity->setColorIndex(256);
pEntity->downgradeOpen();///!!!!!!!!!!!!!!!!!!!!!!!
pEntity->draw(); //更新实体
pEntity->close();
}
acDocManager->unlockDocument(curDoc()); [/B]


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

使用道具 举报

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

使用道具 举报

发表于 2005-5-26 21:18:49 | 显示全部楼层
/刷新显示
void refreshDisplay()
{
        actrTransactionManager->queueForGraphicsFlush();
        actrTransactionManager->flushGraphics();
        acedUpdateDisplay();
}
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 15:19 , Processed in 0.391940 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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