在AutoCAD高版本中,直接使用 .HighLight() 亮显,可以不用设置参数。
不用参数,是将整个图元进行高亮显示。如果只让图元的一部分(如:长方体的一条边)高亮,就要用参数了。
在AutoCAD 2006版本中会提示必须设置参数
有方法解决:
C#
void m_HighlightEntity(ObjectId m_EntityId, bool m_bHighlight)
{
using (Transaction m_tr = m_db.TransactionManager.StartTransaction())
{
Entity m_Ent = (Entity)m_tr.GetObject(m_EntityId, OpenMode.ForRead,true);
ObjectId[] ids = new ObjectId【1】;
ids[0] = m_EntityId;
SubentityId index = new SubentityId(SubentityType.Null, 0);
FullSubentityPath path = new FullSubentityPath(ids, index);
if (m_bHighlight)
m_Ent.Highlight(path, true);
else
m_Ent.Unhighlight(path, true);
m_tr.Commit();
}
}
VB.net
Private Sub m_HighlightEntity(ByVal m_EntityId As ObjectId, ByVal m_bHighlight As Boolean)
Using m_tr As Transaction = Application.DocumentManager.MdiActiveDocument.Database.TransactionManager.StartTransaction()
Dim m_Ent As Entity = CType(m_tr.GetObject(m_EntityId, OpenMode.ForRead, True), Entity)
Dim ids As ObjectId() = New ObjectId(0) {}
ids(0) = m_EntityId
Dim index As New SubentityId(SubentityType.Null, 0)
Dim path As New FullSubentityPath(ids, index)
If m_bHighlight Then
m_Ent.Highlight(path, True)
Else
m_Ent.Unhighlight(path, True)
End If
m_tr.Commit()
End Using
End Sub
源自:
http://www.objectarx.net/foru ... wthread&tid=2867