我的AutoCAD二次开发之路 (一)
原帖地址 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二次开发之路 (一)的更多相关文章
- AutoCAD二次开发——AutoCAD.NET API开发环境搭建
AutoCAD二次开发工具:1986年AutoLisp,1989年ADS,1990年DCL,1993年ADS-RX,1995年ObjectARX,1996年Active X Automation(CO ...
- 1,下载和部署开发环境--AutoCAD二次开发
环境需求为: AutoCAD 2020版 ObjectARX SDK 下载地址:https://www.autodesk.com/developer-network/platform-technolo ...
- AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层
AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层 AutoCad 二次开发 .net 之层表的增加 删除 修改图层颜色 遍历 设置当前层我理解的图层的作用大概是把 ...
- AutoCad 二次开发 文字镜像
AutoCad 二次开发 文字镜像 参考:https://adndevblog.typepad.com/autocad/2013/10/mirroring-a-dbtext-entity.html 在 ...
- AutoCad 二次开发 jig操作之标注跟随线移动
AutoCad 二次开发 jig操作之标注跟随线移动 在autocad当中,我认为的jig操作的意思就是即时绘图的意思,它能够实时的显示出当前的操作,以便我们直观的感受到当前的绘图操作是什么样子会有什 ...
- AutoCAD二次开发-使用ObjectARX向导创建应用程序(HelloWorld例子)
AutoCAD2007+vs2005 首先自己去网上搜索下载AutoCAD2007的ARX开发包. 解压后如下 打开后如下 classmap文件夹为C++类和.net类的框架图,是一个DWG文件. d ...
- 踏上Revit二次开发之路 1 准备工作
1 准备工作 工欲善其事,必先利其器.在正式开始之前,我觉得有必要先盘点一下需要准备些什么. 1.1 硬件设备 PC机一台(谢绝Apple). 配置不能太低,至少要i3以上的cpu.4g以上的内存和支 ...
- Autocad中使用命令来调用python对Autocad二次开发打包后的exe程序
在Autocad中直接调用Python二次开发程序是有必要的,下面介绍一种方法来实现这个功能: 其基本思路是:先将二次开发的程序打包为可执行程序exe,然后编写lsp文件,该文件写入调用exe程序的语 ...
- 承接 AutoCAD 二次开发 项目
本人有多年的CAD开发经验,独立完成多个CAD二次开发项目.熟悉.net及Asp.net开发技术,和Lisp开发技术. 现在成立了工作室,独立承接CAD二次开发项目.结项后提供源码及开发文档,有需要的 ...
随机推荐
- E1114 Temp Ambient
这2天DELL服务器的指示灯变为了黄色 ,显示“ E1114 Ambient Temp exceeds allowed range“ 原来是周围环境温度超出了许可范围 ,难道最近的天真的是太冷了 ”
- Gym 101102A Coins -- 2016 ACM Amman Collegiate Programming Contest(01背包变形)
A - Coins Time Limit:3000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Descript ...
- Fiddler-005-获取 Cookie 信息
随着网络安全(例如:登录安全等)要求的不断提升,越来越多的登录应用在登录时添加了验证码登录,而验证码生成算法也在不断的进化,因而对含登录态的自动化测试脚本运行造成了一定程度的困扰,目前解决此种问题的方 ...
- c#上传文件(二)使用文件流保存文件
1.html代码: <asp:FileUpload runat="server" ID="UpLoadFile"/> <asp:Button ...
- CDN的原理以及其中的一些技术
本质:DNS解析CNAME时最终会请求到阿里CDN的DNS服务器上,阿里CDN的DNS服务器会判断请求ip的物理区域是哪里,同时根据各CDN节点的压力做全局的负载均衡 返回合适CDN节点的ip. ht ...
- Linux内核socket优化项
Linux内核socket优化项 vi /etc/sysctl.confnet.core.netdev_max_backlog = 30000 每个网络接口接收数据包的速率比内核处理这些包的速率快时 ...
- APICloud提供适用于命令行的开发工具,开发更具极客精神!
APICloud近期大动作不断,上周刚刚支持Atom编辑器,并推出核心开发工具库.本周又为开发者提供了一款超轻便的新开发工具--CLI工具! 操作系统: Mac/Windows/Linux nodej ...
- Kafka使用入门教程 简单介绍
介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以 ...
- 使单元格td内部都是超链接
楼主是想要鼠标指针移到单元格时就显示手形,而且点击单元格的任何地方都可以打开链接,来替换原来要鼠标指针移到链接文字时才显示手形,和必须点中链接文字才能打开链接? 试一下: <table> ...
- Java Lock ReentrantLock ReentrantReadWriteLock
Lock与Synchronized的区别: 1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现: 2)synchronized在发生异 ...