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 DynWorldDrawCloudComment(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 frstPt = pCustomEntity.GetPoint("frstPt");
// 创建一个批注对象.
var comment = mxOcx.NewEntity("IMxDrawComment");
comment.Text = sText;
comment.TextHeight = dTextHeight;
comment.EdgeNumber = iEdgeNumber;
comment.ShapRadius = dShapRadius;
comment.basePoint = basePoint;
comment.Position = curPt;
comment.BoundingBoxType = 5;
comment.ArrowType = 2;
comment.ShapRadius = 40;
var points = mxOcx.NewComObject("IMxDrawPoints");
//向点数组中增加一个点坐标
points.Add2(frstPt);
points.Add2(basePoint);
//标注框坐标数据
comment.Bounding = points;
var tmpp = mxOcx.NewResbuf();
tmpp.AddLong(1);
comment.SetProp("isAlwaysShowLineWeight", tmpp);
//线重
comment.Lineweight = 25;
//实体的CAD颜色索引值属性
comment.colorIndex = 1;
// 设置文字样式。
pWorldDraw.TextStyle = "MyCommentFont";
// 动态绘制.
pWorldDraw.DrawEntity(comment);
}

动态绘制文字:

function DoCloudCircleComment() {
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();
if (secondPt == null)
return;
var param = mxOcx.NewResbuf();
param.AddString("");
param.AddDouble(100);
var ret = mxOcx.CallEx("Mx_ShowMTextDialog", param);
if (ret.AtString(0) != "Ok") {
return;
}
var txt = ret.AtString(1);
var txtH = ret.AtDouble(2);
var txtColorIndex = ret.AtLong(3);
// 加入换行操作符\\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("DrawCloudComment");
// 设置动态绘制参数.
spDrawData.SetPoint("frstPt", frstPt);
spDrawData.SetPoint("BasePoint", secondPt);
spDrawData.SetString("Text", txt);
spDrawData.SetDouble("TextHeight", txtH);
spDrawData.SetLong("EdgeNumber", 2);
spDrawData.SetDouble("ShapRadius", 1);
// 开始取第二个点。
if (getSecondPt.go() != 1)
return;
var ret = spDrawData.Draw();
// 设置绘制的批注文字样式。
var ent = ret.AtObject(0);
ent.colorIndex = 1;
}

CAD交互绘制圆形云线批注(网页版)的更多相关文章

  1. CAD交互绘制多段线(网页版)

    多段线又被称为多义线,表示一起画的都是连在一起的一个复合对象,可以是直线也可以是圆弧并且它们还可以加不同的宽度. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下 ...

  2. CAD参数绘制多段线(网页版)

    多段线又被称为多义线,表示一起画的都是连在一起的一个复合对象,可以是直线也可以是圆弧并且它们还可以加不同的宽度. 主要用到函数说明: _DMxDrawX::PathLineTo 把路径下一个点移到指定 ...

  3. CAD交互绘制块引用对象(网页版)

    主要用到函数说明: _DMxDrawX::DrawBlockReference 绘制块引用对象.详细说明如下: 参数 说明 DOUBLE dPosX 插入点的X坐标 DOUBLE dPosY 插入点的 ...

  4. CAD交互绘制圆形批注(网页版)

    js中实现代码说明: 动态拖放时的绘制事件: function DoDynWorldDrawFun(dX,dY,pWorldDraw,pData) { //自定义实体的GUID标识符 var sGui ...

  5. CAD交互绘制多段线(com接口)

    多段线又被称为多义线,表示一起画的都是连在一起的一个复合对象,可以是直线也可以是圆弧并且它们还可以加不同的宽度. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下 ...

  6. CAD参数绘制实心圆弧填充(网页版)

    js中实现代码说明: function DrawPathToHatch1() { //把路径的开始位置移动指定的点 //参数一为点的X坐标 ,参数二为点的Y坐标,参数三为该点处开始宽度,对Polyli ...

  7. CAD参数绘制多行文字(网页版)

    在CAD设计时,需要绘制多行文字,用户可以设置设置绘制文字的高度等属性. 主要用到函数说明: _DMxDrawX::DrawMText 绘制一个多行文字.详细说明如下: 参数 说明 DOUBLE dP ...

  8. CAD参数绘制块引用对象(网页版)

    主要用到函数说明: _DMxDrawX::DrawBlockReference 绘制块引用对象.详细说明如下: 参数 说明 DOUBLE dPosX 插入点的X坐标 DOUBLE dPosY 插入点的 ...

  9. CAD绘制固定圆形云线标注(网页吧)

    js中实现代码说明: function DoCloudCircleCommentFix() { var comment = mxOcx.NewEntity("IMxDrawComment&q ...

随机推荐

  1. Python3.6列表函数&方法

    函数: 1.len(list) 列表元素个数 2.max(list) 返回列表元素最大值 3.min(list) 返回列表元素最小值 4.list(seq) 将元组转换为列表 5.enumerate( ...

  2. 使用Spring Security控制会话

    1.概述 在本文中,我们将说明Spring Security如何允许我们控制HTTP会话.此控件的范围从会话超时到启用并发会话和其他高级安全配置. 2.会话何时创建? 我们可以准确控制会话何时创建以及 ...

  3. 【WIP_S9】图论算法

    创建: 2018/06/01 图的概念 有向边 有向图 无向边 无向图 点的次数: 点连接的边的数量 闭路: 起点和重点一样 连接图: 任意两点之间都可到达 无闭路有向图: 没有闭路的有向图 森林: ...

  4. OpenCV第二课,嵌入MFC

    单纯显示图片,只需链接 opencv_core2411d.libopencv_highgui2411d.lib 1.首先创建一个MFC的dlg,添加Picture Control控件 void CCO ...

  5. 使用dynamic关键词 CS1969错误

    添加 Microsoft.CSharp.dll 引用即可 不需要添加using Microsoft.CSharp 这类namespace

  6. JS中的柯里化(currying) 转载自张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]

    JS中的柯里化(currying) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpr ...

  7. Eclipse mybatis中XML的自动提示

    1. 从mybatis-3.1.1.jar中解压出dtd文件 2. 3. 复制红线处内容 4. 将上步中内容粘贴到key中

  8. Android近场通信---NFC基础(二)(转)

    转自 http://blog.csdn.net/think_soft/article/details/8171256 应用程序如何调度NFC标签 当标签调度系统完成对NFC标签和它的标识信息封装的In ...

  9. Excel - 使用公式将秒转换为分+秒

    场景 现在有个需求:将Excel里的时间转换为分+秒的格式,如下: time(second) time(min+second) 482.712 XXmin,XXs 480.737 XXmin,XXs ...

  10. tcp端口扫描(python多线程)

    1 使用单线程扫描单台主机 首先实现的是对单台主机中0-1024端口的扫描,发现差不多每秒扫描一个端口,很慢. import socket def tcp_scanner(host,port): cl ...