插入块改变比例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

CString blockname;

m_listctrl.GetLBText(m_listctrl.GetCurSel(),blockname);

//blockname = "CHART-20";

//寻找是否已经定义

AcDbDatabase *pCurDb = acdbHostApplicationServices()->workingDatabase(); AcDbBlockTable *pBlkTable;

AcDbObjectId blockId ;

pCurDb->getBlockTable(pBlkTable, AcDb::kForRead);

if(!pBlkTable->has(blockname))

{

pBlkTable->close();

AcDbDatabase *pDwg =new AcDbDatabase (Adesk::kFalse) ;

char dir[MAX_PATH];

GetModuleFileName(NULL,dir,MAX_PATH);

dir[CString(dir).ReverseFind('\')]='\0';

//AfxMessageBox(CString(dir)+"\\survingpack\"+blockname+".dwg");

pDwg->readDwgFile (CString(dir)+"\\survingpack\"+blockname+".dwg") ;

Acad::ErrorStatus es = pCurDb->insert (blockId, blockname, pDwg);//, Adesk::kFalse) ; //

delete pDwg ;

if ( es != Acad::eOk )

{

acutPrintf ("\n插入块错误.") ;

return;

}

}

else

pBlkTable->getAt(blockname, blockId);

BeginEditorCommand();

//ShowWindow(SW_HIDE);

ads_point pt={0,0,0};

int rc=acedGetPoint(NULL,"\n选择插入点:",pt);

if (rc==RTCAN||rc==RTNONE)

{

acutPrintf("\n*取消了插入操作*");

CancelEditorCommand();

return;

}

CompleteEditorCommand();

//---- 设置插入点,旋转角度,比例等等

AcDbBlockReference *pBlkRef =new AcDbBlockReference(AcGePoint3d(pt[0],pt[1],pt[2]),blockId) ;

//pBlkRef->setBlockTableRecord (blockId) ;

pBlkRef->setScaleFactors(AcGeScale3d(m_scale,m_scale,1));

//pBlkRef->setPosition(AcGePoint3d(pt[0],pt[1],pt[2])) ;

pBlkRef->setRotation (m_angle) ;

pBlkRef->setLayer(NULL); //设置图层

//获得模型空间块表记录

AcDbBlockTable *pBlockTable ;

acdbHostApplicationServices()->workingDatabase()->getBlockTable (pBlockTable, AcDb::kForRead) ;

AcDbBlockTableRecord *pBlockTableRecord ;

pBlockTable->getAt (ACDB_MODEL_SPACE, pBlockTableRecord,AcDb::kForWrite) ; pBlockTable->close () ;

pBlockTableRecord->appendAcDbEntity(pBlkRef);

//获得属性

AcDbBlockTableRecord *pBlkDefRecord;

acdbOpenObject(pBlkDefRecord, blockId, AcDb::kForRead);

if(pBlkDefRecord->hasAttributeDefinitions())

{

//AcDbObjectIterator* pBlkIterator = pBlkRef->attributeIterator(); //修改

AcDbBlockTableRecordIterator *pIterator;

pBlkDefRecord->newIterator(pIterator);

for(pIterator->start(); !pIterator->done();pIterator->step())

{

AcDbEntity *pEnt;

pIterator->getEntity(pEnt, AcDb::kForRead);

AcDbAttributeDefinition *pAttDef = AcDbAttributeDefinition::cast(pEnt);

if(pAttDef != NULL && !pAttDef->isConstant())

{

AcDbAttribute* pAtt = new AcDbAttribute();

相关文档
最新文档