本文整理汇总了C++中AcDbDatabase::getTextStyleTable方法的典型用法代码示例。如果您正苦于以下问题:C++ AcDbDatabase::getTextStyleTable方法的具体用法?C++ AcDbDatabase::getTextStyleTable怎么用?C++ AcDbDatabase::getTextStyleTable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AcDbDatabase
的用法示例。
在下文中一共展示了AcDbDatabase::getTextStyleTable方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getAllSymbolRecordsIds
int getAllSymbolRecordsIds(AcRxClass* pTableClass, AcDbObjectIdArray & idaAll)
{
CLogger::Print(_T("*Call: getAllSymbolRecordsIds()"));
Acad::ErrorStatus es;
idaAll.setLogicalLength(0);
AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
AcDbSymbolTable* pSymbolTable = NULL;
if (AcRx::kEqual == pTableClass->comparedTo(AcDbBlockTable::desc())) {
CLogger::Print(_T("> This is BlockTable!"));
es = pDb->getBlockTable(pSymbolTable, AcDb::kForRead);
}
else if (AcRx::kEqual == pTableClass->comparedTo(AcDbLayerTable::desc())) {
CLogger::Print(_T("> This is LayerTable!"));
es = pDb->getLayerTable(pSymbolTable, AcDb::kForRead);
}
else if (AcRx::kEqual == pTableClass->comparedTo(AcDbLinetypeTable::desc())) {
CLogger::Print(_T("> This is LinetypeTable!"));
es = pDb->getLinetypeTable(pSymbolTable, AcDb::kForRead);
}
else if (AcRx::kEqual == pTableClass->comparedTo(AcDbTextStyleTable::desc())) {
CLogger::Print(_T("> This is TextStyleTable!"));
es = pDb->getTextStyleTable(pSymbolTable, AcDb::kForRead);
}
else {
CLogger::Print(_T("*Exit: getAllSymbolRecordsIds() - This kind of SymbolTable is not supported!"));
return -1;
}
if (Acad::eOk != es) {
CLogger::Print(_T("*Exit: getAllSymbolRecordsIds() - Fail to get SymbolTable!"));
return -1;
}
//------------
// Get the SymbolTable's iterator.
AcDbSymbolTableIterator* pSymbolTableIter = NULL;
es = pSymbolTable->newIterator(pSymbolTableIter);
pSymbolTable->close();
if (Acad::eOk != es) {
CLogger::Print(_T("*Exit: getAllSymbolRecordsIds() - Fail to get the SymbolTable's iterator!"));
return -1;
}
//------------
// Steps through the SymbolTable's records.
// Then get the SymbolTableRecord's ObjectID.
for (; !pSymbolTableIter->done(); pSymbolTableIter->step()) {
AcDbObjectId idObj = AcDbObjectId::kNull;
if (Acad::eOk == pSymbolTableIter->getRecordId(idObj))
idaAll.append(idObj);
}
delete pSymbolTableIter;
CLogger::Print(_T("*Exit: getAllSymbolRecordsIds() - Count: %02d"), idaAll.length());
return idaAll.length();
}
示例2: GetPredefinedStrings
//OPM calls this function for each property to obtain a list of strings and cookies if they are available.
//For our textstyle property we would like to display all the textstyles currently available in the database.
//This function is declared on the IPerPropertyBrowsing interface. Our IOPMPropertyExtensionImpl
//class implements this member by reading the values in the OPM property map. (You set this up in your
//head file when you use BEGIN_OPMPROP_MAP, OPMPROP_ENTRY, END_OPMPROP_MAP macros.)
//Since we need a dynamic list of entries in this drop down list and a static map cannot implement this,
//we need to override this function a provide dynamic list of text styles to OPM.
STDMETHODIMP CComPolygon::GetPredefinedStrings(DISPID dispID, CALPOLESTR *pCaStringsOut, CADWORD *pCaCookiesOut)
{
if (dispID != DISPID_TEXTSTYLENAME)
return IOPMPropertyExtensionImpl<CComPolygon>::GetPredefinedStrings(dispID,pCaStringsOut,pCaCookiesOut);
USES_CONVERSION;
AcDbTextStyleTable* pTT;
AcDbDatabase *pDb = m_objRef.objectId().database();
if (NULL == pDb)
pDb = acdbHostApplicationServices()->workingDatabase();
if (pDb->getTextStyleTable(pTT,AcDb::kForRead)==Acad::eOk)
{
AcDbTextStyleTableIterator* pIter;
if (pTT->newIterator(pIter)==Acad::eOk)
{
long size = 0;
// Clear the array.
mObjectIdArray.removeAll();
for (pIter->start();!pIter->done();pIter->step())
size++;
pCaStringsOut->pElems = (LPOLESTR *)::CoTaskMemAlloc(sizeof(LPOLESTR) * size);
pCaCookiesOut->pElems = (DWORD *)::CoTaskMemAlloc(sizeof(DWORD) * size);
long i=0;
for (pIter->start();!pIter->done();pIter->step())
{
AcDbTextStyleTableRecord* pTTR;
if (pIter->getRecord(pTTR,AcDb::kForRead)!=Acad::eOk)
continue;
const TCHAR* pName = NULL;
if (pTTR->getName(pName)==Acad::eOk){
//we want to show the name of the textstyle as
//it appears in the database
pCaStringsOut->pElems[i] = ::SysAllocString(CT2W(pName));
pCaCookiesOut->pElems[i] = mObjectIdArray.append(pTTR->objectId());
}
pTTR->close();
i++;
}
pCaStringsOut->cElems = i;
pCaCookiesOut->cElems = i;
}
if (pIter)
delete pIter;
pTT->close();
}
return S_OK;
}