找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 726|回复: 12

[求助]:为什么文字师问号,请教大家

[复制链接]
发表于 2004-3-19 22:02:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
新手提问:

AcDbText * pText=new AcDbText(pt,"单位:米",NULL,0.5,0);
为什么运行后在CAD上显示的字为问号。
请指点,具体要怎样操作啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-3-19 22:16:39 | 显示全部楼层

Re: [求助]:为什么文字师问号,请教大家

最初由 ltaotie 发布
[B]新手提问:

AcDbText * pText=new AcDbText(pt,"单位:米",NULL,0.5,0);
为什么运行后在CAD上显示的字为问号。
请指点,具体要怎样操作啊。 [/B]


不设置“文字样式”的话,用的是当前的字型定义,你当前的字型定义没有中文设置,当然要显示问号了。

ACAD对象数据库中的AcDbText实体,是通过不同的样式,来随时改变自己在屏幕的显示。

解决方法是:

1、系统设置好当前字型,然后用上面的程序(不推荐)
2、用AcDbText::setTextStyle 设置AcDbText 的样式,然后再添加到数据库里面。程序可以先设置好环境,定义好样式后,再执行你上面的代码。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-20 10:39:27 | 显示全部楼层
能给个例子吗?不慎感激
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-20 20:46:42 | 显示全部楼层

Re: [求助]:为什么文字师问号,请教大家

最初由 ltaotie 发布
[B]新手提问:

AcDbText * pText=new AcDbText(pt,"单位:米",NULL,0.5,0);
为什么运行后在CAD上显示的字为问号。
请指点,具体要怎样操作啊。 [/B]

先获得字体样式ID,在通过字体样式ID添加文字就好了;

  1. [FONT=courier new]
  2. void GetTextStyleId(const char *styleName,AcDbObjectId &styleId
  3. {
  4. AcDbTextStyleTable *pStyleTable;
  5. Acad::ErrorStatus es = acdbHostApplicationServices()-workingDatabase()->getSymbolTable(pStyleTable, AcDb::kForRead);
  6.     if (es == Acad::eOk)
  7.     {
  8.         es = pStyleTable->getAt(styleName, styleId, Adesk::kFalse);
  9.         pStyleTable->close();
  10.     }
  11. }
  12. ////////////////////////////////////////////
  13. GetTextStyleId(styleName,m_styleId);
  14. AcDbText* pText = new AcDbText(currentPoint, string, m_styleId, m_size, angle);
  15. [/FONT]
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-22 09:28:18 | 显示全部楼层
好像不行呀,急啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-3-22 13:19:14 | 显示全部楼层
最初由 ltaotie 发布
[B]好像不行呀,急啊 [/B]


你不行,总有什么结果或者什么现象吧,你不跟大家详细说出来,大家怎么帮你呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-22 15:07:22 | 显示全部楼层
谢谢XDSoft指导!
运行后字体还是问号啊。并不是下面设置的仿宋体
AcDbTextStyleTable *pTextStyleTbl;
acdbCurDwg()->getTextStyleTable(pTextStyleTbl,AcDb::kForWrite);
AcDbTextStyleTableRecord *pTextStyleTblRcd= new AcDbTextStyleTableRecord;
pTextStyleTblRcd->setName("STYLE_HZ");
pTextStyleTblRcd->setFont("仿宋_GB2313",0,0,134,49);
pTextStyleTblRcd->setXScale(0.6);
pTextStyleTbl->add(pTextStyleTblRcd);
pTextStyleTblRcd->close();
pTextStyleTbl->close();

AcDbText * pText=new AcDbText(pt,"单位:米",NULL,0.5,0);
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-3-22 15:16:20 | 显示全部楼层
最初由 ltaotie 发布
[B]谢谢XDSoft指导!
运行后字体还是问号啊。并不是下面设置的仿宋体
AcDbTextStyleTable *pTextStyleTbl;
acdbCurDwg()->getTextStyleTable(pTextStyleTbl,AcDb::kForWrite);
AcDbTextStyleTableRecord *pTextStyl... [/B]


1、你仅仅是添加了一个文字字型定义到符号表里面,你并没有把他设置成数据库当前使用的字型。

2、你可以在实例AcDbText 的时候,使用:AcDbText::setTextStyle ,设置成使用你上面定义的字型,这样就不受当前字型的影响。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-3-22 19:48:31 | 显示全部楼层
2、用AcDbText::setTextStyle 设置AcDbText 的样式,然后再添加到数据库里面。程序可以先设置好环境,定义好样式后,再执行你上面的代码。
小弟天资愚笨,能把代码写出来吗?:(
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2004-3-22 20:08:39 | 显示全部楼层
最初由 ltaotie 发布
[B]2、用AcDbText::setTextStyle 设置AcDbText 的样式,然后再添加到数据库里面。程序可以先设置好环境,定义好样式后,再执行你上面的代码。
小弟天资愚笨,能把代码写出来吗?:( [/B]


你上面的代码,把AcDbTextStyleTableRecord添加到文字样式表时候:

pTextStyleTbl->add(pTextStyleTblRcd); 用


  1. AcDbObjectId tId;
  2. pTextStyleTbl->add(tId,pTextStyleTblRcd);
复制代码


添加的同时获得objectid

最后你实例文字实体的时候

AcDbText * pText=new AcDbText(pt,"单位:米",NULL,0.5,0);
pText->setTextstyle(tId);

......

就把样式设置到你的文字对象里面了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-3-22 23:33:43 | 显示全部楼层
最初由 ltaotie 发布
[B]谢谢XDSoft指导!
运行后字体还是问号啊。并不是下面设置的仿宋体
AcDbTextStyleTable *pTextStyleTbl;
acdbCurDwg()->getTextStyleTable(pTextStyleTbl,AcDb::kForWrite);
AcDbTextStyleTableRecord *pTextStyl... [/B]


把这行"pTextStyleTblRcd->setFont("仿宋_GB2313",0,0,134,49);"
     改成"pTextStyleTalRrd->setFileName("simfang.ttf");"
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-19 16:43:17 | 显示全部楼层
应该是你的字体文件不对,先设置数据库中使用的当前字体文件。然后再创建字体
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-4-19 21:44:47 | 显示全部楼层
最直观的办法,将当前自体设为有大字体的。可以先用文本命令写两个汉字看看,若显示正确,再运行程序,应该没问题。
最根本的办法是用程序设置字形。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 14:25 , Processed in 0.258260 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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