几何尺寸与公差论坛------致力于产品几何量公差标准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, 04:24 PM   #1
yang686526
高级会员
 
注册日期: 06-11
帖子: 14579
精华: 1
现金: 224494 标准币
资产: 234494 标准币
yang686526 向着好的方向发展
默认 【转帖】issue with 3dpolylines

issue with 3dpolylines
issue with 3dpolylines
i am reading in a dwg file and at one point i encounter 3dpolylines. i can iterate through the polylines but for some reason all vertices have (x,y,z) = (-5.xxxe-17,0,0), effectively (0,0,0). i tried explode and then capturing endpoints of individual lines to end up with the same results. am i doing something wrong?
here is the relevant part of the code:
code:
else if fff"> ( !strcmp(pent->isa()->name(), "acdb3dpolyline"fff"> )
{
oddb3dpolyline * ppoly3 = dynamic_castfff"><oddb3dpolyline*> (pent.get());
odrxobjectptrarray entities;
ppoly3->explode(entities);
int fff"> numents = entities.length();
for fff"> ( int fff"> i=0; i<numents; i++ )
{
const char fff"> *entname = entities[i]->isa()->name();
if fff"> ( !strcmp(entname, "acdbline"fff">) )
{
oddbline * pline = dynamic_castfff"><oddbline*> (entities[i].get());
#ifdeffff"> _debug
odgepoint3d start; pline->getstartpoint(start);
odgepoint3d end; pline->getendpoint(end);
#endi
plz don't ask me to post the dwg file as an attachment. it is our client's property and i cannot distribute it for ... you know why.
- jaydutt shuklafff">
last edited by jaydutt; 24th january 2006 at 10:56 amfff">.
question on explode()
is it possible for a polyline, 2dpolyline or 3dpolyline to explode into an something other than a line or another polyline of same kind?
- jaydutt shuklafff">
hi,
i would like to make a few notes about your code which i hope can help you:
1) the check if (!strcmp(pent->isa()->name(), "acdb3dpolyline") is ok, but a better style would be:
if (pent->iskindof(oddb3dpolyline::desc())).
then there is no need to get the entity string type name.
2) instead of dynamic_cast, you can use:
oddb3dpolylineptr p3dpline = pent;
the smart pointer should do the appropriate cast itself.
3) you can print the names of the exploded entities somewhere to check what their type is. in this case using isa()->name() is ok. btw i think the 3dpolyline would be exploded to lines. if all the verts are 0,0,0 and acad displays the file ok then may be the polylines are invalid?
best regards
chudomir
hi,
and could you provide us with some reduced file that contains no your client's property but a couple of such polylines ?
you also can save the file to dxf (text) and look for the polyline in it. it may happen that the file really contains 3d polyline with all vertices having coordinates you are talking about.
(you can search for acdb3dpolyline string and/or for its handle value)
sergey slezkin
yes sergey, that is the case. i ran the file through sample applications provided (odvectorizerex) and the file actually has the coords i am talking about. so nothing is wrong with the libs or my code. i just need to ignore zero-length lines.
and yes, polyline can explode in to either a series of arcs, or lines or any combination of them. that's what i have found out so far.
- jaydutt shuklafff">
yang686526离线中   回复时引用此帖
GDT自动化论坛(仅游客可见)
回复


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

高级搜索
显示模式

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

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

相似的主题
主题 主题发起者 论坛 回复 最后发表
【转帖】exploding 3dpolylines yang686526 DirectDWG 0 2009-05-05 10:16 AM


所有的时间均为北京时间。 现在的时间是 09:40 AM.


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