CAD交互绘制圆弧(com接口)
2024-08-27 17:13:13
在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);
}
}
最新文章
- IOS开发基础知识--碎片46
- 为Kindeditor控件添加图片自动上传功能
- 3ds max 分离对象
- jQuery日历和日期选取插件
- 符号渲染篇——Symbol
- [Everyday Mathematics]20150106
- Spring AOP原理解析
- 仅仅需手动添加一行代码就可以让Laravel4执行在SAE (v. 1.0.0)
- Postmark介绍
- .Net 内存对象分析
- jenkins:一键回滚站点集群
- Synchronized和java.util.concurrent.locks.Lockde区别联系
- spfa求图的最大流
- ASP.NET Web Pages 的冲突版本问题
- 【转】Spring项目启动报";Could not resolve placeholder";解决方法
- mysql5.7创建用户授权删除用户撤销授权
- 1. Apache Axis2 下载安装入门
- python-Django框架url分发实现返回时间
- SVN导出Maven项目
- Github网站css加载不出来的处理方法(转,亲测有效)
热门文章
- YTU 2906: 多重继承 日期与时间
- I.MX6 i2c_data_write_byte ioctl error: I/O error
- Java-Runoob-高级教程-实例-字符串:08. Java 实例 - 字符串分割(StringTokenizer)
- jquery $(function(){}) $(document).ready(function(){}); (function(){}); 的区别以及作用
- bzoj1933
- Pascal之while
- WinHTTrack
- QB学堂济南游记
- vultr 购买vps
- 进击的Python【第十四章】:Web前端基础之Javascript