Hi,
Does anyone how to make a layer or an entity transparant within a viewport?
I figured out the following code found in:
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
Solved! Go to Solution.
Solved by nijhuis. Go to Solution.
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 -
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)
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 -