- 积分
- 25209
- 明经币
- 个
- 注册时间
- 2003-6-27
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
发表于 2011-3-29 12:01:38
|
显示全部楼层
家在湾里 发表于 2011-3-29 09:56
回复 sieben 的帖子
这两个函数好难看懂啊!那我也可以写一个方法来求线段的交点吧?
呵呵,当然,所有的函数都是人写出来的,别人可以,当然你也可以!
下面是个示意,希望能帮到你。
/// <summary>
/// 求两条曲线的交点,本函数为应对Polyline.IntersectWith函数的Bug
/// Vrsion : 2009.02.10 Sieben
/// Vrsion : 2010.12.25 增加判断输入实体是否为平面实体
/// </summary>
/// <param name="ent1"></param>
/// <param name="ent2"></param>
/// <returns></returns>
public static Point3dCollection IntersectWith(Entity ent1, Entity ent2, Intersect intersectType)
{
try
{
if (ent1 is Polyline || ent2 is Polyline)
{
if (ent1 is Polyline && ent2 is Polyline)
{
Polyline pline1 = (Polyline)ent1;
Polyline pline2 = (Polyline)ent2;
return IntersectWith(pline1.ConvertTo(false), pline2.ConvertTo(false), intersectType);
}
else if (ent1 is Polyline)
{
Polyline pline1 = (Polyline)ent1;
return IntersectWith(pline1.ConvertTo(false), ent2, intersectType);
}
else
{
Polyline pline2 = (Polyline)ent2;
return IntersectWith(ent1, pline2.ConvertTo(false), intersectType);
}
}
else
{
Point3dCollection interPs = new Point3dCollection();
if (ent1.IsPlanar && ent2.IsPlanar)
ent1.IntersectWith(ent2, intersectType, new Plane(Point3d.Origin, Vector3d.ZAxis), interPs, 0, 0);
else
ent1.IntersectWith(ent2, intersectType, interPs, 0, 0);
return interPs;
}
}
catch (System.Exception ex)
{
return null;
}
} |
|