- UID
- 5043
- 积分
- 1347
- 精华
- 贡献
-
- 威望
-
- 活跃度
-
- D豆
-
- 在线时间
- 小时
- 注册时间
- 2002-5-13
- 最后登录
- 1970-1-1
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Highlighting AcDb2dpolyline vertices in a transaction
Question
How can I highlight a segment of an AcDb2dPolyline during a transaction? I
would also like to be able to select the highlighted segment while during the
transaction.
Answer
GS markers and subents are not implemented for old-style polyline vertices,
thus the AcDbEntity::highlight() command won't work for AcDb2dPolyline subentities.
It works only for the entire polyline.
However, you can fall back on ads_redraw with mode 3 to do the job. This works
perfectly well within transactions, with no need to call
AcTransaction::getObject().
Here's a snippet to illustrate:
//pPline points to an AcDb2dPolyline open for Read.
AcDbObjectIterator *pVertIter= pPline->vertexIterator();
AcDbObjectId vertexObjId;
//start a transaction
AcTransaction *pTrans = actrTransactionManager->startTransaction();
assert(pTrans != NULL);
//iterate through the oldstyle pline
//highlight each segment as you go
//numVerts == number of vertices in polyline
for (int vertexNumber = 0; vertexNumber < numVerts - 1;
vertexNumber++, pVertIter->step())
{
vertexObjId = pVertIter->objectId();
ads_name ename;
acdbGetAdsName(ename, vertexObjId);
ads_redraw(ename, 3);
//pause for user to see the effect
ads_getstring(0, "\nPress return to continue: ", dummy);
//always balance ads_redraw highlight calls in R14
ads_redraw(ename, 4);
}
actrTransactionManager->endTransaction();
delete pVertIter;
|
|