js中实现代码说明:

动态拖放时的绘制事件:

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 DoComment3() {
var getPt = mxOcx.NewComObject("IMxDrawUiPrPoint");
getPt.message = "点取第一点";
if (getPt.go() != 1) {
return;
}
var frstPt = getPt.value();
if (frstPt == null)
return;
var utl = mxOcx.NewUtility();
var secondPt = utl.GetCorner(frstPt, "点取第二点");
if (secondPt == null)
return;
var param = mxOcx.NewResbuf();
param.AddString("");
param.AddDouble(200);
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("DrawComment2");
// 设置动态绘制参数.
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 ent = mxOcx.DrawCustomEntity("TestMxCustomEntity1", "");
ent.SetPoint("BasePoint", secondPt);
ent.SetString("Text", txt);
ent.SetDouble("TextHeight", txtH);
ent.SetLong("EdgeNumber", 2);
ent.SetDouble("ShapRadius", 1);
ent.SetPoint("DimPoint", getSecondPt.value());
ent.SetPoint("First", frstPt);
ent.TextStyle = "MyCommentFont";
ent.colorIndex = txtColorIndex;
}

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

  1. CAD交互绘制文字(网页版)

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

  2. CAD交互绘制圆(网页版)

    CAD绘制图像的过程中,画圆的情况是非常常见的,用户可以在控件视区点取任意一点做为圆心,再动态点取半径绘制圆. 主要用到函数说明: _DMxDrawX::DrawCircle 绘制一个圆.详细说明如下 ...

  3. CAD交互绘制圆弧(网页版)

    在CAD设计时,需要绘制圆弧,用户可以在图面点圆弧起点,圆弧上的一点和圆弧的终点,这样就绘制出圆弧. 主要用到函数说明: _DMxDrawX::DrawArc2 由圆弧上的三点绘制一个圆弧.详细说明如 ...

  4. CAD交互绘制虚线(网页版)

    用户可以在CAD控件视区任意位置绘制直线. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE ...

  5. CAD交互绘制直线(网页版)

    用户可以在CAD控件视区任意位置绘制直线. 主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE ...

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

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

  7. CAD交互绘制矩形框(网页版)

    主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE ...

  8. CAD交互绘制矩形框(com接口)

    主要用到函数说明: _DMxDrawX::DrawLine 绘制一个直线.详细说明如下: 参数 说明 DOUBLE dX1 直线的开始点x坐标 DOUBLE dY1 直线的开始点y坐标 DOUBLE ...

  9. CAD参数绘制文字(网页版)

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

随机推荐

  1. Makefile研究(二)—— 完整可移植性模板

    转自:http://blog.csdn.net/jundic/article/details/17676461 一直想写一个很全很好移植的Makefile模板,我觉得一个完整makefile 应该包含 ...

  2. MR 图像分割 相关论文摘要整理

    <多分辨率水平集算法的乳腺MR图像分割> 针对乳腺 MR 图像信息量大.灰度不均匀.边界模糊.难分割的特点, 提出一种多分辨率水平集乳腺 MR图像分割算法. 算法的核心是首先利用小波多尺度 ...

  3. unity调android ios 浏览器 uniwebview2.1使用

    uniwebview2.1使用 插件下载地址: http://download.csdn.net/detail/onafioo/9576200 示例 public class BrowserMgr { ...

  4. ES6入门系列二(数值的扩展)

    ES6 在 Number对象上新增了很多方法 1 .    Number.isFinite()判断是否为有限的数字 和全局的isFinite() 方法的区别是 isFinite('1') === tr ...

  5. Spring pom.xml配置

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...

  6. Mybatis分页中遇到的坑2

    站在巨人的肩膀上    http://crocutax.com/blog/mybatis-one-to-many-nestes-query-and-page-query Mybatis一对多嵌套查询和 ...

  7. SVN有任何胜过git的地方吗?

    SVN有任何胜过git的地方吗? 好的技术问题通常会引出技术专家们依据经验得出的深层次的观点.但对于这样的问题的答案也很容易演变成完全基于个人喜好的情绪倾泄,而不是根据事实.标准和具体的专业知识.就比 ...

  8. php—常见设计模式

    工厂模式 /** * 工厂方法或者类生成对象,而不是在代码中直接new * * 修改类名的时候,不需要每一个实例化语句都修改 * 只需要修改对应的工厂方法 * * Class Factory * @p ...

  9. A.出题人的RP值

    链接:https://ac.nowcoder.com/acm/contest/358/A 题意: 众所周知,每个人都有自己的rp值(是个非负实数),膜别人可以从别人身上吸取rp值. 然而当你膜别人时, ...

  10. CF #536div2E(dp)

    简单入门版:洛谷1280 时间交叉和倒序处理的思路是相同的,相较之下此题更多的条件是:1.每个任务可以在很多个时间点中选一个去做:2.会有捣乱. 解决方法:1.每个时间点选哪个根据规则的话是固定的可预 ...