我用VB做了AUTOCAD的工艺卡片的二次开发(从数据库调入相应的内容)。
部分代码如下:
If Array1(Count1).TagString = "毛坯种类" Then
Array1(Count1).TextString = "" & comRoughType.Text
End If
但是,运行程序后,显示的结果,视觉效果太差。
以下四幅图,是我的解释。
请问,在程序里面如何直接设置。让其显示时,就是图四的界面

解决方案 »

  1.   

    吐血,百度的图,还不让用。
    下面是链接的网址,
    http://zhidao.baidu.com/question/282607082.html
      

  2.   

    Array1(Count1)是什么类型?你可以用MText,设定宽度,这样的话如果字符串太长就自动到下一行了
      

  3.   

    用"属性参照"对象的 GetBoundingBox 方法获取该属性文字的左下角点和右上角点,用二者的横坐标相减得到宽度,再与表格的宽度比较.如果属性文字的宽度大于表格宽度,就计算并设置属性文字的合理的宽度因子(ScaleFactor属性), 
    Dim MinPoint As Variant, MaxPoint As Variant
    Array1(Count1).GetBoundingBox MinPoint, MaxPoint
    If MaxPoint(0) - MinPoint(0) > 表格宽度 Then Array1(Count1).ScaleFactor = 表格宽度 / (MaxPoint(0) - MinPoint(0)) Else Array1(Count1).ScaleFactor = 1
      

  4.   

    谢谢,我按你所说的,确实取到了:“结构用无缝钢管GB/T8162(热轧)”的字体宽度值。
    但是“表格宽度”,这个内容,我想用原来属性的宽度(就是打散后“毛坯种类”的字体所占的宽度),不知有没有办法取到?
    否则的话,表格宽度,也并不是好取的。(若有办法,也行,谢谢啊)
    谢谢
      

  5.   

    那就把修改之前的属性文字的宽度记下来,然后再修改属性文字和它的宽度因子
    Dim MinPoint As Variant, MaxPoint As Variant, OldWidth As Double
    If Array1(Count1).TagString = "毛坯种类" Then
        Array1(Count1).GetBoundingBox MinPoint, MaxPoint
        OldWidth = MaxPoint(0) - MinPoint(0)
        Array1(Count1).TextString = comRoughType.Text
        Array1(Count1).ScaleFactor = 1
        Array1(Count1).GetBoundingBox MinPoint, MaxPoint
        Array1(Count1).ScaleFactor = OldWidth / (MaxPoint(0) - MinPoint(0))
    End If