How to access and modify a DynamicBlockReference in ARX
发布时间
阅读量:
阅读量
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
-
前言
-
一、一级标题
-
- 二级标题
-
- 三级标题
-
- 四级标题
-
- 五级标题
-
- 六级标题
-
总结
前言
提示:这里可以添加本文要记录的大概内容:
例如:以下是官方博客例子浅析
先加入相关的头文件和库文件。
提示:以下是本篇文章正文内容,下面案例可供参考
一、一级标题
二级标题
三级标题
四级标题
五级标题
六级标题
示例:How to access and modify a DynamicBlockReference in ARX。
代码如下(示例):
//添加头文件和库CAD2010及其以上新增
//
// 08/14/2012
// By Philippe Leefsma
// How to access and modify a DynamicBlockReference property in ARX and .Net?
static void xlMyGroupTest98()
{
ads_name ename;
ads_point pt;
if (acedEntSel(L"\nSelect a dynamic block reference: ", ename, pt) != RTNORM)
{
acutPrintf(L"\nError selecting entity.");
return;
}
AcDbObjectId eId;
acdbGetObjectId(eId, ename);
AcDbEntity* pEnt = NULL;
if (acdbOpenObject(pEnt, eId, AcDb::kForRead) != Acad::eOk)
{
acutPrintf(L"\nError opening entity.");
if (pEnt)
pEnt->close();
return;
}
if (pEnt->isA() != AcDbBlockReference::desc())
{
acutPrintf(L"\nMust select a block insert.");
pEnt->close();
return;
}
AcDbBlockReference *pBlkRef = AcDbBlockReference::cast(pEnt);
// initialise a AcDbDynBlockReference from the object id of the blockreference
AcDbDynBlockReference* pDynBlkRef = new AcDbDynBlockReference(pBlkRef->objectId());
//Don't forget to close the blockreference here, otherwise you wont be able to modify properties
pEnt->close();
if (pDynBlkRef)
{
AcDbDynBlockReferencePropertyArray blkPropAry;
pDynBlkRef->getBlockProperties(blkPropAry);
Acad::ErrorStatus err;
AcDbDynBlockReferenceProperty blkProp;
for (long lIndex1 = 0L; lIndex1 < blkPropAry.length(); ++lIndex1)
{
blkProp = blkPropAry[lIndex1];
//look for the relevant property
if (wcscmp(blkProp.propertyName().kACharPtr(), L"Visibility") != 0) continue;
//Get allowed values for property
AcDbEvalVariantArray evalAry;
if ((err = blkProp.getAllowedValues(evalAry)) == Acad::eOk)
{
if (evalAry.length() >= 1)
{
AcDbEvalVariant eval = evalAry[1];
if (!blkProp.readOnly())
{
if ((err = blkProp.setValue(eval)) != Acad::eOk)
{
acutPrintf(L"\nError setting property value...");
}
}
}
}
}
//Don't forget to delete this reference, otherwise you will have problems.
delete pDynBlkRef;
}
}
代码解读
函数主体
//数据可以是后台数据库,但是一定是保存了的数据库,不能是临时数据库
代码解读
测试代码
//如果使用当前数据库,一定要保存文件否则会出错,
//当前数据库有自动保存操作,即使不操作,如果不保存,也会出错。
代码解读
总结
提示:下面对全文进行总结:
举个例子来说, 今天所讲解的内容即为这些函数与方法的主要内容, 并且进行了较为详细的阐述。
全部评论 (0)
还没有任何评论哟~
