CAD参数绘制多行文字(com接口)

在CAD设计时,需要绘制多行文字,用户可以设置设置绘制文字的高度等属性。

主要用到函数说明:

_DMxDrawX::DrawMText

绘制一个多行文字。详细说明如下:

参数 说明

DOUBLE dPosX

多行文字位置的X坐标

DOUBLE dPosY

多行文字位置的Y坐标

BSTR pszContents

多行文字的内容

DOUBLE dHeight

多行文字的高度

DOUBLE dWidth

多行文字的显示宽度

DOUBLE dRotation

多行文字的旋转角度

SHORT iAttachment

多行文字的对齐方式

可以取值

enum AttachmentPoint { kTopLeft = 1, kTopCenter = 2, kTopRight = 3, kMiddleLeft = 4, kMiddleCenter = 5, kMiddleRight = 6, kBottomLeft = 7, kBottomCenter = 8, kBottomRight = 9,

_DMxDrawX::AddTextStyle2

向数据库中增加一个TrueType文字样式。详细说明如下:

参数 说明

BSTR pszName

文字样式名称

BSTR pszTrueTypeFontName

TrueType字体名

DOUBLE dXScale

文字宽度缩放比例

C#中实现代码说明:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

private void DrawMText()

{

    //清空当前显示内容

    axMxDrawX1.NewFile();

    //把颜色改回黑白色

    axMxDrawX1.DrawCADColor = 0;

    //绘制多行文字

    //参数一为多行文字位置的X坐标  ;参数二为多行文字位置的Y坐标  ;参数三为多行文字的内容

    //参数四为多行文字的高度 ;参数五为多行文字的显示宽度

    //参数六为多行文字的旋转角度

    //参数七为多行文字的对齐方式

    axMxDrawX1.DrawCADColor = 255;

    axMxDrawX1.DrawMText(100, 100, "cad绘图\\P梦想软件", 15, 500, 0.0, 7);

    axMxDrawX1.DrawCADColor = 16711680;

    axMxDrawX1.DrawMText(0, 0, "\\A2;平方方法 :m{\\H0.3x;\\S 2^;}", 15, 100, 0.0, 7);

    //按指定样式绘制文字

    axMxDrawX1.AddTextStyle1("MyTextStyle""italicc.shx""gbcbig.shx", 0.7);

    axMxDrawX1.TextStyle = "MyTextStyle";

    axMxDrawX1.DrawCADColor = 65280;

    axMxDrawX1.DrawMText(0, 50, "\\A2;平方方法 :m{\\H0.3x;\\S 2^;}", 15, 100, 0.0, 7);

    //--------------------------------------------------------------------------------------------------

    //写一个TureType字体

    axMxDrawX1.AddTextStyle2("MyTrueTypeStyle""黑体", 0.7);

    axMxDrawX1.TextStyle = "MyTrueTypeStyle";

    axMxDrawX1.DrawCADColor = 4556677;

    axMxDrawX1.DrawMText(0, 100, "\\A2;平方方法 :m{\\H0.3x;\\S 2^;}", 15, 100, 0.0, 7);

    axMxDrawX1.ZoomAll();

    axMxDrawX1.UpdateDisplay();

}

效果展示:

用户可以通过点击绘制多行文字按钮,将在C#中设置好的多行文本插入到CAD控件视区。如下图所示:

c#drawmtext.png

猜你喜欢

转载自blog.csdn.net/u013725001/article/details/93164485