.NET
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

transparancy viewportoverride

4 REPLIES 4
SOLVED
Reply
Message 1 of 5
nijhuis
1192 Views, 4 Replies

transparancy viewportoverride

Hi,

 

Does anyone how to make a layer or an entity transparant within a viewport?

 

I figured out the following code found in:

http://through-the-interface.typepad.com/through_the_interface/2010/06/creating-transparent-hatches-...

 

It gives an error at New Autodesk.AutoCAD.Colors.Transparency(127)

 

 

 

Using transactie AsTransaction = DWG.TransactionManager.StartTransaction

 

Dim Layertable AsLayerTable = DWG.LayerTableId.GetObject(OpenMode.ForRead)

 

Dim VP AsViewport = transactie.GetObject(Doc.Editor.CurrentViewportObjectId, OpenMode.ForWrite)

 

Dim LVPO AsLayerViewportProperties

 

ForEach LayerID In Layertable

 

Dim LaagTabelRec AsLayerTableRecord = transactie.GetObject(LayerID, OpenMode.ForRead)

 

LVPO = LaagTabelRec.GetViewportOverrides(VP.Id)

LVPO.Transparency = New Autodesk.AutoCAD.Colors.Transparency(127)

 

Next

transactie.Commit()

EndUsing

 

4 REPLIES 4
Message 2 of 5
Alfred.NESWADBA
in reply to: nijhuis

Hi,

 

I used the following code and for me it does not interrupt at the line for setting the layer-override-transparency ..... as long as I have a layout active and I'm IN a viewport 😉

Of course it crashes if I have the tab "Model Space" active (so I don't have a layout active)

 

   <Runtime.CommandMethod("ADESK_VPLayerTransparency")> _
   Public Shared Sub ADESK_VPLayerTransparency()
      Dim tDwg As ApplicationServices.Document = ApplicationServices.Application.DocumentManager.MdiActiveDocument
      Dim tDwgLock As ApplicationServices.DocumentLock = Nothing
      Try
         tDwgLock = tDwg.LockDocument
         Using transactie As DatabaseServices.Transaction = tDwg.TransactionManager.StartTransaction

            Dim Layertable As DatabaseServices.LayerTable = CType(transactie.GetObject(tDwg.Database.LayerTableId, DatabaseServices.OpenMode.ForRead), DatabaseServices.LayerTable)
            Dim LVPO As DatabaseServices.LayerViewportProperties

            For Each LayerID As DatabaseServices.ObjectId In Layertable
               Dim LaagTabelRec As DatabaseServices.LayerTableRecord = CType(transactie.GetObject(LayerID, DatabaseServices.OpenMode.ForWrite), DatabaseServices.LayerTableRecord)
               LVPO = LaagTabelRec.GetViewportOverrides(tDwg.Editor.CurrentViewportObjectId)
               LVPO.Transparency = New Autodesk.AutoCAD.Colors.Transparency(127)
            Next

            transactie.Commit()
         End Using
      Catch ex As Exception
         Call MsgBox("Unknown error in 'ADESK_VPLayerTransparency'" & vbNewLine & ex.Message)
      Finally
         If tDwgLock IsNot Nothing Then tDwgLock.Dispose() : tDwgLock = Nothing
      End Try
   End Sub

 

HTH, - alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)
Message 3 of 5
nijhuis
in reply to: nijhuis

Thanks for your reply.

When i use new ...colors.transparency(127)  visual studio gives me an error. (see attachement 1)

 

i tried to replace 127 with an byte-value and visual studio gives me another error. (see attachement 2)

Message 4 of 5
Alfred.NESWADBA
in reply to: nijhuis

Hi,

 

what version of AutoCAD do you use? I tried it with 2012(64bit) and Option Strict ON, and I don't get a message, neither during code-writing nor during runtime.

Could you try:

LVPO.Transparency = New Autodesk.AutoCAD.Colors.Transparency(CByte(127))

 

- alfred -

------------------------------------------------------------------------------------
Alfred NESWADBA
Ingenieur Studio HOLLAUS ... www.hollaus.at ... blog.hollaus.at ... CDay 2024
------------------------------------------------------------------------------------
(not an Autodesk consultant)
Message 5 of 5
nijhuis
in reply to: nijhuis

I use autocad 2011 64bit with visual studio 2008.

 

i tried Cbyte(127) and that did the trick!

 

thanks!

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Autodesk DevCon in Munich May 28-29th


Autodesk Design & Make Report

”Boost