几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量  


返回   几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 » 仿射空间:CAX软件开发(三)二次开发与程序设计 » CAD二次开发 » AutoCAD二次开发 » DirectDWG
用户名
密码
注册 帮助 会员 日历 银行 搜索 今日新帖 标记论坛为已读


回复
 
主题工具 搜索本主题 显示模式
旧 2009-05-06, 08:02 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】oddbpolyline to odgepolyline3d and oddbspline to odgenurbcur

oddbpolyline to odgepolyline3d and oddbspline to odgenurbcur
oddbpolyline to odgepolyline3d and oddbspline to odgenurbcurve3d
hi,
i want to create an odgepolyline3d from the given oddbpolyline. what steps should i follow. my second query is that i have got an oddbspline entity now i want to create odgenurbcurve3d or odgesplineent3d. my main objective is to get a closest point on the curve from a given point (polyline and spline). i want to know whether they are implemented for ge spline and ge polyline. as i could not get them by using function oddbcurve::getcloseestpointto() i think it is not implemented for oddb. please let me know....
thank you very much in advance....
.................................................. .................................................. ........
nitesh.................
.................................................. .................................................. ........

odgecurve3d::closestpointto() is implemented, but only in common case, this way:
code:
odgepoint3d odgecurve3d::closestpointto (const odgepoint3d& point, const odgetol& tol ) const
{
odgeinterval domain; getinterval(domain);
if ( !domain.isbounded() ) throw oderror(enotimplemented); // should be implemented in descendant
odgepoint3darray smplpts;
odgedoublearray smplparams;
getsamplepoints(domain.lowerbound(), domain.upperbound(), tol.equalpoint(), smplpts, &smplparams);
if ( !smplpts.size() ) throw oderror(edegenerategeometry);
odgepoint3d res;
double dist = std::numeric_limits<double>::max();
for ( oduint32 i = 1; i < smplpts.size(); ++i )
{
odgelineseg3d seg(smplpts[i-1],smplpts[i]);
odgepoint3d p = seg.closestpointto( point, tol );
double l = (point - p).lengthsqrd();
if ( l < dist )
{
res = p;
dist = l;
}
}
return res;
}
for specific curves (e.g. odgepolyline3d, odgenurbcurve3d) more effective implementation is possible, but we don't have specific implementation yet.
btw, you can implement oddbcurve::getcloseestpointto() using protocol extensions - see odcurvefunctions sample.
sincerely yours,
george udov

thanks for reply george...
i want to know about one more thing. we know oddbpolyline has got segment type line and arc. does odgepolyline3d is similar to oddbpolyline? what i mean to say that does it supports line and arc segments.. and if yes then please can you suggest how will i create a odgepolyline3d, if i already have a oddbpolyline object.
thanks...

1) 3d polylines, in general, can't have arc segments. so odgepolyline3d can't have arc segments. odgepolyline2d can have arc segments, so you can convert ocs representation of oddbpolyline to odgepolyline2d.
2) odgepolyline2d has methods vertices() and bulges(). using these methods you can propagate ocs vertices and bulges from oddbpolyline to odgepolyline2d.
3) you can get ocs vertices and bulges from oddbpolyline using methods numverts(), getbulgeat(), getpointat().
4) note that oddbpolyline can have widths. neither odgepolyline2d nor odgepolyline3d can't have widths. so in common case there is no bijection between oddbpolyline and odgepolyline-s.
5) unfortunately, closestpointto() functionality is not implemented yet for odgecurve2d.
sincerely yours,
george udov
thanks alot george for the info....
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以回复主题
不可以上传附件
不可以编辑您的帖子

vB 代码开启
[IMG]代码开启
HTML代码关闭



所有的时间均为北京时间。 现在的时间是 07:19 PM.


于2004年创办,几何尺寸与公差论坛"致力于产品几何量公差标准GD&T | GPS研究/CAD设计/CAM加工/CMM测量"。免责声明:论坛严禁发布色情反动言论及有关违反国家法律法规内容!情节严重者提供其IP,并配合相关部门进行严厉查处,若內容有涉及侵权,请立即联系我们QQ:44671734。注:此论坛须管理员验证方可发帖。
沪ICP备06057009号-2
更多