Autocad vb.net 选中对象 亮显

在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





Please follow WeChat's public account ByCAD