Cabinet Finished-end SP or Macro
Go to solution Solved by solver,
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:
'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
MsgBox "Invalid ceiling height"
'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
lightSpacing = 96
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
xOffset = lightSpacing * roomWidth / roomLength
yOffset = lightSpacing
'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
'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
Any help would be appreciated.
Sub PlaceLights.docx Sub PlaceLights.pdf
I have been trying to reduce the time I spend on a design, and I realized that there are a few groups of cabinets and panels that I use a lot. I would like to save these cabinets as a group and place them all at once. However, I still need them to be individual cabinets for schedule and modularity purposes. It seems like this is out of Chief's current reach. I just wanted to make sure this wasn't possible before adding it to the suggestions forum.
Oh before I forget an example of when I would want this. Almost every kitchen I design has a cabinet above a fridge supported by two full length panels on either side. I would like to place both panels and the cabinet at the same time. And even the fridge if possible.
I have returned to this forum once again in seek some help with ruby and macros.
I have been working on a macro to automate cabinet labels. So far I have a mostly working macro, but I feel like my hands are tied and my eyes are closed. First of all the documentation on chief implementation of ruby and its capabilities it really lacking. And second, I don't have the Ruby terminal. I think this is because I am running Interiors, but am not sure as all Chief says is that there is limited use of Ruby in this version.
Anyways, right now I would love to have a list of all callable object attributes. I honestly don't even know if that is the right name for what I am looking for. I am trying to find a list of what info I can scrape from a cabinet. So, what can I put after obj. (ie. obj.width, obj.type)? I think I could find this by running the selected.names command in the terminal, but I have no way of knowing.
This is my current macro. It is built from parts of a macro from @MarkMc and whatever I have been able to come up with from random trial and error. If you see something I could improve on, I am open to suggestions as long as they have a good explanation with them. Thanks in advance!
obj = owner
obj = referenced unless referenced.nil?
type = obj.type.to_s
nf = NumberFormatter.new
nf.unit = 'in'
nf.use_fractions = true
nf.show_unit = false
standard_size = 24.0 if type == 'base_cabinet'
standard_size = 12.0 if type == 'wall_cabinet'
standard_size = 24.0 if type == 'full_height_cabinet'
depth = nf.apply(obj.depth) if obj.depth.to_f != standard_size
standard_size_height = 36 if type == 'base_cabinet'
standard_size_height = 0.0 if type == 'full_height_cabinet'
height = nf.apply(obj.height) if obj.height.to_f != standard_size_height
width = nf.apply(obj.width)
nomen = 'B' if type == 'base_cabinet'
nomen = 'W' if type == 'wall_cabinet'
nomen = 'T' if type == 'full_height_cabinet'
hinging = owner.door_swing
label = ""
label << nomen << width.to_s << height.to_s << depth.to_s << hinging
I have searched the Chief Architect website and also here. I have X14 now and want to show sliding doors on some base cabinets. Perhaps I am missing the options to adjust this in the cabinet specifications.
Would appreciate someone helping me find this. Seems like it would be available in the library with the resurgence of Mid-Century Modern. Thank you.
My client doesn't want any hardware on the cabinet doors.
How do I create a finger hole in the door?
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now