Hey . You were asking for the wrong attribute. You should ask for ‘intprocess’ not ‘_intprocess_value’.
Fixed:
require 'csv'
def pega_att(componente, att) # Returns the current value of the attribute.
# Always check instance first:
val = componente.get_attribute( 'dynamic_attributes', att)
if val.nil? # Does not differ from definition:
val = componente.definition.get_attribute( 'dynamic_attributes', att)
end
return val
end
def monta_linha(componente, csv)
if componente.is_a?(Sketchup::ComponentInstance)
nome_componente = componente.definition.name
material_componente = componente.material ? componente.material.display_name : 'Nenhum material'
#This attribute does not exist in your component. (see pic)
#intprocess = pega_att(componente,'_intprocess_value')
#You only need to ask for the attribute:
intprocess = pega_att(componente,'intprocess')
int_mod = pega_att(componente,'int_mod')
quantity = 1
int_cat = pega_att(componente,'int_cat')
int_desc = pega_att(componente,'int_desc')
int_comp = pega_att(componente,'int_comp')
int_larg = pega_att(componente,'int_larg')
int_esp = pega_att(componente,'int_esp')
int_mat = pega_att(componente,'int_mat')
int_c1 = pega_att(componente,'int_c1')
int_c2 = pega_att(componente,'int_c2')
int_l1 = pega_att(componente,'int_l1')
int_l2 = pega_att(componente,'int_l2')
int_veio = pega_att(componente,'int_veio')
int_obs = pega_att(componente,'int_obs')
csv << [nome_componente, material_componente, intprocess, int_mod, quantity, int_cat, int_desc, int_comp, int_larg, int_esp, int_mat, int_c1, int_c2, int_l1, int_l2, int_veio, int_obs]
# Itera sobre as instâncias aninhadas
componente.definition.entities.each do |entidade_aninhada|
# Recursivamente chama a função para os componentes aninhados
monta_linha(entidade_aninhada, csv)
end
end
end
# Método principal para exportar nome e material de todos os componentes para CSV
def exportar_itens
# Obtém a seleção atual no modelo do SketchUp
selecao = Sketchup.active_model.selection
# Verifica se há algo selecionado
if selecao.empty?
UI.messagebox('Nenhum componente selecionado para exportar.')
return
end
# Escolha do arquivo de destino
arquivo_csv = UI.savepanel('Exportar arquivo CSV', '', 'int_process_reporter.csv')
return unless arquivo_csv
# Abre o arquivo CSV para gravação
CSV.open(arquivo_csv, 'w', force_quotes: true) do |csv|
# Cabeçalho do CSV
csv << ['Nome do Componente', 'Material', 'IntProcess', 'int_mod', 'Quantity', 'int_cat', 'int_desc', 'int_comp', 'int_larg', 'int_esp', 'int_mat', 'int_c1', 'int_c2', 'int_l1', 'int_l2', 'int_veio', 'int_obs']
# Itera sobre a seleção
selecao.each do |entidade|
# Recursivamente chama a função para os componentes aninhados
monta_linha(entidade, csv)
end
end
UI.messagebox('Exportação concluída com sucesso!')
end
exportar_itens