马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 1121443108qaz 于 2018-9-19 23:40 编辑
昨天的帖子我没法直接让cad在加载arx文件时,自动对每一个打开或新建的dwg加反应器,后来直接用命令的方法发现反应器是生效的,可是仅限读的操作。每次我手动输入test命令加反应器,之后画线结果显示upgrade操作是eok,setcolorindex也是eok,可是颜色就是没变,我试了re,保存后再进,用lisp看那个物体的颜色,总之都没变,是默认的颜色。代码如下,哪里出了问题。ps:最后发现画多段线,圆,弧,样条曲线都会变红,是正确的效果,只在对直线时失效,不知为何。
- #pragma once
- #include "C:\objectarx\inc\dbmain.h"
- class CDbReatorUtil :
- public AcDbDatabaseReactor
- {
- public:
- CDbReatorUtil();
- virtual ~CDbReatorUtil();
- virtual void objectAppended(const AcDbDatabase* dwg, const AcDbObject* dbObj);
- //virtual void objectErased(const AcDbDatabase* dwg, const AcDbObject* dbObj, Adesk::Boolean bErased);
- };
- CDbReatorUtil::CDbReatorUtil()
- {
- }
- CDbReatorUtil::~CDbReatorUtil()
- {
- }
- void CDbReatorUtil::objectAppended(const AcDbDatabase* dwg, const AcDbObject* dbObj)
- {
- ErrorStatus es;
- if (dbObj->isKindOf(AcDbLine::desc()))
- {
- AcDbLine* pLine = AcDbLine::cast(dbObj);
- es=pLine->upgradeOpen();
- acutPrintf(L"\n es in upgrade is %s", acadErrorStatusText(es));
- es=pLine->setColorIndex(1);
- acutPrintf(L"\n es in setcolorindex is %s", acadErrorStatusText(es));
- acutPrintf(L"\n 这是一条直线");
- }
- }
- CDbReatorUtil *pDbreator = NULL;
- static void xxxMyGrouptest()
- {
- if (pDbreator==NULL)
- {
- pDbreator = new CDbReatorUtil();
- Acad::ErrorStatus es=acdbHostApplicationServices()->workingDatabase()->addReactor(pDbreator);
- if (es!=Acad::eOk)
- {
- acutPrintf(L"\nes is %s", acadErrorStatusText(es));
- }
- }
- else
- {
- acutPrintf(L"\npDbreator不为NULL");
- }
- }
|