乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 87|回复: 6

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

[复制链接]

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2007-5-11 11:05:00 | 显示全部楼层 |阅读模式
我觉得应该是修改MText的类似(fontStyle)属性,就可以实现,但是看半天VBA帮助,竟然找不到字体集,也不知道怎么给赋值,真是菜鸟啊,请高手指点.
我的情况是这样的,在一张CAD图里有很多MText字,需要把他们从宋体,改为黑体,就这点要求,努力了2天还是没有结果.请高手帮忙...具体应该是遍历CAD图对象,如果是MTex对象,则把它们的字体改为黑体.谢谢了
回复

使用道具 举报

5

主题

21

帖子

2

银币

初来乍到

Rank: 1

铜币
41
发表于 2007-5-11 16:23:00 | 显示全部楼层
我的做法是重新建一个专门用于Mtext的字体样式,把这个字体样式用setfont方法设置成想要的字体,并且可以改宽高比等等属性。
据我所知好像MTEXT没有font的属性。
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2007-5-12 13:21:00 | 显示全部楼层
呵呵,setfont方法我也看过,但是第一个字体参数,怎么填?请weianhui帮忙写一下。我查了半天,没有字体的说明,瞎摸也没摸着,谢谢啦,。。。或者像weianhui 所说的,怎么重建Mtext字体样式?
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 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();//刷新当前的窗口
              }
         }
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 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
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2007-5-14 10:28:00 | 显示全部楼层
糟糕,我发现MText好象没有setfont方法.weianhui帮忙,其他高手请帮忙...
回复

使用道具 举报

1

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
11
发表于 2007-5-15 09:40:00 | 显示全部楼层
自己解决.提示,在acdMText对象的textString属性,用字符串直接替换就行.需要代码发lytofly@mail.china.com
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-7 17:42 , Processed in 1.067934 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表