明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4253|回复: 6

怎么通过编程修改CAD里MText的宋体字为黑体?

[复制链接]
发表于 2007-5-11 11:05:00 | 显示全部楼层 |阅读模式

我觉得应该是修改MText的类似(fontStyle)属性,就可以实现,但是看半天VBA帮助,竟然找不到字体集,也不知道怎么给赋值,真是菜鸟啊,请高手指点.

我的情况是这样的,在一张CAD图里有很多MText字,需要把他们从宋体,改为黑体,就这点要求,努力了2天还是没有结果.请高手帮忙...具体应该是遍历CAD图对象,如果是MTex对象,则把它们的字体改为黑体.谢谢了

发表于 2007-5-11 16:23:00 | 显示全部楼层

我的做法是重新建一个专门用于Mtext的字体样式,把这个字体样式用setfont方法设置成想要的字体,并且可以改宽高比等等属性。

据我所知好像MTEXT没有font的属性。

 楼主| 发表于 2007-5-12 13:21:00 | 显示全部楼层
呵呵,setfont方法我也看过,但是第一个字体参数,怎么填?请weianhui帮忙写一下。我查了半天,没有字体的说明,瞎摸也没摸着,谢谢啦,。。。或者像weianhui 所说的,怎么重建Mtext字体样式?
 楼主| 发表于 2007-5-12 14:21:00 | 显示全部楼层
呵呵,找到了setfont的使用方法了,拿出来大家共享。不知道能不能解决问题,回单位试试。。。
SetFont设置字体


  

原  型
short setfont(long obj_id, BSTR big_font_name,BSTR font_name,double height, double width_scale, double oblique);

说  明
设置文字的字体的类型,大小,高度,宽度,倾斜度等.

参  数
1.  long obj_id                 //元素ID
2.  BSTR  big_font_name         //中文字体
3.  BSTR  font_name             //英文字体
4.  double  height              //字体的高度
5.  double  width_scale         //字体宽度系数
6.  double  oblique             //字体的倾斜度

返回值
成功返回为1,否则返回为0

范  例
-Visual Basic 6.0

...

objid = MicroDrawOcx1.CreateText("Microdraw ", 30, 56, "黑体", 30 / 180 * PI, 3, 5,

0)

objid = MicroDrawOcx1.SetFont(objid, "隶书", "", 5, 3, 25 / 180 * PI)MicroDrawOcx1.ZoomAll

              


-Delphi  7.0
...
procedure TForm1.Button29Click(Sender: TObject);
var
i : integer;
begin
  i := self.MicroDrawOcx1.GetSelectObject(0);
  //得到选择的第一个元素(选择的元素为文字)
  self.MicroDrawOcx1.SetFont(i,'宋体',''
                       ,80,1,MICRODRAWOCXLib_TLB.MPI/6);
  //设置选择的元素的字体,缩放比例为1,倾斜角度为30°
  self.MicroDrawOcx1.RedrawAll;
  //刷新当前的屏幕
end;

end.


-Microsoft Visual Studio .NET 2003
...
         private void button45_Click(object sender, System.EventArgs e)

         {

              int id,type;

              id = this.axMicroDrawOcx1.GetSelectObject(0);//得到选择的第一个元素

              type = this.axMicroDrawOcx1.GetObjectType((MICRODRAWOCXLib.ENTITY_OPTION)id);

              //得到选择元素的类型

              if (type ==(int) MICRODRAWOCXLib.OBJECT_TYPE_OPTION.AS_TYPE_TEXT)

              {//判断元素的类型是否为文字

                   this.axMicroDrawOcx1.SetFont(id,"隶书","",20,1,0);

                //设置文字的字体为隶书

                   this.axMicroDrawOcx1.BuildDraw(id);//重新创建文字

                   this.axMicroDrawOcx1.RedrawAll();//刷新当前的窗口

              }

         }
 楼主| 发表于 2007-5-14 10:01:00 | 显示全部楼层

就差一点点,可以解决问题了.各位高手请指点:

sub setMTextFont()

  Dim iCount As Integer

  iCount=ThisDrawing.ModelSpece.Count

  Dim iIndex As Integer

  For iIndex=0 to iCount-1

   if ThisDrawing.ModelSpace.Item(iIndex).ObjectName="caDbMText" then

???ThisDrawing.ModelSpace.Item(iIndex).ObjectID怎么转为MText对象,然后给MText改字体呢(也就是怎么跟setfont接合)

next

End Sub

 楼主| 发表于 2007-5-14 10:28:00 | 显示全部楼层
糟糕,我发现MText好象没有setfont方法.weianhui帮忙,其他高手请帮忙...
 楼主| 发表于 2007-5-15 09:40:00 | 显示全部楼层
自己解决.提示,在acdMText对象的textString属性,用字符串直接替换就行.需要代码发lytofly@mail.china.com
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 16:47 , Processed in 0.255640 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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