2008.10.18更新 http://www.mxdraw.com/viewthread.php?tid=32&extra=page%3D1 1、增加读取属性块中属性功能 调用代码如下: AcDbObjectIterator* pAttribIter = spBlkRef->attributeIterator(); if(pAttribIter != NULL) { acutPrintf(_T("\n 块的属性值为:")); for(;!pAttribIter->done();pAttribIter->step() ) { // 打开块属性对象. AcDbObjectPointer<AcDbAttribute> spAttribute(pAttribIter->objectId(),AcDb::kForRead); acutPrintf(_T("\n %s"),spAttribute->textStringEx()); } acutPrintf(_T("\n")); // 删除块属性递代器指针. delete pAttribIter; } else { acutPrintf(_T("\n 选择的不块不带属性")); } 2、增加实体名柄类AcDbHandle,并可以把实体名柄与实体ID互相转换。 3、增加闪烁实体功能和停闪烁接口 调用代码如下: // 闪烁实体. static bool TwinkeEnt(AcDbObjectId id); // 停闪东实体 static bool StopTwinkeEnt(AcDbObjectId id); // 停闪止所有实体 static bool StopAllTwinkeEnt(MXDRAWOCXHANDLE hOcx); 4、增加构建选择集函数acedSSGet,acedSSLength,acedSSFree,acedSSName,现在支持带过滤的X选方式。 struct resbuf* filter = acutBuildList(8,layer,RTDXF0, _T("LWPOLYLINE"),-4,_T("<OR"),62,0, 62,1,62,256,-4,_T("OR>"),0); acutPrintf(_T("\n 选择实体:")); ads_name ss; int rc = acedSSGet(_T("X"), NULL, NULL,filter,ss);
acutRelRb(filter); if(rc != RTNORM) { AfxMessageBox(_T("没有发现满足要求的实体")); return; } long len = 0; acedSSLength(ss,&len); CString sT; sT.Format(_T("发现%d个实体"),len); AfxMessageBox(sT); 5.增加图层的操作,关闭打开图层,可以参照samples\Edit.sln例程. 6.读取实体的扩展记录,和读取ReadNamedObjectsDictionary功能。 // 把字典中所有的数据都输出 AcDbDatabase *pDb = acdbHostApplicationServices()->workingDatabase(); AcDbObjectPointer<AcDbDictionary> spDict(pDb->namedObjectsDictionaryId(),AcDb::kForRead); if(spDict.openStatus() == Acad::eOk) {  rintDictionary(spDict.object() ); } 7.增加控件配制文件,在配制文件中可以指控件的背景色,是否显示工具条,是否显示命令窗口,字体文件搜索路径等。配制文件格式如下: // 控件的背景色 R G B ("ViewBlkColor" (0 0 0)) // 是否显示命令行窗口 ("ShowCommandWindow" "Y") // 是否显示工具条 ("ShowToolBar" "Y") // 打开dwg文件时,是否读取扩展数据 ("ReadDwgExData" "Y") // 打开dwg文件时,是否读取扩展记录 ("ReadDwgExRecord" "Y") // 是否支持实体名柄操作 ("IsSupportEntHandle" "Y") // shx文件目录 ("ShxDir" "Shx") 8.增加对自定义实体的显示AcDbProxyEntity; 9.增加对属性定义文件的显示AcDbAttributeDefinition
|