|
发表于 2008-10-18 20:23:00
|
显示全部楼层
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 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(""),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 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
此主题相关图片如下:
此主题相关图片如下:
|
|