1、在CAD设计时,需要绘制文字,用户可以设置设置绘制文字的高度等属性。
2、主要用到函数说明:_DMxDrawX::DrawText
绘制一个单行文字。详细说明如下:
参数 | 说明 |
---|
DOUBLE dPosX | >文字的位置的X坐标 |
DOUBLE dPosY | 文字的位置的Y坐标 |
BSTR pszText | 文字内容字符串 |
DOUBLE dHeight | 文字高度 |
DOUBLE dRotation | 文字的旋转角度 |
SHORT horizontalMode | 文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight |
SHORT verticalMode | 文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop |
3、js中实现代码说明:
(1)动态拖放时的绘制事件:
1 2 3 4 5 6 7 | function DynWorldDrawText( pCustomEntity, pWorldDraw, curPt) { // 得到绘制参数. var sText = pCustomEntity.GetString( "Text" ); var dTextHeight = pCustomEntity.GetDouble( "TextHeight" ); // 绘制文字 pWorldDraw.DrawText (curPt.x,curPt.y,sText,dTextHeight,0,1,1); } |
(2)动态绘制文字:
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 30 31 32 | function DrawText() { var winWidth = 440; var winHeight = 140; var winLeft = (screen.width - winWidth) / 2; var winTop = (screen.height - winHeight) / 2 - 20; var str = 'dialogHeight:' + winHeight + 'px;dialogWidth:' + winWidth + 'px;dialogTop:' + winTop + 'px;dialogLeft:' + winLeft + 'px;resizable:yes;center:yes;status:no;' var rt = window.showModalDialog( "Gettext.htm?tmp=" + Math.random(), "输入文字" , str); var txt; if ( typeof (rt) == "undefined" ) { return ; } else { var arr = rt.split( "," ); txt = arr[0]; } // 加入换行操作符\\P //txt = txt + "\\PTEST"; // 创建一个文字样式,用于批注文字字体. mxOcx.AddTextStyle2( "MyCommentFont" , "黑体" ,0.7); // 创建一个与用户交互取点的对象。 var getPt = mxOcx.NewComObject( "IMxDrawUiPrPoint" ); getPt.message = "点取插入点" ; // 设置动态绘制参数. var spDrawData = getPt.InitUserDraw( "DrawText" ); spDrawData.SetString( "Text" , txt); spDrawData.SetDouble( "TextHeight" , 100); // 开始取第一个点。 if (getPt.go() != 1) return ; var ret = spDrawData.Draw(); } |
4、效果展示:
用户可以通过点击绘制文字按钮,将弹出网页对话框,在对话框里面输入需要插入的字符串,点击确定后将绘制的字符串插入到CAD控件视区任意位置。如下图所示:
![dydrawtext.png](https://i-blog.csdnimg.cn/blog_migrate/31ab7ef1d1f802c39832e2a4d1dd8a85.png)