函数签名
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++**实现。




