Attribuire il valore di trasparenza al layer tramite VBA

rod316

Utente poco attivo
Professione: pensionato
Software: autocad
Regione: basilicata
Ho creato un sub che mi permette di creare layer con le caratteristiche di nome, blocco, colore, tipo linea, descrizione ma non la trasparenza.
Non ho trovato nella documentazione in linea e altre fonti il motivo.

copio parte del codice che secondo le imputazioni che richiamano il Sub definiscono le caratteristiche dei layer.

Private Sub new_layer(nome_layer, colore_layer, layer_bloccato, spessore_linea, tipo_linea, stampa_layer, trasparenza_layer, congela_layer, descrizione_layer)
...
If UCase(congela_layer) = "SI" Then
layerObj.Freeze = True 'congela
Else
layerObj.Freeze = False ' non congela
End If

If UCase(stampa_layer) = "SI" Then
layerObj.Plottable = True ' stampa
Else
layerObj.Plottable = False ' non stampa
End If
...
end sub

layerObj._____ ???? _____=trasparenza_layer
 

rpor66

Utente Standard
Professione: Programmatore
Software: AutoCad, CadWorx, Lisp, VBA. YouTube: roberto portuese
Regione: Sicilia
Mi sa che se la sono dimenticata.
 

tracciatura.net

Utente poco attivo
Professione: Tecnico
Software: AutoCAD - Inventor - Tekla - Nesting
Regione: Piemonte
Si effettivamente non è stato implementato, puoi cambiare la trasparenza di ogni entità nel disegno con ent.EntityTransparency = 50# ma non puoi modificare i layer.
Però non dimentichiamo che se si può fare con comandi da prompt allora...
usiamo il SendCommand
Codice:
ThisDrawing.SendCommand "-LAYER" & vbCr & "TR" & vbCr & "50" & vbCr & "LAYER6" & vbCr
Ovviamente al posto di LAYER6 metti quello che ti interessa e questi comandi sono per la versione in italiano.
 

rod316

Utente poco attivo
Professione: pensionato
Software: autocad
Regione: basilicata
Salve, il metodo funziona.
Ho aggiunto soltanto a fine riga CHR(27) per non lasciare aperta la riga comando in attesa di un ulteriore input.
 

tracciatura.net

Utente poco attivo
Professione: Tecnico
Software: AutoCAD - Inventor - Tekla - Nesting
Regione: Piemonte
Certo che funziona! L'ho testato prima di scriverlo, altrimenti non lo avrei postato!
Per l'attesa di un ulteriore input non me ne sono accorto (chiedo scusa), basta aggiungere un altro carrige return
ThisDrawing.SendCommand "-LAYER" & vbCr & "TR" & vbCr & "40" & vbCr & "LAYER6" & vbCr & vbCr