找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1282|回复: 6

[求助]:请求斑竹帮忙:AcDbText不自动更新自己...

[复制链接]
发表于 2005-1-2 12:05:13 | 显示全部楼层 |阅读模式

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

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

×
问题:
    通常,当我们动态创建一个AcDbText并追加到当前数据库时,系统会自动根据它的两个对齐样式计算对齐点,并以一定的规则更新它的位置。然而,当此AcDbText追加到一个文档无关的后台数据库时,系统就不会自动更新它对齐点和位置,在CAD中打开那个后台数据库对应的文件,双击在其中创建的AcDbText,这时它就会自动回到正确的位置上。

代码:
//添加实体到数据库
AcDbObjectId PostToDB(AcDbEntity *pEnt,AcDbDatabase *pDb)
{
        AcDbBlockTable       *pBT;
        AcDbBlockTableRecord *pBTR;
        Acad::ErrorStatus     es;
        AcDbObjectId          Id;       

        if(pEnt==NULL)
                return Id;

        if(pDb==NULL)
                es=acdbCurDwg()->getBlockTable(pBT,AcDb::kForRead);
        else
                es=pDb->getBlockTable(pBT,AcDb::kForRead);
        if(es!=Acad::eOk)
                return Id;
        es=pBT->getAt(ACDB_MODEL_SPACE,pBTR,AcDb::kForWrite);       
        if(es!=Acad::eOk)
        {
                pBT->close();
                return Id;
        }

        es=pBTR->appendAcDbEntity(Id,pEnt);       
        if(es!=Acad::eOk)
        {
                pBTR->close();
                pBT->close();
                return Id;
        }
        pEnt->close();
        pBTR->close();
        pBT->close();       
        return Id;
}
//创建一个AcDbText并添加到指定的数据库
AcDbObjectId Text(AcGePoint2d BP,const char *str,double h,double width,double RTang,AcDb::TextHorzMode HMode,AcDb::TextVertMode VMode,AcDbDatabase *pDb)
{       
        AcDbText *pText=new AcDbText(AcGePoint3d(BP[0],BP[1],0),str,AcDbObjectId::kNull,h,RTang);
        pText->setVerticalMode(VMode);
        pText->setHorizontalMode(HMode);       
        pText->setAlignmentPoint(AcGePoint3d(BP[0],BP[1],0));
        pText->setWidthFactor(width);
        return PostToDB(pText,pDb);
}

实例调用:
AcDbDatabase *pDb=new AcDbDatabase(false,true);
pDb->readDwgFile("myfile.dwg");
Text(AcGePoint2d(100,100),"AcDbText",4.0,0.75,0.0,AcDb::kTextCenter,AcDb::kTextVertMid,pDb);
pDb->saveAs("myfile.dwg");
delete pDb;
...
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2008-8-5 10:47:23 | 显示全部楼层
把数据库设置为当前看看的
acdbHostApplicationServices()->setWorkingDatabase(pDb);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2008-8-10 16:56:37 | 显示全部楼层
actrTransactionManager->queueForGraphicsFlush();
        actrTransactionManager->flushGraphics();
        acedUpdateDisplay();

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-12 10:38 , Processed in 0.341985 second(s), 44 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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