乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 85|回复: 5

关于AcDbHatch的问题?

[复制链接]

1

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
9
发表于 2004-5-14 18:06:00 | 显示全部楼层 |阅读模式
我是一个初学者,请各位帮我看一下,下面是画一个园,然后填充,程序编译通过,但运行时没有填充出来。
void test()
{
                         ads_point pt1;
                       
                         if(ads_getpoint(NULL,"\n请输入插入点:",pt1)!=RTNORM) return;
                AcGePoint3d basePoint(pt1[0],pt1[1],pt1[2]);
        AcDbCircle *pCircle=new AcDbCircle;
        pCircle->setCenter(basePoint);
        pCircle->setRadius(1.5);
        pCircle->setColorIndex(1);        AcDbHatch* pHatch = new AcDbHatch();
                         AcGeVector3d normal(0.0, 0.0, 1.0);
                         pHatch->setNormal(normal);
                         pHatch->setElevation(0.0);
                         pHatch->setAssociative(Adesk::kTrue);
        pHatch->setPattern(AcDbHatch::kPreDefined, "SOLID");
                         pHatch->setHatchStyle(AcDbHatch::kNormal);
                       
               
        AcDbBlockTable *pBlockTable;
        acdbHostApplicationServices()->workingDatabase()->getSymbolTable(pBlockTable,AcDb::kForRead);
        AcDbBlockTableRecord *pBlockTableRecord;
        pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRecord,AcDb::kForWrite);
        pBlockTable->close();
       
        AcDbObjectId circleId;
         AcDbObjectId hatchId;
        AcDbObjectIdArray dbObjIds;
                pBlockTableRecord->appendAcDbEntity(circleId,pCircle);
                                 dbObjIds.setLogicalLength(0);
        dbObjIds.append(circleId);
       
                         pHatch->appendLoop(AcDbHatch::kDefault, dbObjIds);
                         pHatch->evaluateHatch();
        dbObjIds.setLogicalLength(0);
                         pHatch->getAssocObjIds(dbObjIds);
                         pBlockTableRecord->appendAcDbEntity(hatchId,pHatch);
                         pBlockTableRecord->close();
       
        AcDbEntity *pEnt;
        int numObjs = dbObjIds.length();
                         Acad::ErrorStatus es;
                         int i;
        for (i = 0; i addPersistentReactor(hatchId);
                                                                                         pEnt->close();
                                                         }
                         }
       
       
        pCircle->close();
                pHatch->close();
}
回复

使用道具 举报

1

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
14
发表于 2004-5-15 15:13:00 | 显示全部楼层
最好用範圍來畫.
AcDbHatch* pHatch = new AcDbHatch();
                                        AcGeVector3d normal(0.0, 0.0, 1.0);
                                        pHatch->setNormal(normal);
                                        pHatch->setElevation(0.0);
                                        pHatch->setAssociative(Adesk::kFalse);
                                       
                                        pHatch->setHatchStyle(AcDbHatch::kNormal);
                                        pHatch->setPatternScale(10.0);
                                        AcGePoint2dArray vertexPts;
                                        AcGeDoubleArray vertexBulges;
                                        vertexPts.setPhysicalLength(0).setLogicalLength(4);
                                        vertexPts[0].set(m_d/2,0);
                                        vertexPts[1].set(0,m_d/2);
                                        vertexPts[2].set(0,0);
                                        vertexPts[3].set(m_d/2,0);
                                        vertexBulges.setPhysicalLength(0).setLogicalLength(4);
                                        vertexBulges[0] = 0.414;
                                        vertexBulges[1] = 0;
                                        vertexBulges[2] = 0;
                                        vertexBulges[3] = 0;
                                        color.setColorIndex(150);
                                        pHatch->setColor(color);
                                        pHatch->appendLoop(AcDbHatch::kExternal, vertexPts, vertexBulges);
                                        pHatch->setPattern(AcDbHatch::kUserDefined, "SOLID");
代替你畫的部分
回复

使用道具 举报

1

主题

5

帖子

2

银币

初来乍到

Rank: 1

铜币
9
发表于 2004-5-16 10:12:00 | 显示全部楼层
非常感谢chang,但是我试了你提供的代码仍然没有填充出来,希望给出一段画一个园,并用solid填充的完整代码。
回复

使用道具 举报

24

主题

48

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
144
发表于 2004-5-18 09:36:00 | 显示全部楼层
要想用其他的颜色填充怎么实现啊?
回复

使用道具 举报

8

主题

19

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
51
发表于 2004-7-14 21:04:00 | 显示全部楼层
补充pHatch->updateOpen()在close()之前;
回复

使用道具 举报

1

主题

10

帖子

1

银币

初来乍到

Rank: 1

铜币
14
发表于 2004-8-7 16:58:00 | 显示全部楼层

你的方法是hatch关联园的ID,但是园没有加到模型空间。也就是说没有ID.当然出现不了hatch。且要加到模型空间 你将我的hatch加到模型空间,就好了。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 20:41 , Processed in 0.223262 second(s), 64 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表