CAD控件:COM接口实现自定义实体的方法

1、 实现步骤: 3

1、 实现步骤:

参考例子 :Src\MxDraw5.2\samples\ie\iedemoTest.htm

1) 增加自定义实体对象

调用DrawCustomEntity函数,绘制一个自定义实体对象

函数说明如下:

JS例子,下面代码绘制一个自定义实体,设置了两个属性,属性名分别” startpoint”,” endpoint”的两个点坐标,

// 插入自定义实体函数

function InsertCustomEntity() {

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

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

if (getPt.go() != 1)

return;

var frstPt = getPt.value();

if (frstPt == null)

return;

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

getSecondPt.message = "点取第二点";

getSecondPt.basePoint = frstPt;

getSecondPt.setUseBasePt(true);

if (getSecondPt.go() != 1)

return;

var secondPt = getSecondPt.value();

if (secondPt == null)

return;

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

ent.SetPoint("spt", frstPt);

ent.SetPoint("ept", secondPt);

};

2) 响应自定义事件,绘制自定义实体

需要响应DMxDrawXEvents::CustomEntity_Explode事件

帮助如下:

JS例子,下面例子,得到自实体的数据,根据自定义实体的两个必属,开始点,和结束点绘制一个直线

// 自定义实体绘制函数

function ExplodeFun(pCustomEntity, pWorldDraw) {

var sGuid = pCustomEntity.Guid;

if (sGuid == "TestMxCustomEntity") {

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

return;

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

if (stp == null)

return;

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

if (ept == null)

return;

var mxUtility = mxOcx.NewUtility();

var vec = ept.SumVector(stp);

vec.Mult(0.5);

var midPt = mxOcx.NewPoint();

midPt.x = stp.x;

midPt.y = stp.y;

midPt.Add(vec);

var dAng = vec.Angle();

dAng = mxUtility.GetDimAngle(dAng);

var dDis = 0.0;

dDis = stp.DistanceTo(ept);

var sTxt = "L=" + formatNumber(dDis, ‘#.##‘);

dAng = dAng * 180.0 / 3.14159265;

vec.RotateByXyPlan(3.14159265 / 2.0);

vec.Normalize();

vec.Mult(10);

stp.Add(vec);

ept.Add(vec);

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

vec.Mult(2);

stp.Sum(vec);

ept.Sum(vec);

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

pWorldDraw.SetColorIndex(1);

pWorldDraw.DrawText(midPt.x, midPt.y, sTxt, 5, dAng,

1, 2);

mxOcx.SetEventRet(1);

}

}

3) 响应自定义事件,返回自定义实体夹点

需要响应_DMxDrawXEvents::CustomEntity_getGripPoints事件

帮助如下:

JS例子,返回自定义实体的开始夹点,和结束夹点。

// 返回自定义实体夹点

function GetGripPointsFun(pCustomEntity) {

var sGuid = pCustomEntity.Guid;

if (sGuid == "TestMxCustomEntity") {

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

return;

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

if (stp == null)

return;

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

if (ept == null)

return;

var ret = mxOcx.NewResbuf();

ret.AddPoint(stp);

ret.AddPoint(ept);

mxOcx.SetEventRetEx(ret);

}

}

4) 响应自定义事件,夹点移动后的处理

需要响应CustomEntity_moveGripPointsAt事件

帮助如下:

JS例子,夹点移动后,修改自定义实体的属性

// 移动自定义实体夹点

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

var sGuid = pCustomEntity.Guid;

if (sGuid == "TestMxCustomEntity") {

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

return;

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

if (stp == null)

return;

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

if (ept == null)

return;

if (lGridIndex == 0) {

stp.x = stp.x + dOffsetX;

stp.y = stp.y + dOffsetY;

pCustomEntity.SetPoint("spt", stp);

}

else {

ept.x = ept.x + dOffsetX;

ept.y = ept.y + dOffsetY;

pCustomEntity.SetPoint("ept", ept);

}

mxOcx.SetEventRet(1);

}

}

时间: 2024-11-05 23:23:01

CAD控件:COM接口实现自定义实体的方法的相关文章

CAD控件使用教程 自定义实体的实现

自定义实体的实现 1 .       自定义实体... 3 1.1      说明... 3 1.2      类的类型信息... 3 1.3      worldDraw.. 4 1.4      getGripPoints 4 1.5      moveGripPointsAt 5 1.6      getGeomExtents 6 1.7      getOsnapPoints 6 1.8      explode. 7 1.9      dwgInFields 8 1.10    dwg

iOS开发UI篇—自定义瀑布流控件(接口设计)

iOS开发UI篇—自定义瀑布流控件(接口设计) 一.简单说明 1.关于瀑布流 电商应用要展示商品信息通常是通过瀑布流的方式,因为每个商品的展示图片,长度和商都都不太一样. 如果不用瀑布流的话,展示这样的格子数据,还有一种办法是使用九宫格. 但利用九宫格有一个缺点,那就是每个格子的宽高是一样的,如果一定要使用九宫格来展示,那么展示的商品图片可能会变形. 为了保证商品图片能够按照原来的宽高比进行展示,一般采用的是瀑布流的方式. 2.瀑布流的特点: 由很多的格子组成,但是每个格子的宽度和高速都是不确定

CAD控件 出三维控件!和手机CAD控件了,欢迎大家使用!

CAD控件 出三维控件!和手机CAD控件了,欢迎大家使用!(下载地址:百度搜索,梦.想.CAD控件) 支持文档格式,igs,stl,dwg,m3d等通用标准的3d文件格式 支持常见的三维实体建模 支持,旋转,沿路径,拉伸,偏移等方式建模 支持bool运算方式建模 支持32,64位系统,支持网页使用,提供ocx方式接口 兼容二维绘图功能 使用vc2010开发 原文地址:http://blog.51cto.com/10455293/2088403

梦想CAD控件关于比较问题

全图比较 怎么比较两个CAD图纸文件修改前后的不同部分呢?在工程图纸设计中,我们更多情况下可能需要对同一张工程图的前后修改部分进行对比,以确定工程图纸的改动部分及追溯原因,本教程演示了几种常见的比较方法. 实现图纸比较功能,首先将两个控件放入网页中,js代码如下: <p align="center">   <object classid="clsid:74A777F8-7A8F-4e7c-AF47-7074828086E2" id="Mx

activePDF Architect WBE 控件可动态产生自定义PDF文件,控制布局和页面元素

activePDF Architect WBE 控件提供了强健的API用于即时地构建完美的PDF报表.PDF表单等,可以添加文本.图像.表格.注释.表单字段等,并且可以完全控制格式和布局位置,直接从你应用程序产生高质量的PDF文档. 具体功能: 动态产生自定义PDF文件,控制布局和页面元素 从头开始构建PDF,使用强健的表格控件和其他工具创建专业的适合你商业标准的布局 整合交互式元素到PDF里,如超链接.表单字段.注释等 直接从应用程序或者数据库数据,快速且简便地创建大批量PDF文件 使用相似的

[WP8.1UI控件编程]Windows Phone自定义布局规则

3.2 自定义布局规则 上一节介绍了Windows Phone的系统布局面板和布局系统的相关原理,那么系统的布局面板并不一定会满足所有的你想要实现的布局规律,如果有一些特殊的布局规律,系统的布局面板是不支持,这时候就需要去自定义实现一个布局面板,在自定义的布局面板里面封装布局规律的逻辑.那么我们这一节从一个实际的需求出发,来实现一个自定义规律的布局面板.我们这一小节要实现的布局规律是把布局面板里面的子元素,按照圆形的排列规则进行排列,下面我们来看下这个例子的详细实现过程. 3.2.1 创建布局类

java android布局里的控件值 反射绑定给实体类,实体类绑定给控件,表单提交绑定很有用

注意了:根据实际情况,添加实体里字段的类型,控件类型的判断才可使用.这里控件只有TextView EditText 实体类字段只有String int类型,带值的控件添加tag ,值和实体类的字段值一致 package ice.ui.service; import java.lang.reflect.Field;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import jav

DevExpress XtraGrid网格控件示例六:自定义合并单元格

假设 "Order Date" 列中包含日期/时间值.如果视图的GridOptionsView.AllowCellMerge选项设置为true,若相邻两个单元格值是日期/时间值的话,这两个相邻单元格便会合并.下面的代码介绍了如何合并例单元格的日期部分,要覆盖默认的单元格合并机制,需要处理一下GridView.CellMerge事件. C# using DevExpress.XtraGrid.Views.Grid; // ... private void gridView1_CellMe

CAD控件,CAD插件使用教程:Android开发使用控件--开发环境的搭建

Android开发使用控件入门--环境搭建 2014-12-24 09:57     14人阅读     评论(0)     收藏         编辑     删除 CAD控件.CAD三维控件,手机控件 Android开发控件 软件名称(,梦,,想.CAD  ,控件) 1. 环境搭建: 3 1.1. 安装Eclipse 3 1.2. 下载JDK 3 1.3. 下载Android SDK 5 1.4. 给Eclipse 安装ADT插件  8 1.5. 运行Eclipse设置Android ADT