-
Notifications
You must be signed in to change notification settings - Fork 41
/
CHatchUtil.cpp
45 lines (38 loc) · 1.03 KB
/
CHatchUtil.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#include "stdafx.h"
#include "CHatchUtil.h"
#include "CDwgDatebaseUtil.h"
#include "dbhatch.h"
CHatchUtil::CHatchUtil()
{
}
CHatchUtil::~CHatchUtil()
{
}
AcDbObjectId CHatchUtil::Add(const AcDbObjectIdArray & loopids, const TCHAR * patName, double patternScale)
{
AcDbHatch *pHatch = new AcDbHatch();
AcGeVector3d vec(0, 0, 1);
pHatch->setNormal(vec);
pHatch->setElevation(0);
pHatch->setAssociative(true);
pHatch->setPattern(AcDbHatch::kPreDefined, patName);
pHatch->appendLoop(AcDbHatch::kExternal, loopids);
auto es = pHatch->evaluateHatch();
AcDbObjectId hatchid = CDwgDatebaseUtil::PostToModelSpace(pHatch);
if (acdbOpenObject(pHatch,hatchid, AcDb::kForRead)==Acad::eOk)
{
AcDbObjectIdArray assocentids;
pHatch->getAssocObjIds(assocentids);
for (auto i = 0; i < assocentids.length(); i++)
{
AcDbEntity *pEntity = NULL;
if (acdbOpenObject(pEntity,assocentids[i],AcDb::kForWrite)==Acad::eOk)
{
pEntity->addPersistentReactor(hatchid);
pEntity->close();
}
}
pHatch->close();
}
return AcDbObjectId();
}