By
Scogginator
Is there a way to write a custom command to auto-place lights?
I've used chat GTP to write code that I'd like to utilize. I have attached a word file and pdf that I need proof read and corrected. I can have that done.
Below is the code, but I'm not sure if it will format correctly:
Sub PlaceLights()
'Ask the user to select the room size and ceiling height
Dim roomWidth As Double
Dim roomLength As Double
Dim roomHeight As Double
roomWidth = InputBox("Enter the width of the room in feet:")
roomLength = InputBox("Enter the length of the room in feet:")
roomHeight = InputBox("Enter the height of the room in feet:")
'Calculate the square footage of the room based on user input
Dim roomArea As Double
roomArea = roomWidth * roomLength
'Determine the recommended lighting level for the room based on the ceiling height and room type
Dim lightLevel As Double
Select Case roomHeight
Case Is <= 8
lightLevel = 10
Case Is <= 9
lightLevel = 20
Case Is <= 10
lightLevel = 30
Case Is <= 12
lightLevel = 40
Case Else
MsgBox "Invalid ceiling height"
Exit Sub
End Select
'Calculate the number of lights needed based on the room size and the recommended spacing
Dim lightSpacing As Double
If roomArea <= 100 Then
lightSpacing = 48
ElseIf roomArea <= 225 Then
lightSpacing = 64
ElseIf roomArea <= 400 Then
lightSpacing = 80
Else
lightSpacing = 96
End If
Dim lightCount As Integer
lightCount = Application.RoundUp((roomWidth + roomLength) / lightSpacing, 0)
'Determine the optimal spacing for the lights based on the room size and ceiling height
Dim xOffset As Double
Dim yOffset As Double
If roomWidth >= roomLength Then
xOffset = lightSpacing
yOffset = lightSpacing * roomLength / roomWidth
Else
xOffset = lightSpacing * roomWidth / roomLength
yOffset = lightSpacing
End If
'Place the lights in a rectangular or square pattern within the room
Dim lightType As String
lightType = InputBox("Enter the light diameter (4 or 6):")
Dim x As Integer
Dim y As Integer
Dim light As Object
For x = 1 To lightCount
For y = 1 To lightCount
Set light = ActiveDocument.CreateLight("Recessed Can Light", lightType & """", "General")
light.Move (x - 1) * xOffset, (y - 1) * yOffset, roomHeight - 48
Next y
Next x
'Generate a report or summary of the lighting plan for the room
Dim report As String
report = "Room Size: " & roomWidth & " ft x " & roomLength & " ft" & vbCrLf
report = report & "Ceiling Height: " & roomHeight & " ft" & vbCrLf
report = report & "Recommended Light Level: " & lightLevel & " lux" & vbCrLf
report = report & "Number of Lights: " & lightCount ^ 2 & vbCrLf
report = report & "Light Spacing: " & lightSpacing & " in" & vbCrLf
report = report & "Light Type: " & lightType & """ Recessed Can Light" & vbCrLf
MsgBox report
Any help would be appreciated.
Thanks,
Jeff
Sub PlaceLights.docx
Sub PlaceLights.pdf
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now