新建文字样式报错
本帖最后由 xgr 于 2021-7-13 15:01 编辑搜索到网上的新建文字样式代码,运行报错,错误在pTextTable->add(pTextStyleblRec)这一句。
系统win10 64位 cad2016 vs2012
acDocManager->lockDocument(curDoc()); AcDbTextStyleTable *pTextTable;
acdbCurDwg()->getTextStyleTable(pTextTable,AcDb::kForWrite);
AcDbTextStyleTableRecord *pTextStyleblRec;
pTextStyleblRec = new AcDbTextStyleTableRecord();
pTextStyleblRec->setName(_T("仿宋体1"));
pTextStyleblRec->setFileName(_T("simfang.ttf"));
pTextStyleblRec->setXScale(0.7);
pTextTable->add(pTextStyleblRec);
pTextStyleblRec->close();
pTextTable->close();
acDocManager->unlockDocument(curDoc());
static void qxzyOperateLayer_AddStyle(void)
{
AcDbTextStyleTable *pTextStyleTbl;
acdbHostApplicationServices()->workingDatabase()
->getTextStyleTable(pTextStyleTbl, AcDb::kForWrite);
AcDbTextStyleTableRecord *pTextStyleTblRcd;
pTextStyleTblRcd = new AcDbTextStyleTableRecord();
pTextStyleTblRcd->setName(_T("仿宋体"));
pTextStyleTblRcd->setFileName(_T("simfang.ttf"));
pTextStyleTblRcd->setXScale(0.7);
pTextStyleTbl->add(pTextStyleTblRcd);
pTextStyleTblRcd->close();
pTextStyleTbl->close();
}
就是说不能lockdoc? 不锁定也是一样报错,win10,win7几台电脑都测试了,cad也重装了。
还是这句报错:pTextStyleTbl->add(pTextStyleTblRcd);打开错误信息文件acminidump.dump
你这情况呢,你是用仿宋来做字体吧,仿宋是属于大字体(bigFont),而setFileName这个是用SHX形文字来作为字体的,使用大字体用setBigFontFileName
此外呢,在代码未成熟前,或者觉得代码可能有问题的时候,多使用Acad::ErrorStatus来判断代码出错的原因,不然就是抓破脑袋也不知道怎么回事。
es = pTxtTblRcd->add(...)
if (es != Acad::eOk ) // 操作失败
{ cstring str = L"添加字体样式失败,错误原因是:%s". acaderrortext(es);
afxMessageBox(str);
}
页:
[1]