在CAD设计时,需要绘制圆弧,用户可以在图面点圆弧起点,圆弧上的一点和圆弧的终点,这样就绘制出圆弧。

主要用到函数说明:

_DMxDrawX::DrawArc2

由圆弧上的三点绘制一个圆弧。详细说明如下:

参数 说明

DOUBLE dStartPointX

开始点X坐标

DOUBLE dStartPointY

开始点Y坐标

DOUBLE dMidPointX

圆弧上的一点X坐标

DOUBLE dMidPointY

圆弧上的一点Y坐标

DOUBLE dEndPointX

结束点X坐标

DOUBLE dEndPointY

结束点Y坐标

IMxDrawCustomEntity::Draw

把实体绘制到图上。一般用于动态拖放时,在拖放结束时,绘制到图上。

_DMxDrawXEvents::DynWorldDraw

动态拖放时的绘制事件。详细说明如下:

参数 说明

DOUBLE dX

当前鼠标位置X坐标

DOUBLE dY

当前鼠标位置Y坐标

IDispatch* pWorldDraw

IMxDrawWorldDraw对象,用于动态绘制

IDispatch* pData

IMxDrawCustomEntity对象,动态绘制数据

c#中实现代码说明:

动态拖放时的绘制事件:

private void DrawArc()
{
//制定圆弧的起点
MxDrawUiPrPoint getPt = new MxDrawUiPrPoint();
getPt.message = "制定圆弧的起点";
if(getPt.go() != MCAD_McUiPrStatus.mcOk)
{
return;
}
//制定圆弧的第二点
MxDrawUiPrPoint getSecondPt = new MxDrawUiPrPoint();
getSecondPt.message = "制定圆弧的第二点";
//基点
getSecondPt.basePoint = getPt.value();
//设置是否启用基点 true:使用 false:不使用
if (getSecondPt.go() != MCAD_McUiPrStatus.mcOk)
{
return;
}
//制定圆弧的端点
MxDrawUiPrPoint getThreePt = new MxDrawUiPrPoint();
getThreePt.message = "制定圆弧的端点";
MxDrawCustomEntity spDrawData = getThreePt.InitUserDraw("DrawArc");
spDrawData.SetPoint("basepoint", getPt.value());
spDrawData.SetPoint("secondpoint", getSecondPt.value());
if (getThreePt.go() != MCAD_McUiPrStatus.mcOk)
return;
spDrawData.Draw();
}

动态绘制圆弧:

private void axMxDrawX1_DynWorldDraw(object sender, AxMxDrawXLib._DMxDrawXEvents_DynWorldDrawEvent e)

{
MxDrawCustomEntity pCustomEntity = (MxDrawCustomEntity)e.pData;
MxDrawWorldDraw pWorldDraw = (MxDrawWorldDraw)e.pWorldDraw;
string sGuid = pCustomEntity.Guid; MxDrawPoint curPoint = new MxDrawPoint(); curPoint.x = e.dX;
curPoint.y = e.dY;
if(sGuid == "DrawArc")
{
MxDrawPoint point1 = pCustomEntity.GetPoint("basepoint");
if (point1 == null)
return;
MxDrawPoint point2 = pCustomEntity.GetPoint("secondpoint");
if (point2 == null)
return;
//由圆弧上的三点绘制一个圆弧
//参数一为开始点X坐标 ;参数二为开始点Y坐标 ;参数三为结束点X坐标
//参数四为结束点Y坐标 ;参数五为圆弧上的一点X坐标 ;参数六为圆弧上的一点Y坐标
pWorldDraw.DrawArc2(point1.x, point1.y, point2.x, point2.y, curPoint.x, curPoint.y);
}
}

最新文章

  1. IOS开发基础知识--碎片46
  2. 为Kindeditor控件添加图片自动上传功能
  3. 3ds max 分离对象
  4. jQuery日历和日期选取插件
  5. 符号渲染篇——Symbol
  6. [Everyday Mathematics]20150106
  7. Spring AOP原理解析
  8. 仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)
  9. Postmark介绍
  10. .Net 内存对象分析
  11. jenkins:一键回滚站点集群
  12. Synchronized和java.util.concurrent.locks.Lockde区别联系
  13. spfa求图的最大流
  14. ASP.NET Web Pages 的冲突版本问题
  15. 【转】Spring项目启动报"Could not resolve placeholder"解决方法
  16. mysql5.7创建用户授权删除用户撤销授权
  17. 1. Apache Axis2 下载安装入门
  18. python-Django框架url分发实现返回时间
  19. SVN导出Maven项目
  20. Github网站css加载不出来的处理方法(转,亲测有效)

热门文章

  1. YTU 2906: 多重继承 日期与时间
  2. I.MX6 i2c_data_write_byte ioctl error: I/O error
  3. Java-Runoob-高级教程-实例-字符串:08. Java 实例 - 字符串分割(StringTokenizer)
  4. jquery $(function(){}) $(document).ready(function(){}); (function(){}); 的区别以及作用
  5. bzoj1933
  6. Pascal之while
  7. WinHTTrack
  8. QB学堂济南游记
  9. vultr 购买vps
  10. 进击的Python【第十四章】:Web前端基础之Javascript