马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
7 a" g8 D& _" P
这是比较简单的部分了,可以参考现有书籍。在网上下载两个画线的函数: 直线: void LineCreate(AcGePoint3d ptStart,AcGePoint3d ptEnd)
, [6 ~3 u1 y2 r" `{" L2 J# y: N, S7 d
AcDbLine * pLine = new AcDbLine( ptStart , ptEnd );- i" z# X) b% v+ v! Y1 G' \
// 获得指向块表的指针
# j0 @- ]; k+ x0 i/ bAcDbBlockTable *pBlockTable; acdbHostApplicationServices()->workingDatabase()- f2 u# C' t S* H% `, O: l% e
->getBlockTable(pBlockTable, AcDb::kForRead);! ? p* X' ]1 F1 {
// 获得指向特定的块表记录(模型空间)的指针
8 K$ F' y& g4 @2 I6 A l8 GAcDbBlockTableRecord *pBlockTableRecord;4 P9 a8 c6 T' {3 V, ]
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);. j% J# Q( J! r/ i4 j2 ?
// 将AcDbLine类的对象添加到块表记录中
( w) J. E* I; M0 K& m5 }4 @( b% b2 kAcDbObjectId lineId;
+ w* K- t; T$ BpBlockTableRecord->appendAcDbEntity(lineId, pLine);
3 z* @* h4 q$ F/ z9 s* y8 r8 B k// 关闭图形数据库的各种对象& |/ ^) Q$ f0 V( l$ g" J3 n( |
pBlockTable->close();* ^% {' v- Y2 L1 o' A: ^3 c7 G$ y9 {
pBlockTableRecord->close();
5 T: A6 `8 v! K* }pLine->close();
1 s/ R% a2 b! A* Y9 m}. `4 p& ?4 C* m8 ~1 S7 A8 R
多线段:
. Y. x1 n) Z9 _/ Kvoid CreatePolyline(AcGePoint2dArray points ,double width)9 |4 ^: }# W) v' n4 Q
{
- W' }: x( P' n8 Y" D/ {+ Lint numVertices = points.length();
4 q! _" f7 W1 g9 v" xAcDbPolyline *pPoly = new AcDbPolyline(numVertices);
& }+ ^" q1 u" Y0 B$ gfor (int i = 0; i < numVertices; i++)5 u3 R2 q7 M; s) I! J2 U- d
{
5 J) D0 O( i( N3 p: Y, x gpPoly->addVertexAt(i, points.at(i), 0, width, width);
9 r9 [$ N' B; e! i; L [6 R}8 s7 o0 ]6 z* I( g! y6 i, u7 L
AcDbObjectId polyId;
/ a6 ~# N1 A* C) C% B2 d# V) PpolyId = PostToModelSpace(pPoly);3 z" ?- E4 M3 X( w; j
// return polyId;
9 m: [! X. E/ C; |7 e" ^. M}
) c& u1 L: ?' l; H% B6 _9 sstatic AcDbObjectId PostToModelSpace(AcDbEntity* pEnt)3 r' S r" d( s: y6 s
{8 T# Y) Y' e5 i3 G" ^# i
AcDbBlockTable *pBlockTable;
; O% O, U/ B' Y. \acdbHostApplicationServices()->workingDatabase() ->getBlockTable(pBlockTable, AcDb::kForRead);- a6 n+ s( y3 y
AcDbBlockTableRecord *pBlockTableRecord;* N$ U- `$ d: h4 x& h% y8 o
pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);
& g4 Y- a6 z& wAcDbObjectId entId;0 v' x" M4 t4 K; j# @5 H
pBlockTableRecord->appendAcDbEntity(entId, pEnt);
% j5 O" G: P5 |7 V$ m7 N: G6 SpBlockTable->close();0 e" N9 r. S; R; t6 |2 {
pBlockTableRecord->close();
7 @* Y: y" Z7 n- upEnt->close();' ? H& [4 ], E
return entId; }
5 ^; n6 N* y% o2 _; V需要注意的是:创建线段与显示线段需要不同的代码。 参考:http://www.colinchou.com/archives/242
$ G7 K5 k C2 e3 S! d
, e" i; C. p2 [! l
0 U1 h& W5 [; C0 }
: a) s7 s8 g6 L# l( C
4 _& A: G) b: Q: | D+ H$ u, C; p, r1 f% x& N0 Y- M. X
http://www.3dportal.cn/discuz/source/plugin/sina_xweibo_x3/xwb/images/bgimg/icon_logo.png 该贴已经同步到 colinzhoucn的微博 |