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

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

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

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

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

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

<p>就差一点点,可以解决问题了.各位高手请指点:</p><p>sub setMTextFont()</p><p>&nbsp; Dim iCount As Integer</p><p>&nbsp;&nbsp;iCount=ThisDrawing.ModelSpece.Count</p><p>&nbsp; Dim iIndex As Integer</p><p>&nbsp;&nbsp;For iIndex=0 to iCount-1</p><p>&nbsp;&nbsp; if ThisDrawing.ModelSpace.Item(iIndex).ObjectName="caDbMText" then</p><p>???ThisDrawing.ModelSpace.Item(iIndex).ObjectID怎么转为MText对象,然后给MText改字体呢(也就是怎么跟setfont接合)</p><p>next</p><p>End Sub</p>

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

糟糕,我发现MText好象没有setfont方法.<strong><font face="Verdana" color="#61b713">weianhui帮忙,其他高手请帮忙...</font></strong>

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

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