zoukankan      html  css  js  c++  java
  • 我的AutoCAD二次开发之路 (一)

    原帖地址 http://379910987.blog.163.com/blog/static/33523797201011184552167/

    今天在改代码的时候,遇到了AddVertexAt方法的用法,不甚了解,遂转载

    AddVertexAt方法的说明  

    2010-12-01 20:52:21|  分类: AutoCAD.NET二次 |  标签:bulge  addvertexat  |字号 订阅

     
     

    .NETAutoCAD进行二次开发的时,会发现一个很奇观的现象,那就是居然没有矩形类,当然更没有什么圆角矩形了,不过这并不代表我们就不能绘制这些实体,AutoCAD中有一个很强大的类:Polyline,它可以完成直线段和圆弧混合线条的绘制。

    为了使用Polyline绘制曲线,必然会用到添加顶点的方法AddVertexAt方法,该方法的原型如下:

    public void AddVertexAt(Int32 index,Point2d pt,Double bulge,Double startWidth,Double endWidth);

    其中第一个为点的序号,第二个为一个平面点,第三个为凸度,第四个和第五个分别为起始宽度和结束宽度。除了第三个有点难度外,其他的都好理解,下面详细介绍一下这个凸度。

    根据Autodesk的说法,bulge是弓高的两倍和弦长的比值,或者是弧所对应圆心角的四分之一的正切值,如下图:

    AddVertexAt方法的说明 - 379910987 - 要努力~~

     

     

    那么凸度应该为:

    AddVertexAt方法的说明 - 379910987 - 要努力~~

     

    或者:

    AddVertexAt方法的说明 - 379910987 - 要努力~~

     

    事实上这两个不同的定义是等价的,下面给出证明:

    易知:

    AddVertexAt方法的说明 - 379910987 - 要努力~~

    于是有:

    AddVertexAt方法的说明 - 379910987 - 要努力~~

     

     

    可见这两种定义是完全等价的。不过,在绘制圆弧的时候,可根据具体情况的不同采用不用的方法得到b,例如已知圆心角,显然用正切的定义就很好计算凸度,而在易知两点和半径这种情况下画圆弧,则第一种定义求b会更方便。

    另外需要一提的是,凸度为正时绘制的圆弧都是逆时针方向的,所以在绘图时一定要规划好,如果确实需要绘制顺时针方向的圆弧,只需将该值变为负数即可。

    每多学一点知识,就少写一行代码
  • 相关阅读:
    POJ1094查分约束,判断关系是否唯一
    POJ1087DFS+匈牙利或者DINIC
    POJ1087DFS+匈牙利或者DINIC
    #Leetcode# 34. Find First and Last Position of Element in Sorted Array
    #Leetcode# 18. 4Sum
    #Leetcode# 16. 3Sum Closest
    #Leetcode# 15. 3Sum
    #Leetcode# 42. Trapping Rain Water
    #Leetcode# 63. Unique Paths II
    #Leetcode# 62. Unique Paths
  • 原文地址:https://www.cnblogs.com/loveclumsybaby/p/3394294.html
Copyright © 2011-2022 走看看