注意要对字体名称做一些处理,以及重复性检查,详见源代码。
Acad::ErrorStatuses;AcApDocument*pDoc;AcDbDatabase*pDb;pDoc=acDocManager->curDocument();pDb=pDoc->database();AcDbTextStyleTable*pTextTbl;AcDbTextStyleTableIterator*pTextIterator;es=pDb->getTextStyleTable(pTextTbl,AcDb::kForRead);pTextTbl->newIterator(pTextIterator);//获取迭代器vector<wstring>fontList;for(pTextIterator->start(); !pTextIterator->done();pTextIterator->step()) {AcDbTextStyleTableRecord*pTextRecord;es=pTextIterator->getRecord(pTextRecord,AcDb::kForRead);TCHAR*pFontName=NULL;es=pTextRecord->fileName(pFontName);//获取字体名称if(es==Acad::eOk) {AddToFontList(pFontName,fontList); }es=pTextRecord->bigFontFileName(pFontName);//获取大字体名称if(es==Acad::eOk) {AddToFontList(pFontName,fontList); } }pTextTbl->close();三、获取本地字体列表
获取本地AutoCAD安装目录下Font文件夹下已存在的字体列表。
vector<wstring>result;_tfinddata64_tc_file;intptr_thFile;wstringroot;root.append(path);//路径root.append(L"\\*");root.append(ext);//扩展名hFile=_tfindfirst64(root.c_str(), &c_file);if(hFile== -1)returnresult;do{if(_tcslen(c_file.name) == 1 &&c_file.name[0] ==_T('.') ||_tcslen(c_file.name) == 2 &&c_file.name[0] ==_T('.') &&c_file.name[1] ==_T('.'))continue;result.push_back(c_file.name); }while(_tfindnext64(hFile, &c_file) == 0);_findclose(hFile);四、下载缺失字体
盖楼回复 X
(您的评论需要经过审核才能显示)