明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3968|回复: 7

为什么以Polyline为边界的填充图形不显示呢?

[复制链接]
发表于 2004-12-4 08:55:00 | 显示全部楼层 |阅读模式

AcDbHatch *p_AcDbHatch;

AcGeDoubleArray m_AcGeDoubleArray;

AcGePoint3d m_AcGepoint3d1;

AcGePoint3d m_AcGepoint3d2;

double m_bulge; for(j=0;j<p_line_lunkuo->numVerts();j++) //遍历AcDbPolyline各点

{

p_line_lunkuo->getPointAt(j,m_AcGepoint3d);

m_AcGepoint2d.x=m_AcGepoint3d.x;

m_AcGepoint2d.y=m_AcGepoint3d.y;

m_AcGePoint2dArray.append(m_AcGepoint2d);

p_line_lunkuo->getBulgeAt(j,m_bulge);

m_AcGeDoubleArray.append(m_bulge);

}

m_xdmianjilunkuoIdArray.append(p_line_lunkuo->objectId());

p_AcDbHatch=new AcDbHatch();

p_AcDbHatch->setNormal(normal);

p_AcDbHatch->setElevation(0.0);

p_AcDbHatch->setAssociative(Adesk::kTrue);

p_AcDbHatch->setPatternScale(5);

p_AcDbHatch->setPattern(AcDbHatch::kPreDefined,"ANSI31");

p_AcDbHatch->setHatchStyle(AcDbHatch::kNormal);

p_AcDbHatch->evaluateHatch();

p_AcDbHatch->setColorIndex(3);

p_AcDbHatch->appendLoop(AcDbHatch::kExternal,m_xdmianjilunkuoIdArray);//用这句不行

p_AcDbHatch->appendLoop(AcDbHatch::kExternal,m_AcGePoint2dArray, m_AcGeDoubleArray);// /用这句也不行

addEntityToDbs_ACDB_MODEL_SPACE(p_AcDbHatch);//这是一个将实体加入到数据库的函数

发表于 2004-12-4 10:14:00 | 显示全部楼层

回复

你加这句没有? p_AcDbHatch->close();
 楼主| 发表于 2004-12-4 18:41:00 | 显示全部楼层
addEntityToDbs_ACDB_MODEL_SPACE(p_AcDbHatch);函数中有将p_AcDbHatch关闭的语句。
发表于 2004-12-5 11:19:00 | 显示全部楼层
测试一下p_AcDbHatch->appendLoop的返回值,八成是边界有错误。
发表于 2004-12-5 15:45:00 | 显示全部楼层
你的函数中p_AcDbHatch->evaluateHatch();这一条语句是根据条模式来计算填充边界的.执行之前应该首先设置好填充边界和填充图案, p_AcDbHatch->appendLoop(AcDbHatch::kExternal,m_xdmianjilunkuoIdArray); 把这条语句移动前面,接着设置图案,就可以了
 楼主| 发表于 2004-12-6 20:42:00 | 显示全部楼层

p_AcDbHatch->appendLoop(AcDbHatch::kExternal,m_xdmianjilunkuoIdArray);

p_AcDbHatch->evaluateHatch();

addEntityToDbs_ACDB_MODEL_SPACE(p_AcDbHatch);//这是一个将实体加入到数据库的函数

这样改动多线段中是设置了填充图案,但是它不是立刻显示出来,而是将图形文件存盘后再读出,方显示出刚刚填充的图案。这我也是无意中发现的。因为代码照dipenghao先生所说的改动之后,还是不能立刻显示出填充图案,我就将图形存盘,再次打开后却显示出填充图案。连续式了几次,均是这个结果。下一步我该如何做呢?

发表于 2004-12-6 22:47:00 | 显示全部楼层
我运行的时候没有出现这个问题.我的函数给你你运新一下试试


有问题再告诉我

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2004-12-8 08:28:00 | 显示全部楼层

dipenghao先生,比照您的函数,我也将所有的有关p_AcDbHatch调用作是否出错检查,发现p_AcDbHatch->evaluateHatch(false);出错,以至于造成了填充图形未能即可显示的结果。(存盘关闭后再取回访可显示)但是,由于我的什么原因造成p_AcDbHatch->evaluateHatch(false);的调用出错呢?

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 10:48 , Processed in 0.189259 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表