Ok, that worked perfect. Would you mind explaining why so I can use this as a learning experience? Below is the final code that I used.
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD
Imports Autodesk.AutoCAD.Colors
Imports Autodesk.AutoCAD.DatabaseServices
Imports Autodesk.AutoCAD.EditorInput
Imports Autodesk.AutoCAD.Geometry
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.ApplicationServices.Application
Imports Autodesk.AutoCAD.LayerManager
Imports Autodesk.AutoCAD.Windows
Imports Autodesk.Aec.Building.Piping.DatabaseServices
Imports AecBPropDB = Autodesk.Aec.PropertyData.DatabaseServices
Imports AcApp = Autodesk.AutoCAD.ApplicationServices.Application
Imports AcColors = Autodesk.AutoCAD.Colors
Namespace Trimble
Public Class Trimble
#Region "Constants"
Private Const HYD375 As String = "Trimble-Hyd-Insert-0.375"
Private Const HYD500 As String = "Trimble-Hyd-Insert-0.500"
Private Const HYD625 As String = "Trimble-Hyd-Insert-0.625"
Private Const HYD750 As String = "Trimble-Hyd-Insert-0.750"
Private Const HYD875 As String = "Trimble-Hyd-Insert-0.875"
Private Const HYDSLV As String = "Trimble-Hyd-Sleeve"
Private Const HYDSLVDIM As String = "Trimble-Hyd-Sleeve-Dim"
Private Const HYDSLVTEXT As String = "Trimble-Hyd-Sleeve-Text"
Private Const HYDSYS As String = "Trimble-Hyd-System"
Private Const PLBG375 As String = "Trimble-Plbg-Insert-0.375"
Private Const PLBG500 As String = "Trimble-Plbg-Insert-0.500"
Private Const PLBG625 As String = "Trimble-Plbg-Insert-0.625"
Private Const PLBG750 As String = "Trimble-Plbg-Insert-0.750"
Private Const PLBG875 As String = "Trimble-Plbg-Insert-0.875"
Private Const PLBGSLV As String = "Trimble-Plbg-Sleeve"
Private Const PLBGSLVDIM As String = "Trimble-Plbg-Sleeve-Dim"
Private Const PLBGSLVTEXT As String = "Trimble-Plbg-Sleeve-Text"
Private Const PLBGSYS As String = "Trimble-Plbg-System"
Private Const VENT375 As String = "Trimble-Vent-Insert-0.375"
Private Const VENT500 As String = "Trimble-Vent-Insert-0.500"
Private Const VENT625 As String = "Trimble-Vent-Insert-0.625"
Private Const VENT750 As String = "Trimble-Vent-Insert-0.750"
Private Const VENT875 As String = "Trimble-Vent-Insert-0.875"
Private Const VENTSLV As String = "Trimble-Vent-Sleeve"
Private Const VENTSLVDIM As String = "Trimble-Vent-Sleeve-Dim"
Private Const VENTSLVTEXT As String = "Trimble-Vent-Sleeve-Text"
Private Const VENTSYS As String = "Trimble-Vent-System"
Private Const GRID As String = "Trimble-Plans-Grid"
Private Const ARCH As String = "Trimble-Plans-Arch"
Private Const STRUC As String = "Trimble-Plans-Struc"
Private Const CONTROL As String = "Trimble-Control-Points"
#End Region
#Region "Commands"
<CommandMethod("Trimblelayersadd")> _
Public Sub AddTrimbleLayers()
Dim ed As Editor = Application.DocumentManager.MdiActiveDocument.Editor
Dim GetLayerOptions As PromptKeywordOptions = New PromptKeywordOptions("Which Trimble Layers do you want to add? [Hydronics/Plumbing/Ventilation/All]: ", "Hydronics Plumbing Ventilation All")
Dim GetLayerResults As PromptResult = ed.GetKeywords(GetLayerOptions)
If (GetLayerResults.Status = PromptStatus.OK) Then
Select Case GetLayerResults.StringResult
Case "Hydronics"
CreateHydronicLayers()
CreateMiscLayers()
Case "Plumbing"
CreatePlumbingLayers()
CreateMiscLayers()
Case "Ventilation"
CreateVentilationLayers()
CreateMiscLayers()
Case "All"
CreateAllLayers()
CreateMiscLayers()
End Select
End If
End Sub
<CommandMethod("TrimblePlumbingLayersAdd")> _
Public Sub AddTrimblePlumbingLayers()
CreatePlumbingLayers()
CreateMiscLayers()
End Sub
<CommandMethod("TrimbleHydronicsLayersAdd")> _
Public Sub AddTrimbleHydronicsLayers()
CreatePlumbingLayers()
CreateMiscLayers()
End Sub
<CommandMethod("TrimbleVentilationLayersAdd")> _
Public Sub AddTrimbleVentiliationLayers()
CreatePlumbingLayers()
CreateMiscLayers()
End Sub
<CommandMethod("TrimbleAllLayersAdd")> _
Public Sub AddTrimbleAllLayers()
CreateHydronicLayers()
CreateVentilationLayers()
CreatePlumbingLayers()
CreateMiscLayers()
End Sub
#End Region
#Region "Helper Functions"
Public Sub CreateAllLayers()
CreatePlumbingLayers()
CreateHydronicLayers()
CreateVentilationLayers()
CreateMiscLayers()
End Sub
Public Sub CreatePlumbingLayers()
CreateTrimbleLayer(PLBG375, 0)
CreateTrimbleLayer(PLBG500, 0)
CreateTrimbleLayer(PLBG625, 0)
CreateTrimbleLayer(PLBG750, 0)
CreateTrimbleLayer(PLBG875, 0)
CreateTrimbleLayer(PLBGSLV, 0)
CreateTrimbleLayer(PLBGSLVDIM, 0)
CreateTrimbleLayer(PLBGSLVTEXT, 0)
CreateTrimbleLayer(PLBGSYS, 0)
End Sub
Public Sub CreateHydronicLayers()
CreateTrimbleLayer(HYD375, 0)
CreateTrimbleLayer(HYD500, 0)
CreateTrimbleLayer(HYD625, 0)
CreateTrimbleLayer(HYD750, 0)
CreateTrimbleLayer(HYD875, 0)
CreateTrimbleLayer(HYDSLV, 0)
CreateTrimbleLayer(HYDSLVDIM, 0)
CreateTrimbleLayer(HYDSLVTEXT, 0)
CreateTrimbleLayer(HYDSYS, 0)
End Sub
Public Sub CreateVentilationLayers()
CreateTrimbleLayer(VENT375, 0)
CreateTrimbleLayer(VENT500, 0)
CreateTrimbleLayer(VENT625, 0)
CreateTrimbleLayer(VENT750, 0)
CreateTrimbleLayer(VENT875, 0)
CreateTrimbleLayer(VENTSLV, 0)
CreateTrimbleLayer(VENTSLVDIM, 0)
CreateTrimbleLayer(VENTSLVTEXT, 0)
CreateTrimbleLayer(VENTSYS, 0)
End Sub
Public Sub CreateMiscLayers()
CreateTrimbleLayer(GRID, 0)
CreateTrimbleLayer(ARCH, 0)
CreateTrimbleLayer(STRUC, 0)
CreateTrimbleLayer(CONTROL, 0)
End Sub
Public Sub CreateTrimbleLayer(layerName As String, colorNum As Short)
Dim doc = AcApp.DocumentManager.MdiActiveDocument
Dim db = doc.Database
Dim ed = doc.Editor
Try
Using tr As Transaction = db.TransactionManager.StartTransaction()
Dim lt = DirectCast(db.LayerTableId.GetObject(OpenMode.ForWrite), LayerTable)
If lt.Has(layerName) Then
ed.WriteMessage(layerName & " exists..." & vbLf)
Return
End If
Dim ltr = New LayerTableRecord()
ltr.Name = layerName
ltr.Color = AcColors.Color.FromColorIndex(ColorMethod.ByAci, colorNum)
ltr.LineWeight = LineWeight.LineWeight050
lt.Add(ltr)
ltr.Description = layerName
tr.AddNewlyCreatedDBObject(ltr, True)
tr.Commit()
ed.WriteMessage(layerName & " layer created..." & vbLf)
End Using
Catch generatedExceptionName As Autodesk.AutoCAD.Runtime.Exception
ed.WriteMessage(layerName & " Ooooops ; not created..." & vbLf)
End Try
End Sub
#End Region
End Class
End Namespace