xgr 发表于 2021-7-13 14:57:12

新建文字样式报错

本帖最后由 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());







cable2004 发表于 2021-7-13 22:39:48

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();
        }

xinxirong 发表于 2021-7-14 14:31:54

就是说不能lockdoc?

xgr 发表于 2021-7-14 18:30:59

不锁定也是一样报错,win10,win7几台电脑都测试了,cad也重装了。
还是这句报错:pTextStyleTbl->add(pTextStyleTblRcd);打开错误信息文件acminidump.dump


luowy 发表于 2021-7-23 09:10:12

你这情况呢,你是用仿宋来做字体吧,仿宋是属于大字体(bigFont),而setFileName这个是用SHX形文字来作为字体的,使用大字体用setBigFontFileName

此外呢,在代码未成熟前,或者觉得代码可能有问题的时候,多使用Acad::ErrorStatus来判断代码出错的原因,不然就是抓破脑袋也不知道怎么回事。

es = pTxtTblRcd->add(...)
if (es != Acad::eOk ) // 操作失败
{ cstring str = L"添加字体样式失败,错误原因是:%s". acaderrortext(es);
afxMessageBox(str);
}

页: [1]
查看完整版本: 新建文字样式报错