明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1072|回复: 4

新建文字样式报错

[复制链接]
发表于 2021-7-13 14:57:12 | 显示全部楼层 |阅读模式
本帖最后由 xgr 于 2021-7-13 15:01 编辑

搜索到网上的新建文字样式代码,运行报错,错误在pTextTable->add(pTextStyleblRec)这一句。
系统win10 64位 cad2016 vs2012
  1.         acDocManager->lockDocument(curDoc());                AcDbTextStyleTable *pTextTable;
  2.         acdbCurDwg()->getTextStyleTable(pTextTable,AcDb::kForWrite);
  3.         AcDbTextStyleTableRecord *pTextStyleblRec;
  4.         pTextStyleblRec = new AcDbTextStyleTableRecord();
  5.         pTextStyleblRec->setName(_T("仿宋体1"));
  6.         pTextStyleblRec->setFileName(_T("simfang.ttf"));
  7.         pTextStyleblRec->setXScale(0.7);
  8.         pTextTable->add(pTextStyleblRec);
  9.         pTextStyleblRec->close();
  10.         pTextTable->close();
  11.         acDocManager->unlockDocument(curDoc());








本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 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();
        }

发表于 2021-7-14 14:31:54 来自手机 | 显示全部楼层
就是说不能lockdoc?
 楼主| 发表于 2021-7-14 18:30:59 | 显示全部楼层
不锁定也是一样报错,win10,win7几台电脑都测试了,cad也重装了。
还是这句报错:pTextStyleTbl->add(pTextStyleTblRcd);打开错误信息文件acminidump.dump


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 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);
}

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 02:35 , Processed in 0.141882 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表