CAD参数绘制固定批注(网页版)

js中实现代码说明:


自定义实体绘制函数


function ExplodeFun(pCustomEntity, pWorldDraw, txt) {
    var sGuid = pCustomEntity.Guid;
    if (sGuid == "TestMxCustomEntity") {
        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;
        //标注位置提示多边形的边数. 小于2不绘制,=2绘制圆,大于2绘制多边形
        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);
            //绘制一个圆
            //参数一为圆的中心X值 ,参数二为圆的中心Y值,
            //参数三为半径
            pWorldDraw.DrawCircle(ept.x, ept.y, dR);
        }
        // 绘制矩形框.
        else {
            //绘制一个直线
            //参数一直线的开始点x坐标,参数二直线的开始点y坐标,参数三直线的结束点x坐标,参数四直线的结束点y坐标
            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 GetGripPointsFun(pCustomEntity) {
    var sGuid = pCustomEntity.Guid;
    if (sGuid == "TestMxCustomEntity") {
        if (!pCustomEntity.IsHave("First"))
            return;
        var stp = pCustomEntity.GetPoint("First");
        var ept = pCustomEntity.GetPoint("BasePoint");
        var dimpt = pCustomEntity.GetPoint("DimPoint");
        var ret = mxOcx.NewResbuf();
        ret.AddPoint(stp);
        ret.AddPoint(ept);
        ret.AddPoint(dimpt);
        mxOcx.SetEventRetEx(ret);
    }
}


移动自定义实体夹点


function MoveGripPointsFun(pCustomEntity, lGridIndex, dOffsetX, dOffsetY) {

    var sGuid = pCustomEntity.Guid;
    if (sGuid == "TestMxCustomEntity") {
        if (!pCustomEntity.IsHave("First"))
            return;
        var stp = pCustomEntity.GetPoint("First");
        var ept = pCustomEntity.GetPoint("BasePoint");
        var dimpt = pCustomEntity.GetPoint("DimPoint");
        if (lGridIndex == 0) {
            stp.x = stp.x + dOffsetX;
            stp.y = stp.y + dOffsetY;
            pCustomEntity.SetPoint("First", stp);
        }
        else if (lGridIndex == 1)
        {
            ept.x = ept.x + dOffsetX;
            ept.y = ept.y + dOffsetY;
            pCustomEntity.SetPoint("BasePoint", ept);
        }
        else
        {
            dimpt.x = dimpt.x + dOffsetX;
            dimpt.y = dimpt.y + dOffsetY;
            pCustomEntity.SetPoint("DimPoint", dimpt);
        }
        mxOcx.SetEventRet(1);
    }
}


固定参数绘批注


function DoCommentFix() {
    var comment = mxOcx.NewEntity("IMxDrawComment");
    comment.Text = "固定参数绘批注";
    comment.TextHeight = 10;
    var basepos = mxOcx.NewPoint();
    basepos.x = 0;
    basepos.y = 10;
    var pos = mxOcx.NewPoint();
    pos.x = 20;
    pos.y = 30;
    //基点
    comment.BasePoint = basepos;
    //位置
    comment.Position = pos;
    var comobj = mxOcx.ObjectIdToObject( mxOcx.DrawEntity(comment) );
    comobj.TextStyle = "MyCommentFont";
    mxOcx.ZoomAll();
}

posted on 2019-06-18 10:24  梦想CAD控件  阅读(271)  评论(0)    收藏  举报

导航