max_id=rt.execute(f"""(local o = getNodeByName "{d['name']}"; local mid = 1; if o != undefined and isKindOf o Editable_Poly do ( for f = 1 to (polyop.getNumFaces o) do ( local id = polyop.getFaceMatID o f; if id > mid do mid = id ) ); mid)""")
QtWidgets.QMessageBox.critical(ui,f"Erro HTTP {e.code}",f"O Servidor RECUSOU a requisição.\n\nResposta:\n{err_body}")
mm[i]=m
exceptExceptionase:
)
QtWidgets.QMessageBox.warning(ui,"Aviso de Rede",f"Falha na comunicação ou falha lendo o JSON de postagens:\n\n{e}\n\n(A API pode ter retornado HTML ao invés de JSON puro?)")
)
else:
o.material=mm
QtWidgets.QMessageBox.warning(ui,"Aviso","O Hash deste canal não foi preenchido.")
)"""
rt.execute(ms_mat)
ui.c_pst.blockSignals(False)
d['item'].setText(1,"Mat OK (Multi)")
fo.append(rt.getNodeByName(d['name']))
# Se não retornou posts, forçar modo "Novo" e bloquear edição
ifnothas_posts:
ui.rdo_add.setChecked(True)
ui.rdo_edt.setEnabled(False)
else:
else:
# MATERIAL PADRÃO (Para objetos normais que cabem numa textura só)
ui.pb.setFormat("📸 Tirando Snapshot da Cena...");QtWidgets.QApplication.processEvents()
rt.execute(f"""( local c = getActiveCamera(); if c == undefined do ( local ac = for cam in cameras where (classof cam != TargetObject) collect cam; if ac.count > 0 do c = ac[1] ); try ( if c != undefined then ( render camera:c outputwidth:1280 outputheight:720 outputfile:@"{tp}" vfb:false quiet:true ) else ( render outputwidth:1280 outputheight:720 outputfile:@"{tp}" vfb:false quiet:true ) ) catch() )""")
ui.pb.setFormat("✅ Thumbnail Gerado e Salvo!");ui.pb.setValue(100)
ifnotfoandnotui._is_cancelled:
try:os.startfile(p_glb)
QtWidgets.QMessageBox.warning(ui,"Exportação Interrompida","Nenhum objeto validado para exportação.")
rt.execute(f"""( local c = getActiveCamera(); if c == undefined do ( local ac = for cam in cameras where (classof cam != TargetObject) collect cam; if ac.count > 0 do c = ac[1] ); try ( if c != undefined then ( render camera:c outputwidth:1280 outputheight:720 outputfile:@"{tp}" vfb:false quiet:true ) else ( render outputwidth:1280 outputheight:720 outputfile:@"{tp}" vfb:false quiet:true ) ) catch() )""")
data_parts.append(f'{value}\r\n'.encode('utf-8'))
ifos.path.exists(tp):to=True
defadd_file_field(name,filename,filepath):
ui.pb.setFormat("Limpando Hierarquia e XForm...");QtWidgets.QApplication.processEvents()
rt.execute(f"""( local c = getActiveCamera(); if c == undefined do ( local ac = for cam in cameras where (classof cam != TargetObject) collect cam; if ac.count > 0 do c = ac[1] ); try ( if c != undefined then ( render camera:c outputwidth:1280 outputheight:720 outputfile:@"{tp}" vfb:false quiet:true ) else ( render outputwidth:1280 outputheight:720 outputfile:@"{tp}" vfb:false quiet:true ) ) catch() )""")
print(f"[DEBUG API UPLOAD] Sucesso HTTP 200:\n{raw_res}")
QtWidgets.QMessageBox.information(ui,"Sincronização Cloud Concluída",f"O projeto foi enviado com sucesso para a plataforma!\n\nDados Retornados da API:\n{raw_res}")
excepturllib.error.HTTPErrorase:
err_body=e.read().decode('utf-8')
print(f"[DEBUG API UPLOAD] Erro HTTP {e.code}:\n{err_body}")
QtWidgets.QMessageBox.critical(ui,"Sincronização Falhou",f"O PHP Recusou o Arquivo (HTTP {e.code}).\n\nMotivo:\n{err_body}")
exceptExceptionase:
print(f"[DEBUG API UPLOAD] Exceção: {e}")
QtWidgets.QMessageBox.warning(ui,"Aviso de Rede",f"Não foi possível completar o envio do arquivo Zip para o servidor.\n\nDetalhes:\n{e}")
finally:
ui.b_up.setEnabled(True);ui.b_up.setText("☁️ Enviar para Nuvem")
self.spn_light_boost=QtWidgets.QSpinBox();self.spn_light_boost.setStyleSheet("background: white; color: black; font-weight: bold;");self.spn_light_boost.setRange(0,50);self.spn_light_boost.setSuffix("%");self.spn_light_boost.setToolTip("Aumenta temporariamente a intensidade de todas as luzes da cena para o Bake.")
self.spn_light_boost=QtWidgets.QSpinBox();self.spn_light_boost.setStyleSheet("background: white; color: black; font-weight: bold;");self.spn_light_boost.setRange(0,50);self.spn_light_boost.setSuffix("%");self.spn_light_boost.setToolTip("Aumenta temporariamente a intensidade de todas as luzes da cena para o Bake.")
@ -89,18 +89,57 @@ class AutoBakeManager(QtWidgets.QDialog):