马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
! h% w. v1 m5 p/ s, M
这是比较简单的部分了,可以参考现有书籍。在网上下载两个画线的函数: 直线: void LineCreate(AcGePoint3d ptStart,AcGePoint3d ptEnd)
& N& q! d6 n+ s. m9 L% o$ g{
' A3 R* E) R: K1 C8 SAcDbLine * pLine = new AcDbLine( ptStart , ptEnd );
3 b! h" X0 n$ @# F( T// 获得指向块表的指针/ w+ j; d, I# z% `
AcDbBlockTable *pBlockTable; acdbHostApplicationServices()->workingDatabase()2 t, c- p- s& e g9 O5 T: O
->getBlockTable(pBlockTable, AcDb::kForRead);
& w6 D& d- o- L// 获得指向特定的块表记录(模型空间)的指针
+ |! V3 y% g7 ?8 c6 J+ n# G9 d+ uAcDbBlockTableRecord *pBlockTableRecord;3 _0 A4 U* z$ D% W
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
4 {$ [+ [+ \( J5 o$ ^, k// 将AcDbLine类的对象添加到块表记录中( \2 y6 g1 ?( T( p4 ~# l
AcDbObjectId lineId;1 w, g6 B- I8 x/ P+ L- a8 m
pBlockTableRecord->appendAcDbEntity(lineId, pLine);
+ k3 ?( K+ K8 F# ^% ~// 关闭图形数据库的各种对象& H) I' k+ q+ ?2 ~: ?( a
pBlockTable->close();# J! {) a8 j2 S4 m
pBlockTableRecord->close();3 K/ S2 z' ]$ I9 S
pLine->close();7 F4 K$ K1 i* I; K7 Z }! U/ p
}
& i3 [. ^( O6 B+ p多线段:
9 \) y0 u/ L; E" Zvoid CreatePolyline(AcGePoint2dArray points ,double width)/ [6 d8 K0 u8 X) }& n) O. E3 G+ u
{
' B% ~8 b2 O& T: G+ b6 @+ x1 aint numVertices = points.length(); o' M( [0 G8 r% i- i# s
AcDbPolyline *pPoly = new AcDbPolyline(numVertices);5 L) y. H. ]& B* Y7 \4 l
for (int i = 0; i < numVertices; i++)
- K5 m: }# `( ~" |$ p{: B- D9 d* |6 Z7 d" I2 z7 W% N
pPoly->addVertexAt(i, points.at(i), 0, width, width);
: @. R% r1 p$ T' D/ w2 k0 {) y" P/ W( a}: c. b; t, L# ` W$ B$ V
AcDbObjectId polyId;
! n( b4 I3 c0 m% H( l1 apolyId = PostToModelSpace(pPoly);
# t# e6 Y* G# v// return polyId;5 @1 @* b! {5 c8 F4 U: y7 U
}
) {6 P3 H) r$ v/ G# C% J& o* Bstatic AcDbObjectId PostToModelSpace(AcDbEntity* pEnt)
, @( }7 \1 e! ]* o9 V0 Q( Z{8 T. u: W+ s4 ?1 V+ Q! J8 P
AcDbBlockTable *pBlockTable;7 x! J# x4 H& a
acdbHostApplicationServices()->workingDatabase() ->getBlockTable(pBlockTable, AcDb::kForRead);) b, V5 [( F& Y: X# }
AcDbBlockTableRecord *pBlockTableRecord;: m* C) B9 Z8 f/ k/ v: p; Y
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);9 S/ F1 H8 e- t9 T1 ?6 W
AcDbObjectId entId;
, b( p- |* |8 _* g( a+ a% upBlockTableRecord->appendAcDbEntity(entId, pEnt);
) [* ^6 ?* t3 S' d9 `% f- MpBlockTable->close();) h# k {0 r) K+ U3 D
pBlockTableRecord->close();
6 C* f% O+ G9 JpEnt->close();
* d3 H V# o1 Creturn entId; }
7 t& ^. [% ]; _1 P/ v需要注意的是:创建线段与显示线段需要不同的代码。 参考:http://www.colinchou.com/archives/2427 l/ b" M0 q7 E/ n
8 m; u A9 i2 ~& R; G. e3 _, ?3 L
& v) H& K5 C* ~' D4 e- b/ t3 K2 g
4 T m8 ^ J! U
: e& E8 h+ i2 l8 B7 ]& i
G; U( f" u* y/ H http://www.3dportal.cn/discuz/source/plugin/sina_xweibo_x3/xwb/images/bgimg/icon_logo.png 该贴已经同步到 colinzhoucn的微博 |