Skip to content

Instantly share code, notes, and snippets.

@dnovais
Last active October 24, 2024 14:59
Show Gist options
  • Save dnovais/b33856525affcf4ee2de92bd094b9cdf to your computer and use it in GitHub Desktop.
Save dnovais/b33856525affcf4ee2de92bd094b9cdf to your computer and use it in GitHub Desktop.
Exemplo de Automação no SketchUp: Criando Paredes, Portas e Janelas
# Exemplo de Automação no SketchUp: Criando Paredes, Portas e Janelas
def create_wall(length, height, thickness)
model = Sketchup.active_model
entities = model.active_entities
# Definir os pontos que formam a base da parede
points = [
[0, 0, 0], # Ponto inicial
[length, 0, 0], # Ponto na extremidade do comprimento
[length, thickness, 0], # Ponto com espessura da parede
[0, thickness, 0] # Volta ao ponto inicial com espessura
]
# Criar a face (superfície) da parede com os pontos definidos
wall_face = entities.add_face(points)
# Garantir que a face esteja orientada corretamente (virada para cima)
wall_face.reverse! if wall_face.normal.z < 0
# Extrudir a face para criar a altura da parede
wall_face.pushpull(height)
end
def create_door(width, height, wall_thickness)
model = Sketchup.active_model
entities = model.active_entities
# Definir os pontos para a abertura da porta
door_points = [
[1.m, 0, 0], # Ponto inicial da porta, a 1 metro do início da parede
[1.m + width, 0, 0], # Ponto final da largura da porta
[1.m + width, 0, height], # Ponto superior da porta
[1.m, 0, height] # Ponto que completa o retângulo da porta
]
# Criar a face da porta (abertura) na parede
door_face = entities.add_face(door_points)
# "Furar" a parede para criar a abertura da porta
door_face.pushpull(-wall_thickness)
end
def create_window(width, height, sill_height, wall_thickness)
model = Sketchup.active_model
entities = model.active_entities
# Definir os pontos para a abertura da janela, com base na altura do peitoril
window_points = [
[3.m, 0, sill_height], # Ponto inicial da janela, a 3 metros do início da parede
[3.m + width, 0, sill_height], # Ponto final da largura da janela
[3.m + width, 0, sill_height + height], # Ponto superior da janela
[3.m, 0, sill_height + height] # Ponto que completa o retângulo da janela
]
# Criar a face da janela na parede
window_face = entities.add_face(window_points)
# "Furar" a parede para criar a abertura da janela
window_face.pushpull(-wall_thickness)
end
# Execução do script
create_wall(10.m, 3.m, 0.3.m) # Cria uma parede de 10m de comprimento, 3m de altura e 0.3m de espessura
create_door(0.9.m, 2.m, 0.3.m) # Cria uma porta de 0.9m de largura e 2m de altura na parede
create_window(1.5.m, 1.2.m, 0.9.m, 0.3.m) # Cria uma janela de 1.5m de largura, 1.2m de altura e peitoril de 0.9m
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment