【CAD NetAPI】 GetOffsetCurves
本文详细介绍了GetOffsetCurves函数在AutoCAD中的偏移操作原理及应用场景。该函数通过指定偏移距离,可对圆、圆弧、直线和多义线等图形对象进行外扩或收缩操作。文章通过彩色图示展示了不同对象(圆、圆弧、水平直线、多义线矩形等)在正负偏移量下的变化规律,并提供了测试代码示例。特别指出多义线的偏移方向与节点顺序(顺时针/逆时针)密切相关,且包含圆弧的多义线偏移规则与纯直线多义线一致。文末还
函数签名
public DBObjectCollection GetOffsetCurves(double offsetDist)
创建偏移副本,可实现偏移,或等距离外扩或收缩。
圆
红圆是原图,黄色圆圈是偏移10和20,绿色圆是偏移-10。这些圆的圆心相同,半径依次相差10。
正偏移,向圆外,即半径变大;负方向半径变小。

圆弧

弧和圆类似。
水平直线(起点在左)
红色线段是原始线段,起点在左,终点在右。黄色线段是偏移10和20,绿色线段是偏移-10。
正偏移,向线段上偏移;负偏移,线段下。
射线X起点和线段起点相同,方向也相同。逆时针旋转X180度,扫到的点在线段上;扫不到的,在线段下。
水平直线(起点在右)
红色线段是原始线段,起点在右,终点在左。黄色线段是偏移10和20,绿色线段是偏移-10。
正偏移,向线段上偏移;负偏移,线段下。
多义线矩形(节点顺时针)
和线段的方向相反。
正偏向,向内;负偏移,向外。和圆相反。
多义线(节点逆时针)
和线段的方向相反。
正偏向,向外;负偏移,向内。和圆相同。
包括圆弧的逆时针多义线段
方向和只包括直线的逆时针多义线完全相同。

比较少见的多义线


测试用代码
[CommandMethod("Test")]
public void Test()
{
CSelAEntity selDst = new CSelAEntity("请选择圆弧。");
selDst.AddCurve();
var prDst = selDst.Sel();
if (prDst.Status != PromptStatus.OK)
{
return ;
}
var db = CadBase.GetDefaultDatabase();
int x = 0, y = 10,x2=0,y2=0;
DBObjectCollection obs;
using (var tr = db.TransactionManager.StartTransaction())
{
Curve curve = tr.GetObject(prDst.ObjectId, OpenMode.ForWrite) as Curve;
obs = curve.GetOffsetCurves(y);
tr.Commit();
}
foreach (Entity e in obs)
{
e.ColorIndex = 2;
CEntHelp.AddEnity(e);
}
}
扩展阅读
| 我想对大家说的话 |
|---|
| 亲士CAD工具箱:支持AutoCad2013及以上 |
| 工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
| 学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
| 活到老,学到老。明朝中后期,大约50%的进士能当上堂官(副部及更高);能当上堂官的举人只有十余人。 |
| 子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。
更多推荐



所有评论(0)