- static int TableQuantity() {
- AcDbTable *pTable = NULL;
- pTable = new AcDbTable();
- if (pTable->isWriteEnabled()) {
- pTable->insertColumns(0,10.0);
- pTable->insertColumns(1,10.0);
- pTable->insertColumns(2,10.0);
- pTable->generateLayout();
- //pTable->insertRows(1,10.0);
- ////pTable->setNumColumns(3);
- ////pTable->setNumRows(1);
- ////pTable->generateLayout();
- // title
- pTable->setTextString(0,0,"Block Quantity");
- pTable->setAlignment(0,0,AcDb::kMiddleCenter);
- pTable->setTextHeight(0,0,1.65);
- // headers
- pTable->insertRows(1,10.0);
- pTable->generateLayout();
- pTable->setTextString(1,0,"Preview");
- pTable->setAlignment(1,0,AcDb::kMiddleCenter);
- pTable->setTextHeight(1,0,1.65);
- pTable->setTextString(1,1,"Name");
- pTable->setAlignment(1,1,AcDb::kMiddleCenter);
- pTable->setTextHeight(1,1,1.65);
- pTable->setTextString(1,2,"Number");
- pTable->setAlignment(1,2,AcDb::kMiddleCenter);
- pTable->setTextHeight(1,2,1.65);
- //pTable->generateLayout();
- AcDbBlockTablePointer pBlockTable(CURDB(), AcDb::kForRead);
- EOK(pBlockTable.openStatus());
- AcDbBlockTableIterator *pBTIterator;
- Acad::ErrorStatus es = pBlockTable->newIterator(pBTIterator, true, true);
- if (!EOKM(es))
- return false;
- for (; !pBTIterator->done(); pBTIterator->step()) {
- AcDbObjectId BTRId;
- es = pBTIterator->getRecordId(BTRId);
- if (!EOKM(es)) {
- delete pBTIterator;
- return false;
- }
- AcDbBlockTableRecordPointer pBlockTableRecord(BTRId, AcDb::kForRead);
- EOK(pBlockTableRecord.openStatus());
- // falta filtro para estos bloques "A$C#???????"
- // los bloques anidados llevan "|"
- if (// no anonymous blocks
- pBlockTableRecord->isAnonymous() ||
- // no xref's
- pBlockTableRecord->isFromExternalReference() ||
- // no overlaid xref's
- pBlockTableRecord->isFromOverlayReference() ||
- // no block layouts *MODEL_SPACE, *PAPER_SPACE...
- pBlockTableRecord->isLayout()) {
- continue;
- }
- AcDbBlockTableRecordIterator *pBTRIterator = NULL;
- es = pBlockTableRecord->newIterator(pBTRIterator);
- if (!EOKM(es))
- continue;
- const TCHAR *bName;
- es = pBlockTableRecord->getName(bName);
- if (!EOKM(es)) {
- delete pBTIterator;
- return false;
- }
- char text [33];
- AcDbObjectIdArray ids;
- if (pBlockTableRecord->getBlockReferenceIds(ids) == Acad::eOk) {
- //acutPrintf("\nBlock name %s", bName);
- //acutPrintf("\nCount %d", ids.length());
- int cnt;
- cnt = ids.length();
- itoa(cnt,text,10);
- }
- pTable->insertRows(1,10.0);
- pTable->generateLayout();
- pTable->setBlockTableRecordId(pTable->numRows(),0,BTRId,true);
- pTable->setAlignment(pTable->numRows(),0,AcDb::kMiddleCenter);
- pTable->setTextString(pTable->numRows(),1,bName);
- pTable->setAlignment(pTable->numRows(),1,AcDb::kMiddleCenter);
- pTable->setTextHeight(pTable->numRows(),1,1.65);
- pTable->setTextString(pTable->numRows(),2,text);
- pTable->setAlignment(pTable->numRows(),2,AcDb::kMiddleCenter);
- pTable->setTextHeight(pTable->numRows(),2,1.65);
- //pTable->generateLayout();
- }
- delete pBTIterator;
- AcDbObjectId curSpaceId=CURDB()->currentSpaceId();
- AcDbBlockTableRecord *pBlkRec = NULL;
- if (acdbOpenObject(pBlkRec, curSpaceId, AcDb::kForWrite)==Acad::eOk) {
- pBlkRec->appendAcDbEntity(pTable);
- pBlkRec->close();
- pTable->close();
- }
- }
- }
本帖以下内容被隐藏保护;需要你回复后,才能看到!
游客,如果您要查看本帖隐藏内容请
回复