CAD绘制图像的过程中,画圆的情况是非常常见的,用户可以在控件视区点取任意一点做为圆心,再动态点取半径绘制圆。

主要用到函数说明:

_DMxDrawX::DrawCircle

绘制一个圆。详细说明如下:

参数 说明

DOUBLE dCenterX

圆的中心X值

DOUBLE dCenterY

圆的中心Y值

DOUBLE dRadius

圆的半径

IMxDrawCustomEntity::Draw

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

_DMxDrawXEvents::DynWorldDraw

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

参数 说明

DOUBLE dX

当前鼠标位置X坐标

DOUBLE dY

当前鼠标位置Y坐标

IDispatch* pWorldDraw

IMxDrawWorldDraw对象,用于动态绘制

IDispatch* pData

IMxDrawCustomEntity对象,动态绘制数据

_DMxDrawX::DrawText

绘制一个单行文字。详细说明如下:

参数 说明

DOUBLE dPosX

文字的位置的X坐标

DOUBLE dPosY

文字的位置的Y坐标

BSTR pszText

文字内容字符串

DOUBLE dHeight

文字高度

DOUBLE dRotation

文字的旋转角度

SHORT horizontalMode

文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight

SHORT verticalMode

文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop

IMxDrawPoint::DistanceTo

计算两个点的距离。

c#中实现代码说明:

动态拖放时的绘制事件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
private void DrawCircle()
{
    // 创建一个与用户交互取点的对象。
    MxDrawUiPrPoint getPt = new MxDrawUiPrPoint();
    getPt.message = "第一点";
    if (getPt.go() != MCAD_McUiPrStatus.mcOk)
        return;
    MxDrawUiPrPoint getSecondPt = new MxDrawUiPrPoint();
    getSecondPt.message = "第二点";
    //调用
    MxDrawCustomEntity spDrawData = getSecondPt.InitUserDraw("TestDynDrawCircle");
    // 设置动态绘制参数.
    spDrawData.SetPoint("BasePoint", getPt.value());
    // 开始取第二个点。
    if (getSecondPt.go() != MCAD_McUiPrStatus.mcOk)
        return;
  
    spDrawData.Draw();
}

动态绘制圆:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
if (sGuid == "TestDynDrawCircle")
{
    MxDrawPoint pt1 = pCustomEntity.GetPoint("BasePoint");
  
    double dR = pt1.DistanceTo(curPoint);
    //计算面积(取绝对值)
    double arec = dR * dR * Math.PI;
    //计算周长
    double girth = 2 * dR * Math.PI;
    //变换视区长度
    double dHeigth = axMxDrawX1.ViewLongToDocCoord(15);
    //绘制一个单行文字
    //参数一为文字的位置的X坐标 ;参数二为文字的位置的Y坐标 ;参数三为文字内容字符串
    //参数四为文字高度;参数五为文字的旋转角度
    //参数六为文字的水平对齐方式,0=kTextLeft,1=kTextCenter,2=kTextRight
    //参数七文字的竖直对齐方式,1=kTextBottom,2=kTextVertMid,3=kTextTop
    pWorldDraw.DrawText(pt1.x, pt1.y, "面积:" + arec, dHeigth, 0, 0, MCAD_McVerticalAlignment.mcVerticalAlignmentTop);
    pWorldDraw.DrawText(pt1.x, pt1.y, "周长:" + girth, dHeigth, 0, 0, MCAD_McVerticalAlignment.mcVerticalAlignmentBottom);
    pWorldDraw.DrawCircle(pt1.x, pt1.y, dR);              
}

CAD动态绘制带面积周长的圆(com接口)的更多相关文章

  1. CAD如何动态绘制带面积周长的圆?

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

  2. CAD交互绘制带颜色宽度的直线(网页版)

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

  3. CAD交互绘制带颜色宽度的直线(com接口)

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

  4. CAD交互绘制带周长面积的矩形框(网页版)

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

  5. CAD交互绘制带周长面积的矩形框(com接口)

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

  6. C#使用多态求方形面积周长和圆的面积周长

    class class1 { public static void Main(string[] args) { //使用多态求矩形面积与周长和圆的面积与周长 Shape cl = ); double ...

  7. CAD动态绘制样条线(网页版)

    在CAD设计时,需要绘制样条线,用户可以设置样条线线重及颜色等属性. 主要用到函数说明: _DMxDrawX::SendStringToExecuteFun 把命令当着函数执行,可以传参数.详细说明如 ...

  8. 使用 Win2D 绘制带图片纹理的圆(或椭圆)

    使用 Win2D 绘制图片和绘制椭圆都非常容易,可是如何使用 Win2D 绘制图片纹理的椭圆呢? 本文内容 重力迷宫小球 Win2D 实现 关于 CanvasCommandList 重力迷宫小球 ▲ ...

  9. CAD动态绘制多段线(com接口)

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

随机推荐

  1. 使用深度双向LSTM模型构造社区问答系统

    所看到的. 首先强调一下,这个结构也是一个解决对照两个句子类似性的通用RNN解决方式,不只能够使用在问答社区.凡是涉及到对照两个句子或者实体关系的场合全然能够套用这个模型来解决.这点希望读者注意. 首 ...

  2. GRANT 授权

    sys(管理员)身份登录.创建usernamezsta_new create user zsta_new   identified by password   default tablespace Z ...

  3. bzoj2186【SDOI2008】沙拉公主的困惑

    2186: [Sdoi2008]沙拉公主的困惑 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 2363  Solved: 779 [id=2186& ...

  4. MySQL计算字段

    计算字段 数据库中存放的表是按列存放,可是有时客户机想获得的信息是若干列之间的组合,或者求和的值.这个组合或者求和的动作能够放在客户机应用程序来做.可是在数据库中实现更为高效. 这个新计算出来的结果就 ...

  5. Wireshark 抓包遇到 you don’t have permission to capture on that device mac 错误的解决方案

    Wireshark 抓包遇到 you don’t have permission to capture on that device mac 错误的解决方案 上次有篇博客讲了如何利用wireshark ...

  6. UVa 11475 - Extend to Palindrome

    題目:給你一個字符串,在後面拼接一部分使得它變成回文串,使得串最短.輸出這個回文串. 分析:KMP,dp.這裡利用KMP算法將串和它的轉置匹配,看結束時匹配的長度就可以. 因為串比较長.使用KMP比较 ...

  7. 在Centos6.5下Samba的简单配置

    本文的目的主要用来说明怎样在CentOS6.5的环境下配置出一个简单可用的samba服务,而且能够通过windows对其文件进行訪问 安装相关软件 # yum install samba samba- ...

  8. 重写description方法

    //重写description方法 //description建议大家在实际开发中都要重写这种方法.然后将类中有意义的成员变量打印出来,这样很方便我们调试程序 -(NSString *)descrip ...

  9. JavaScript检查是否包含某个字符

    转自:http://my.oschina.net/u/1450300/blog/389325 indexOf用法: indexOf 方法返回一个整数值,指出 String 对象内子字符串的开始位置.如 ...

  10. 328 Odd Even Linked List 奇偶链表

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...