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

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

AddVertexAt方法的说明

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

 
 

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

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

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

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

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

那么凸度应该为:

或者:

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

易知:

于是有:

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

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

我的AutoCAD二次开发之路 (一)的更多相关文章

  1. AutoCAD二次开发——AutoCAD.NET API开发环境搭建

    AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...

  2. 1,下载和部署开发环境--AutoCAD二次开发

    环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...

  3. AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层

    AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层 AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层我理解的图层的作用大概是把 ...

  4. AutoCad 二次开发 文字镜像

    AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...

  5. AutoCad 二次开发 jig操作之标注跟随线移动

    AutoCad 二次开发 jig操作之标注跟随线移动 在autocad当中,我认为的jig操作的意思就是即时绘图的意思,它能够实时的显示出当前的操作,以便我们直观的感受到当前的绘图操作是什么样子会有什 ...

  6. AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)

    AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...

  7. 踏上Revit二次开发之路 1 准备工作

    1 准备工作 工欲善其事,必先利其器.在正式开始之前,我觉得有必要先盘点一下需要准备些什么. 1.1 硬件设备 PC机一台(谢绝Apple). 配置不能太低,至少要i3以上的cpu.4g以上的内存和支 ...

  8. Autocad中使用命令来调用python对Autocad二次开发打包后的exe程序

    在Autocad中直接调用Python二次开发程序是有必要的,下面介绍一种方法来实现这个功能: 其基本思路是:先将二次开发的程序打包为可执行程序exe,然后编写lsp文件,该文件写入调用exe程序的语 ...

  9. 承接 AutoCAD 二次开发 项目

    本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的 ...

随机推荐

  1. PHP文件缓存与memcached缓存 相比 优缺点是什么呢【总结】

    如果不考虑其他任何问题,只比较速度的话,那肯定是mem快,但他们各有优缺点.文件缓存优点:1.由于现在的硬盘都非常大,所有如果是大数据的时候,放硬盘里就比较合适,比如做一个cms网站,网站里有10万篇 ...

  2. Power-BI这些饼图你用过吗

    Power-BI预设了多种饼图,除了常见的饼图.圆环图之外,还有嵌套饼图.并列饼图.百分比饼图.百分比弧形图.半径玫瑰图.面积玫瑰图等.不同的应用场景选择不同的饼图,让你的数据展现更丰富.更合理.更实 ...

  3. [QT]抄—影像显示实验

    QtCreator新建一个Qt Application,命名为ImageView 在项目文件夹下添加gdal库,统一放在ImageView\gdal目录下. 右键单击项目,选择添加库命令,添加gdal ...

  4. CNContact对通讯录的基本使用(增删改查)

    /** * 注意:iOS9才有能使用 * 首先在工程里导入ContactsUI.framework和Contacts.framework两个框架 * * * 源代码的链接地址 * 链接: http:/ ...

  5. iOS SQLite 增删改查的封装(关系型)

    在工程里导入libsqlite3.tbd库(Xcode 7) #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder &l ...

  6. UICollection 重排 和汉字拼音

    http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-reordering/ NSMutableString *str = ...

  7. swap文件

    # dd if=/dev/zero of=/tmp/myswap bs=1M count=4096 # mkswap /tmp/myswap # swapon /tmp/myswap # vim /e ...

  8. Process启动.exe,当.exe内部抛出异常时,总会弹出一个错误提示框,阻止Process进入结束

    public class TaskProcess { [DllImport("kernel32.dll", SetLastError = true)] public static ...

  9. 推荐几个sql server牛人的博客

    Aaron Bertrand http://sqlblog.com/blogs/aaron_bertrand/ Brent Ozar www.brentozar.com/ Buck Woody htt ...

  10. PostgreSQL 同步复制(1master+2standby)

    OS: Red Hat Enterprise Linux Server release 6.5 (Santiago) PostgreSQL: postgresql-9.4.5.tar.bz2 mast ...