View SetVisibility Error

View SetVisibility Error

Anonymous
Not applicable
621 Views
1 Reply
Message 1 of 2

View SetVisibility Error

Anonymous
Not applicable

I'm having trouble getting View.SetVisibility to work.  It keeps throwing a ModificationOutsideTransactionException error when it hits rvtView.setVisibility(rvtCategory, blnVisible)

 

Here's my code:

 

   

PrivateSub SetCategoryVisibility(ByRef rvtView AsView, ByRef blnVisible AsBoolean)

       

Dim rvtFilterDimensions As Autodesk.Revit.DB.ElementClassFilter = New Autodesk.Revit.DB.ElementClassFilter(GetType(Autodesk.Revit.DB.Dimension))

       

Dim rvtFilterHosts As Autodesk.Revit.DB.ElementClassFilter = New Autodesk.Revit.DB.ElementClassFilter(GetType(Autodesk.Revit.DB.HostObject))

       

Dim rvtFilterReferencePlanes As Autodesk.Revit.DB.ElementClassFilter = New Autodesk.Revit.DB.ElementClassFilter(GetType(Autodesk.Revit.DB.ReferencePlane))

       

Dim a As Generic.IList(OfElementFilter) = New Generic.List(OfElementFilter)

        a.Add(rvtFilterDimensions)

        a.Add(rvtFilterHosts)

        a.Add(rvtFilterReferencePlanes)

       

Dim rvtFilterOr AsLogicalOrFilter = NewLogicalOrFilter(a)

       

Dim rvtCollector AsNew Autodesk.Revit.DB.FilteredElementCollector(m_rvtDBDoc)

       

Dim ilistElements As Generic.IList(Of Autodesk.Revit.DB.Element)

       

Dim rvtTransStatus AsTransactionStatus

       

Using rvtGroup AsTransactionGroup = NewTransactionGroup(m_rvtDBDoc)

           

Try

                rvtCollector.WherePasses(rvtFilterOr)

                ilistElements = rvtCollector.ToElements()

                rvtTransStatus = rvtGroup.Start(

"Category Visibility")

               

ForEach rvtElement In ilistElements

                   

IfNot rvtElement.Category IsNothingThen

                       

Dim rvtCategory As Autodesk.Revit.DB.Category = rvtElement.Category

                       

If rvtCategory.AllowsVisibilityControl(rvtView) Then

                           

Using rvtTransaction AsTransaction = NewTransaction(m_rvtDBDoc)

                               

Dim rvtStatus AsTransactionStatus

                               

Try

                                    rvtStatus = rvtTransaction.Start(rvtCategory.Name)

                                   

Debug.Print(rvtView.getVisibility(rvtCategory))

                                    rvtView.setVisibility(rvtCategory, blnVisible)

                                    rvtStatus = rvtTransaction.Commit()

                                    m_rvtUIDoc.RefreshActiveView()

                                    Threading.

Thread.Sleep(2000)

                               

Catch e As Exceptions.ModificationOutsideTransactionException

                                   

If rvtStatus = TransactionStatus.Started Then rvtTransaction.RollBack()

                                   

Dim message AsString = e.ToString()

                               

Catch e AsException

                                   

If rvtStatus = TransactionStatus.Started Then rvtTransaction.RollBack()

                                   

Dim message AsString = e.ToString()

                               

EndTry

                           

EndUsing

                       

EndIf

                   

EndIf

               

Next

           

Catch e As Exceptions.ModificationOutsideTransactionException

               

If rvtTransStatus = TransactionStatus.Started Then rvtGroup.RollBack()

               

Dim message AsString = e.ToString()

           

Catch e AsException

               

If rvtTransStatus = TransactionStatus.Started Then rvtGroup.RollBack()

               

Dim message AsString = e.ToString()

           

EndTry

            rvtGroup.Assimilate()

       

EndUsing

   

EndSub

0 Likes
622 Views
1 Reply
Reply (1)
Message 2 of 2

Joe.Ye
Alumni
Alumni

 

SetVisibility() works well in Revit if it is in a started transaction.

 

Your code looks no problem. SeVisibility is in called within the open transaction. Probably the issue is not in this code fragment.

 

If there is a reproducible code project and the test rvt file, that would be helpful to detect issue,

 



Joe Ye
Contractor
Developer Technical Services
Autodesk Developer Network
0 Likes