写文章
 找回密码
 立即注册
搜索
0赞
赞赏
手机版
扫码打开手机版
把文字装进口袋

内核中二维图形处理的一些问题

MarquisWeng 2024-3-16 00:29:26
本帖最后由 MarquisWeng 于 2024-3-16 00:29 编辑

利用九韶内核编程中,发现在处理二维图形的时候有些结果让我比较困惑。

附件中的程序用8段二阶的Geom2BezierCurve构造一个O形。用这8个曲线构造8个Edge2D,然后组成一个Wire,再用这个Wire构造一个Face。如果在这一步直接看这个Face的话,得到的是一个由直线段组成的八边形(文件flatO1.shape)。在这一步如果把一大一小的两个O形Face做Bool操作的话,3.5.2内核下程序会crash(3.5.1内核中执行到用Wire构造Face这一步就crash了)。

如果对这个 Face 传给 MakePrism,那么可以得到一个正确的立体图形(文件thickO.shape),而且 Face 也变正确了(文件flatO2.shape)。

另外,还有一个问题请教一下:自己继承Geom2Curve或者Geom3Curve来构造Edge->Wire->Face,然后利用MakePrism构造立体图形中需要继承哪些函数?我自己实现了一个参数函数,把Geom3Curve中所有virtual 函数都override,CurveType 为 OtherCurve,发现如果这个曲线是个立体曲线的话,可以产生Wire,但是不能用MakeFace来阱一步得到Face。如果是平面曲线的话,可以生成形状正确的 Face,但是进一步用这个 Face来 MakePrism 的话就会遇到NoSuchObject的异常。要避免这种异常是额外需要继承更多函数还是继承出来的Curve不能用于MakePrism?谢谢!

OShape.zip

3.33 KB, 下载次数: 2, 下载积分: 金钱 -10

您需要登录后才可以回帖 立即登录
您好!感谢您对九韶内核的持续关注和使用!

关于第一个crash的问题,目前我们对2D的封装还不是太完善,感谢您的报告,我们会在接下来的发布中逐步完善和解决这个问题,在此期间,您可以使用3D的方式来walkaround。

关于第二个问题,九韶内核不支持自定义类型的曲线和曲面的任何操作,所有这些操作均会产生未定义行为。内核提供的曲线和曲面类型应该能满足通用的场景,我们理解中自定义的曲线/曲面描述通常会需要相应的算法配合,在九韶内核没有相应的算法实现的情况下,使用自定义曲线/曲面就没有实际意义。

如果方便的话,请告知我们更多的信息,以便我们更好地支持您。例如:是出于什么需求,想要解决什么问题想到了自定义曲线/曲面?谢谢!
MarquisWeng
2024-3-26 14:15
在自定义曲线/面无法完全使用九韶内核的情况下,希望九韶至少可以提供曲线/面拟合功能,可以直接从一些离散点得到经过这些点的线或者面。 
MarquisWeng
2024-3-26 14:08
谢谢回复。在计算中需要自定义曲线曲面的情况很多,比如粒子的运动轨道,函数的等值面等。这些用B-spline或者Bezier曲线/面来近似很不方便。 
2024-3-20 10:24:59
您好!感谢您提供的进一步信息。 您的需求已经收到,我们正在进行多方位评估,之后再择期安排。

在此期间,九韶有提供曲线/面拟合功能。 请查看2维曲线插值GeomAPIInterpolate2,3维曲线插值GeomAPIInterpolate3,2维曲线拟合GeomAPIPointsToBSpline2,3维曲线拟合GeomAPIPointsToBSpline3,曲面拟合GeomAPIPointsToBSplineSurface 相关文档,谢谢!
2024-3-28 14:57:21
返回顶部