CAD交互绘制圆形标注(网页版)

Posted lihao2014

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAD交互绘制圆形标注(网页版)相关的知识,希望对你有一定的参考价值。


js中实现代码说明:

动态拖放时的绘制事件:

function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) 

//自定义实体的GUID标识符

var sGuid = pData.Guid;

//设置自定义事件的返回值

mxOcx.SetEventRet(0);



var curPt = mxOcx.NewPoint();

curPt.x = dX;

curPt.y = dY;

if (sGuid == "DrawCircle")

var pt1 = pData.GetPoint("pt1");

var dR = curPt.DistanceTo(pt1) * 0.5;

var vec = curPt.SumVector(pt1);

vec.Mult(0.5);

pt1.Add(vec);

pWorldDraw.DrawCircle(pt1.x, pt1.y, dR);






动态拖放时的绘制事件:

function  DynWorldDrawComment2( pCustomEntity,pWorldDraw,  curPt) 

// 得到绘制参数.



var sText = pCustomEntity.GetString("Text");

var dTextHeight = pCustomEntity.GetDouble("TextHeight");

var iEdgeNumber = pCustomEntity.GetLong("EdgeNumber");

var dShapRadius = pCustomEntity.GetDouble("ShapRadius");

var basePoint = pCustomEntity.GetPoint("BasePoint");

// 创建一个批注对象.

var comment = mxOcx.NewEntity("IMxDrawComment");

comment.Text = sText;

comment.TextHeight = dTextHeight;

comment.EdgeNumber = iEdgeNumber;

comment.ShapRadius = dShapRadius;

comment.basePoint = basePoint;

comment.Position = curPt;

// 设置文字样式。

pWorldDraw.TextStyle = "MyCommentFont";

// 动态绘制.

pWorldDraw.DrawEntity(comment);


————————————————

动态绘制文字:

function ExplodeFun(pCustomEntity, pWorldDraw, txt) 

var sGuid = pCustomEntity.Guid;

if (sGuid == "TestMxCustomEntity1")

if (!pCustomEntity.IsHave("First"))

return;

var stp = pCustomEntity.GetPoint("First");

var ept = pCustomEntity.GetPoint("BasePoint");

var dimpt = pCustomEntity.GetPoint("DimPoint");

var txt = pCustomEntity.GetString("Text");

var textH = pCustomEntity.GetDouble("TextHeight");

var edgeNum = pCustomEntity.GetLong("EdgeNumber");

var shapRadius = pCustomEntity.GetDouble("ShapRadius");

var isCircle = pCustomEntity.GetLong("isCircle");

var comment = mxOcx.NewEntity("IMxDrawComment");

comment.Text = txt;

comment.TextHeight = textH;

comment.EdgeNumber = edgeNum;

comment.ShapRadius = shapRadius;

comment.basePoint = ept;

comment.Position = dimpt;

pWorldDraw.TextStyle = "MyCommentFont";

// 动态绘制.

pWorldDraw.DrawEntity(comment);

// 绘制矩形框.

if (isCircle)

var dR = stp.DistanceTo(ept) * 0.5;

var vec = stp.SumVector(ept);

vec.Mult(0.5);

ept.Add(vec);

pWorldDraw.DrawCircle(ept.x, ept.y, dR);



else

pWorldDraw.DrawLine(stp.x, stp.y, stp.x, ept.y);

pWorldDraw.DrawLine(stp.x, ept.y, ept.x, ept.y);

pWorldDraw.DrawLine(ept.x, ept.y, ept.x, stp.y);

pWorldDraw.DrawLine(ept.x, stp.y, stp.x, stp.y);



mxOcx.SetEventRet(1);




————————————————

动态绘制文字:

function DoCircleComment() 

var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");

getPt.message = "点取第一点";

if (getPt.go() != 1)

return;



var frstPt = getPt.value();

if (frstPt == null)

return;

var getPt2 = mxOcx.NewComObject("IMxDrawUiPrPoint");

getPt2.message = "指定第二个点";

var spDrawData = getPt2.InitUserDraw("DrawCircle");

spDrawData.SetPoint("pt1", frstPt);

if (getPt2.go() != 1)

return;



var secondPt = getPt2.value();

// 出来一个对象,让用户输入文字.

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 getSecondPt = mxOcx.NewComObject("IMxDrawUiPrPoint");

getSecondPt.message = "输入标注位置点";

getSecondPt.basePoint = secondPt;

getSecondPt.setUseBasePt(false);

spDrawData = getSecondPt.InitUserDraw("DrawComment2");

// 设置动态绘制参数.

spDrawData.SetPoint("BasePoint", secondPt);

spDrawData.SetString("Text", txt);

spDrawData.SetDouble("TextHeight", 100);

spDrawData.SetLong("EdgeNumber", 2);

spDrawData.SetDouble("ShapRadius", 1);

// 开始取第二个点。

if (getSecondPt.go() != 1)

return;

var ent = mxOcx.DrawCustomEntity("TestMxCustomEntity1", "");

ent.SetPoint("BasePoint", secondPt);

ent.SetString("Text", txt);

ent.SetDouble("TextHeight", 100);

ent.SetLong("EdgeNumber", 2);

ent.SetDouble("ShapRadius", 1);

ent.SetPoint("DimPoint", getSecondPt.value());

ent.SetPoint("First", frstPt);

ent.SetLong("isCircle", 1);


以上是关于CAD交互绘制圆形标注(网页版)的主要内容,如果未能解决你的问题,请参考以下文章

CAD绘制固定圆形标注(网页版)

CAD绘制圆形云线批注(网页版)

CAD绘制单行文字(网页版)

CAD参数绘制椭圆(网页版)

CAD参数绘制圆(网页版)

CAD参数绘制圆弧(网页版)