lytofly 发表于 2007-5-11 11:05:00

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

我觉得应该是修改MText的类似(fontStyle)属性,就可以实现,但是看半天VBA帮助,竟然找不到字体集,也不知道怎么给赋值,真是菜鸟啊,请高手指点.
我的情况是这样的,在一张CAD图里有很多MText字,需要把他们从宋体,改为黑体,就这点要求,努力了2天还是没有结果.请高手帮忙...具体应该是遍历CAD图对象,如果是MTex对象,则把它们的字体改为黑体.谢谢了

weianhui 发表于 2007-5-11 16:23:00

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

lytofly 发表于 2007-5-12 13:21:00

呵呵,setfont方法我也看过,但是第一个字体参数,怎么填?请weianhui帮忙写一下。我查了半天,没有字体的说明,瞎摸也没摸着,谢谢啦,。。。或者像weianhui 所说的,怎么重建Mtext字体样式?

lytofly 发表于 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.BSTRbig_font_name         //中文字体
3.BSTRfont_name             //英文字体
4.doubleheight            //字体的高度
5.doublewidth_scale         //字体宽度系数
6.doubleoblique             //字体的倾斜度

返回值
成功返回为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
            
-Delphi7.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();//刷新当前的窗口
            }
         }

lytofly 发表于 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

lytofly 发表于 2007-5-14 10:28:00

糟糕,我发现MText好象没有setfont方法.weianhui帮忙,其他高手请帮忙...

lytofly 发表于 2007-5-15 09:40:00

自己解决.提示,在acdMText对象的textString属性,用字符串直接替换就行.需要代码发lytofly@mail.china.com
页: [1]
查看完整版本: 怎么通过编程修改CAD里MText的宋体字为黑体?