{
AcDbAttribute* pAtt = new AcDbAttribute(); pAtt->setPropertiesFrom(pAttDef); pAtt->setInvisible( pAttDef->isInvisible() );
pAtt->setHorizontalMode(pAttDef->horizontalMode()); pAtt->setVerticalMode(pAttDef->verticalMode()); AcGePoint3d basePt = pAttDef->position(); basePt[0]+=pt[0]; basePt[1]+=pt[1]; basePt[2]+=pt[2]; pAtt->setPosition(basePt);
basePt = pAttDef->alignmentPoint(); basePt[0]+=pt[0]; basePt[1]+=pt[1]; basePt[2]+=pt[2];
pAtt->setAlignmentPoint(basePt); pAtt->setHeight(pAttDef->height()); pAtt->setTextStyle(pAttDef->textStyle()); pAtt->setTag(pAttDef->tag());
pAtt->setTextString(ArrayAtt.GetAt(i++)); pAtt->setFieldLength(25);
AcDbObjectId attId;
pBlkRef->appendAttribute(attId,pAtt); pAtt->close(); pEnt->close(); } }
delete pIterator;
}//end if pBlkDefRecord->hasAttributeDefinitions pBlkDefRecord->close(); pBlockTableRecord->close();
pBlkRef->close();
objectARX常用代码2收藏
新一篇: Windows下动态内存分配方式 | 旧一篇: CString 操作指南 设置当前的layer和textstyle
// Function name : SetCurTextStyle // Description : 设置当前TextStyle // Return type : Acad::ErrorStatus // Argument : const char* lpStyleName
// Argument : AcDbDatabase* pDb/* = NULL */
Acad::ErrorStatus SetCurTextStyle( const char * lpStyleName, AcDbDatabase * pDb /* = NULL */ )
{
AcDbDatabase * pCurDb = pDb; if (pCurDb == NULL)
pCurDb = acdbHostApplicationServices() -> workingDatabase();
AcDbTextStyleTableRecordPointer spRecord(lpStyleName, pCurDb, AcDb::kForRead);
Acad::ErrorStatus es = spRecord.openStatus(); if (es == Acad::eOk) {
es = pCurDb -> setTextstyle(spRecord -> objectId()); }
return es; }
// Function name : SetCurLayer // Description : 设置当前层
// Return type : Acad::ErrorStatus // Argument : const char* lpLayerName
// Argument : AcDbDatabase* pDb/* = NULL */
Acad::ErrorStatus SetCurLayer( const char * lpLayerName, AcDbDatabase * pDb /* = NULL */ )
{
AcDbDatabase * pCurDb = pDb; if (pCurDb == NULL)
pCurDb = acdbHostApplicationServices() -> workingDatabase();
AcDbLayerTableRecordPointer spRecord(lpLayerName, pCurDb, AcDb::kForRead);
Acad::ErrorStatus es = spRecord.openStatus(); if (es == Acad::eOk) {
es = pCurDb -> setClayer(spRecord -> objectId()); }
return es; }
//功能描述:选择指定图层上的所有实体!
// ************************************************************************
// 函数名称:selectEntityInLayer // 函数类型:Acad::ErrorStatus // 返回值: 正常:Acad::eOk
// 功能描述:选择指定图层上的所有实体! // 函数作者:Darcy // 创建日期:200X-XX-XX // 参数列表:
// 变量名:nLayerName 变量类型:const char* 变量说明:(输入)图层名
// 变量名:nIDs 变量类型:AcDbObjectIdArray& 变量说明:(输出)图层中实体的对象标识符集合
// ************************************************************************
Acad::ErrorStatus selectEntityInLayer( const char * nLayerName,AcDbObjectIdArray & nIDs)
{
Acad::ErrorStatus es = Acad::eOk;
ads_name ents; struct resbuf * rb;
rb = acutNewRb(AcDb::kDxfLayerName); rb -> restype = 8 ;
rb -> resval.rstring = ( char * )nLayerName; rb -> rbnext = NULL;
acedSSGet( \ long entNums = 0 ;
acedSSLength(ents, & entNums); if (entNums == 0 ) es = Acad::eInvalidInput; else