返回介绍

固定批注

发布于 2023-08-09 23:10:34 字数 4844 浏览 0 评论 0 收藏 0

js中实现代码说明:

自定义实体绘制函数

document.getElementById("MxDrawXCtrl").ImpExplodeFun = ExplodeFun;
function ExplodeFun(pCustomEntity, pWorldDraw) {
	var mxOcx = document.all.item("MxDrawXCtrl");
    var sGuid = pCustomEntity.Guid;
    if (sGuid == "TestMxCustomEntity2") {
        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();
}

效果展示:

通过点击固定参数绘批注按钮,触发DoCommentFix()事件,CAD控件视区将显示在js中设置好的固定参数批注。如下图所示:

biao6.png

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文