Visual styles allow you to control the way objects appear on screen and during output. Visual styles are stored in a drawing as part of the Visual Style dictionary and they can all be customized. Since all visual styles can be customized, you cannot expect each drawing contains all the standard visual styles that are part of the drawing templates that ship with AutoCAD. A visual style is represented by the DBVisualStyle class.
This example lists the visual styles that are stored in the current drawing.
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Colors
Imports Autodesk.AutoCAD.GraphicsInterface
' Lists the available visual styles
<CommandMethod("ListVisualStyle")> _
Public Shared Sub ListVisualStyle()
' Get the current document and database, and start a transaction
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
Dim vStyles As DBDictionary = _
acTrans.GetObject(acCurDb.VisualStyleDictionaryId, _
OpenMode.ForRead)
' Output a message to the Command Line history
acDoc.Editor.WriteMessage(vbLf & "Visual styles: ")
' Step through the dictionary
For Each entry As DBDictionaryEntry In vStyles
' Get the dictionary entry
Dim vStyle As DBVisualStyle = _
vStyles.GetAt(entry.Key).GetObject(OpenMode.ForRead)
' If the visual style is not marked for internal use then output its name
If vStyle.InternalUseOnly = False Then
' Output the name of the visual style
acDoc.Editor.WriteMessage(vbLf & " " & vStyle.Name)
End If
Next
End Using
End Sub
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.GraphicsInterface;
// Lists the available visual styles
[CommandMethod("ListVisualStyle")]
public static void ListVisualStyle()
{
// Get the current document and database, and start a transaction
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
DBDictionary vStyles = acTrans.GetObject(acCurDb.VisualStyleDictionaryId,
OpenMode.ForRead) as DBDictionary;
// Output a message to the Command Line history
acDoc.Editor.WriteMessage("\nVisual styles: ");
// Step through the dictionary
foreach (DBDictionaryEntry entry in vStyles)
{
// Get the dictionary entry
DBVisualStyle vStyle = vStyles.GetAt(entry.Key).GetObject(OpenMode.ForRead) as DBVisualStyle;
// If the visual style is not marked for internal use then output its name
if (vStyle.InternalUseOnly == false)
{
// Output the name of the visual style
acDoc.Editor.WriteMessage("\n " + vStyle.Name);
}
}
}
}
This example creates or edits a visual style named MyVS.
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.Colors
Imports Autodesk.AutoCAD.GraphicsInterface
' Creates a new visual style
<CommandMethod("CreateVisualStyle")> _
Public Shared Sub CreateVisualStyle()
' Get the current document and database, and start a transaction
Dim acDoc As Document = Application.DocumentManager.MdiActiveDocument
Dim acCurDb As Database = acDoc.Database
Using acTrans As Transaction = acCurDb.TransactionManager.StartTransaction()
Dim vStyles As DBDictionary = _
acTrans.GetObject(acCurDb.VisualStyleDictionaryId, _
OpenMode.ForRead)
Try
' Check to see if the "MyVS" exists or not
Dim vStyle As DBVisualStyle
If vStyles.Contains("MyVS") = True Then
vStyle = acTrans.GetObject(vStyles.GetAt("MyVS"), _
OpenMode.ForWrite)
Else
vStyles.UpgradeOpen()
' Create the visual style
vStyle = New DBVisualStyle
vStyles.SetAt("MyVS", vStyle)
' Add the visual style to the dictionary
acTrans.AddNewlyCreatedDBObject(vStyle, True)
End If
' Set the description of the visual style
vStyle.Description = "My Visual Style"
vStyle.Type = VisualStyleType.Custom
' Face Settings (Opacity, Face Style, Lighting Quality, Color,
' Monochrome color, Opacity, and Material Display)
vStyle.SetTrait(VisualStyleProperty.FaceModifier, _
VSFaceModifiers.FaceOpacityFlag, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.FaceLightingModel, _
VSFaceLightingModel.Gooch, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.FaceLightingQuality, _
VSFaceLightingQuality.PerPixelLighting, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.FaceColorMode, _
VSFaceColorMode.ObjectColor, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.FaceMonoColor, _
Color.FromColorIndex(ColorMethod.ByAci, 1), _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.FaceOpacity, 0.5, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.DisplayStyle, _
VSDisplayStyles.MaterialsFlag + _
VSDisplayStyles.TexturesFlag, _
VisualStyleOperation.Set)
' Lighting (Enable Highlight Intensity,
' Highlight Intensity, and Shadow Display)
vStyle.SetTrait(VisualStyleProperty.FaceModifier, _
vStyle.GetTrait(VisualStyleProperty.FaceModifier).Int + _
VSFaceModifiers.SpecularFlag, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.DisplayStyle, _
vStyle.GetTrait(VisualStyleProperty.DisplayStyle).Int + _
VSDisplayStyles.LightingFlag, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.FaceSpecular, _
45.0, VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.DisplayShadowType, _
VSDisplayShadowType.Full, _
VisualStyleOperation.Set)
' Environment Settings (Backgrounds)
vStyle.SetTrait(VisualStyleProperty.DisplayStyle, _
vStyle.GetTrait(VisualStyleProperty.DisplayStyle).Int + _
VSDisplayStyles.BackgroundsFlag, _
VisualStyleOperation.Set)
' Edge Settings (Show, Number of Lines, Color, and Always on Top)
vStyle.SetTrait(VisualStyleProperty.EdgeModel, VSEdgeModel.Isolines, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeIsolines, _
6, VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeColor, _
Color.FromColorIndex(ColorMethod.ByAci, 2), _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeModifier, _
vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int + _
VSEdgeModifiers.AlwaysOnTopFlag, _
VisualStyleOperation.Set)
' Occluded Edges (Show, Color, and Linetype)
If Not (vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int And _
VSEdgeStyles.ObscuredFlag) > 0 Then
vStyle.SetTrait(VisualStyleProperty.EdgeStyle, _
vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int + _
VSEdgeStyles.ObscuredFlag, _
VisualStyleOperation.Set)
End If
vStyle.SetTrait(VisualStyleProperty.EdgeObscuredColor, _
Color.FromColorIndex(ColorMethod.ByAci, 3), _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeObscuredLinePattern, _
VSEdgeLinePattern.DoubleMediumDash, _
VisualStyleOperation.Set)
' Intersection Edges (Color and Linetype)
If Not (vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int And _
VSEdgeStyles.IntersectionFlag) > 0 Then
vStyle.SetTrait(VisualStyleProperty.EdgeStyle, _
vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int + _
VSEdgeStyles.IntersectionFlag, _
VisualStyleOperation.Set)
End If
vStyle.SetTrait(VisualStyleProperty.EdgeIntersectionColor, _
Color.FromColorIndex(ColorMethod.ByAci, 4), _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeIntersectionLinePattern, _
VSEdgeLinePattern.ShortDash, _
VisualStyleOperation.Set)
' Silhouette Edges (Color and Width)
If Not (vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int And _
VSEdgeStyles.SilhouetteFlag) > 0 Then
vStyle.SetTrait(VisualStyleProperty.EdgeStyle, _
vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int + _
VSEdgeStyles.SilhouetteFlag, _
VisualStyleOperation.Set)
End If
vStyle.SetTrait(VisualStyleProperty.EdgeSilhouetteColor, _
Color.FromColorIndex(ColorMethod.ByAci, 5), _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeSilhouetteWidth, 2, _
VisualStyleOperation.Set)
' Edge Modifiers (Enable Line Extensions, Enable Jitter,
' Line Extensions, Jitter, Crease Angle,
' and Halo Gap)
If Not (vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int And _
VSEdgeModifiers.EdgeOverhangFlag) > 0 Then
vStyle.SetTrait(VisualStyleProperty.EdgeModifier, _
vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int + _
VSEdgeModifiers.EdgeOverhangFlag, _
VisualStyleOperation.Set)
End If
If Not (vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int And _
VSEdgeModifiers.EdgeJitterFlag) > 0 Then
vStyle.SetTrait(VisualStyleProperty.EdgeModifier, _
vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int + _
VSEdgeModifiers.EdgeJitterFlag, _
VisualStyleOperation.Set)
End If
vStyle.SetTrait(VisualStyleProperty.EdgeOverhang, 3, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeJitterAmount, _
VSEdgeJitterAmount.JitterMedium, _
VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeCreaseAngle, _
0.3, VisualStyleOperation.Set)
vStyle.SetTrait(VisualStyleProperty.EdgeHaloGap, _
5, VisualStyleOperation.Set)
Catch es As Autodesk.AutoCAD.Runtime.Exception
MsgBox(es.Message)
Finally
acTrans.Commit()
End Try
End Using
End Sub
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Colors;
using Autodesk.AutoCAD.GraphicsInterface;
// Creates a new visual style
[CommandMethod("CreateVisualStyle")]
public static void CreateVisualStyle()
{
// Get the current document and database, and start a transaction
Document acDoc = Application.DocumentManager.MdiActiveDocument;
Database acCurDb = acDoc.Database;
using (Transaction acTrans = acCurDb.TransactionManager.StartTransaction())
{
DBDictionary vStyles = acTrans.GetObject(acCurDb.VisualStyleDictionaryId,
OpenMode.ForRead) as DBDictionary;
try
{
// Check to see if the "MyVS" exists or not
DBVisualStyle vStyle = default(DBVisualStyle);
if (vStyles.Contains("MyVS") == true)
{
vStyle = acTrans.GetObject(vStyles.GetAt("MyVS"), OpenMode.ForWrite) as DBVisualStyle;
}
else
{
vStyles.UpgradeOpen();
// Create the visual style
vStyle = new DBVisualStyle();
vStyles.SetAt("MyVS", vStyle);
// Add the visual style to the dictionary
acTrans.AddNewlyCreatedDBObject(vStyle, true);
}
// Set the description of the visual style
vStyle.Description = "My Visual Style";
vStyle.Type = VisualStyleType.Custom;
// Face Settings (Opacity, Face Style, Lighting Quality, Color,
// Monochrome color, Opacity, and Material Display)
vStyle.SetTrait(VisualStyleProperty.FaceModifier, (int)VSFaceModifiers.FaceOpacityFlag, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.FaceLightingModel, (int)VSFaceLightingModel.Gooch, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.FaceLightingQuality, (int)VSFaceLightingQuality.PerPixelLighting, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.FaceColorMode, (int)VSFaceColorMode.ObjectColor, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.FaceMonoColor, Color.FromColorIndex(ColorMethod.ByAci, 1), VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.FaceOpacity, 0.5, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.DisplayStyle, (int)VSDisplayStyles.MaterialsFlag + (int)VSDisplayStyles.TexturesFlag, VisualStyleOperation.Set);
// Lighting (Enable Highlight Intensity,
// Highlight Intensity, and Shadow Display)
vStyle.SetTrait(VisualStyleProperty.FaceModifier, vStyle.GetTrait(VisualStyleProperty.FaceModifier).Int + (int)VSFaceModifiers.SpecularFlag, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.DisplayStyle, vStyle.GetTrait(VisualStyleProperty.DisplayStyle).Int + (int)VSDisplayStyles.LightingFlag, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.FaceSpecular, 45.0, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.DisplayShadowType, (int)VSDisplayShadowType.Full, VisualStyleOperation.Set);
// Environment Settings (Backgrounds)
vStyle.SetTrait(VisualStyleProperty.DisplayStyle, vStyle.GetTrait(VisualStyleProperty.DisplayStyle).Int + (int)VSDisplayStyles.BackgroundsFlag, VisualStyleOperation.Set);
// Edge Settings (Show, Number of Lines, Color, and Always on Top)
vStyle.SetTrait(VisualStyleProperty.EdgeModel, (int)VSEdgeModel.Isolines, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeIsolines, 6, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeColor, Color.FromColorIndex(ColorMethod.ByAci, 2), VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeModifier, vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int + (int)VSEdgeModifiers.AlwaysOnTopFlag, VisualStyleOperation.Set);
// Occluded Edges (Show, Color, and Linetype)
if (!((vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int & (int)VSEdgeStyles.ObscuredFlag) > 0))
{
vStyle.SetTrait(VisualStyleProperty.EdgeStyle, vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int + (int)VSEdgeStyles.ObscuredFlag, VisualStyleOperation.Set);
}
vStyle.SetTrait(VisualStyleProperty.EdgeObscuredColor, Color.FromColorIndex(ColorMethod.ByAci, 3), VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeObscuredLinePattern, (int)VSEdgeLinePattern.DoubleMediumDash, VisualStyleOperation.Set);
// Intersection Edges (Color and Linetype)
if (!((vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int & (int)VSEdgeStyles.IntersectionFlag) > 0))
{
vStyle.SetTrait(VisualStyleProperty.EdgeStyle, vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int + (int)VSEdgeStyles.IntersectionFlag, VisualStyleOperation.Set);
}
vStyle.SetTrait(VisualStyleProperty.EdgeIntersectionColor, Color.FromColorIndex(ColorMethod.ByAci, 4), VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeIntersectionLinePattern, (int)VSEdgeLinePattern.ShortDash, VisualStyleOperation.Set);
// Silhouette Edges (Color and Width)
if (!((vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int & (int)VSEdgeStyles.SilhouetteFlag) > 0))
{
vStyle.SetTrait(VisualStyleProperty.EdgeStyle, vStyle.GetTrait(VisualStyleProperty.EdgeStyle).Int + (int)VSEdgeStyles.SilhouetteFlag, VisualStyleOperation.Set);
}
vStyle.SetTrait(VisualStyleProperty.EdgeSilhouetteColor, Color.FromColorIndex(ColorMethod.ByAci, 5), VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeSilhouetteWidth, 2, VisualStyleOperation.Set);
// Edge Modifiers (Enable Line Extensions, Enable Jitter,
// Line Extensions, Jitter, Crease Angle,
// and Halo Gap)
if (!((vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int & (int)VSEdgeModifiers.EdgeOverhangFlag) > 0))
{
vStyle.SetTrait(VisualStyleProperty.EdgeModifier, vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int + (int)VSEdgeModifiers.EdgeOverhangFlag, VisualStyleOperation.Set);
}
if (!((vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int & (int)VSEdgeModifiers.EdgeJitterFlag) > 0))
{
vStyle.SetTrait(VisualStyleProperty.EdgeModifier, vStyle.GetTrait(VisualStyleProperty.EdgeModifier).Int + (int)VSEdgeModifiers.EdgeJitterFlag, VisualStyleOperation.Set);
}
vStyle.SetTrait(VisualStyleProperty.EdgeOverhang, 3, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeJitterAmount, (int)VSEdgeJitterAmount.JitterMedium, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeCreaseAngle, 0.3, VisualStyleOperation.Set);
vStyle.SetTrait(VisualStyleProperty.EdgeHaloGap, 5, VisualStyleOperation.Set);
}
catch (Autodesk.AutoCAD.Runtime.Exception es)
{
System.Windows.Forms.MessageBox.Show(es.Message);
}
finally
{
acTrans.Commit();
}
}
}