mirror of
https://github.com/leozide/leocad.git
synced 2026-07-28 04:07:11 +00:00
Fixed missing color define in some POV exports.
This commit is contained in:
+16
-31
@@ -2288,22 +2288,20 @@ std::pair<bool, QString> Project::ExportPOVRay(const QString& FileName)
|
||||
}
|
||||
}
|
||||
|
||||
for (const lcModelPartsEntry& ModelPart : ModelParts)
|
||||
auto AddColorDefinition=[UseLGEO, &ColorTable, &LgeoColorTable, &MaterialColors, &Line, &POVFile](int ColorIndex)
|
||||
{
|
||||
size_t ColorIdx = ModelPart.ColorIndex;
|
||||
|
||||
if (!ColorTable[ColorIdx][0])
|
||||
if (!ColorTable[ColorIndex][0])
|
||||
{
|
||||
lcColor* Color = &gColorList[ColorIdx];
|
||||
lcColor* Color = &gColorList[ColorIndex];
|
||||
|
||||
if (LgeoColorTable[ColorIdx].empty())
|
||||
if (LgeoColorTable[ColorIndex].empty())
|
||||
{
|
||||
sprintf(ColorTable[ColorIdx].data(), "lc_%s", Color->SafeName);
|
||||
sprintf(ColorTable[ColorIndex].data(), "lc_%s", Color->SafeName);
|
||||
|
||||
if (lcIsColorTranslucent(ColorIdx))
|
||||
if (lcIsColorTranslucent(ColorIndex))
|
||||
{
|
||||
if (!UseLGEO && !MaterialColors.contains(ColorTable[ColorIdx].data()))
|
||||
MaterialColors.append(ColorTable[ColorIdx].data());
|
||||
if (!UseLGEO && !MaterialColors.contains(ColorTable[ColorIndex].data()))
|
||||
MaterialColors.append(ColorTable[ColorIndex].data());
|
||||
|
||||
sprintf(Line, "#ifndef (lc_%s)\n#declare lc_%s = TranslucentColor(%g, %g, %g, TransFilter)\n#end\n\n",
|
||||
Color->SafeName, Color->SafeName, Color->Value[0], Color->Value[1], Color->Value[2]);
|
||||
@@ -2312,9 +2310,9 @@ std::pair<bool, QString> Project::ExportPOVRay(const QString& FileName)
|
||||
{
|
||||
const char* MacroName;
|
||||
|
||||
if (lcIsColorChrome(ColorIdx))
|
||||
if (lcIsColorChrome(ColorIndex))
|
||||
MacroName = "Chrome";
|
||||
else if (lcIsColorRubber(ColorIdx))
|
||||
else if (lcIsColorRubber(ColorIndex))
|
||||
MacroName = "Rubber";
|
||||
else
|
||||
MacroName = "Opaque";
|
||||
@@ -2324,33 +2322,20 @@ std::pair<bool, QString> Project::ExportPOVRay(const QString& FileName)
|
||||
}
|
||||
else
|
||||
{
|
||||
sprintf(ColorTable[ColorIdx].data(), "LDXColor%i", Color->Code);
|
||||
sprintf(ColorTable[ColorIndex].data(), "LDXColor%i", Color->Code);
|
||||
|
||||
sprintf(Line,"#ifndef (LDXColor%i) // %s\n#declare LDXColor%i = material { texture { %s } }\n#end\n\n",
|
||||
Color->Code, Color->Name, Color->Code, LgeoColorTable[ColorIdx].c_str());
|
||||
Color->Code, Color->Name, Color->Code, LgeoColorTable[ColorIndex].c_str());
|
||||
}
|
||||
|
||||
POVFile.WriteLine(Line);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
if (!ColorTable[lcGetColorIndex(TopModelColorCode)][0])
|
||||
{
|
||||
size_t ColorIdx = lcGetColorIndex(TopModelColorCode);
|
||||
for (const lcModelPartsEntry& ModelPart : ModelParts)
|
||||
AddColorDefinition(ModelPart.ColorIndex);
|
||||
|
||||
lcColor* Color = &gColorList[ColorIdx];
|
||||
|
||||
sprintf(ColorTable[ColorIdx].data(), "LDXColor%i", Color->Code);
|
||||
|
||||
if (LgeoColorTable[ColorIdx].empty())
|
||||
sprintf(Line, "#ifndef (lc_%s)\n#declare lc_%s = OpaqueColor(%g, %g, %g)\n#end\n\n",
|
||||
Color->SafeName, Color->SafeName, Color->Value[0], Color->Value[1], Color->Value[2]);
|
||||
else
|
||||
sprintf(Line,"#ifndef (LDXColor%i) // %s\n#declare LDXColor%i = material { texture { %s } }\n#end\n\n",
|
||||
Color->Code, Color->Name, Color->Code, LgeoColorTable[ColorIdx].c_str());
|
||||
|
||||
POVFile.WriteLine(Line);
|
||||
}
|
||||
AddColorDefinition(lcGetColorIndex(TopModelColorCode));
|
||||
|
||||
std::set<lcMesh*> AddedMeshes;
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "lc_application.h"
|
||||
#include "lc_profile.h"
|
||||
#include "lc_blenderpreferences.h"
|
||||
#include "lc_mainwindow.h"
|
||||
#include "lc_model.h"
|
||||
#include "lc_qutils.h"
|
||||
|
||||
@@ -180,11 +179,6 @@ bool lcRenderDialog::PromptCancel()
|
||||
if (QMessageBox::question(this, tr("Cancel Render"), tr("Are you sure you want to cancel the current render?"), QMessageBox::Yes | QMessageBox::No) != QMessageBox::Yes)
|
||||
return false;
|
||||
|
||||
if (mDialogMode == lcRenderDialogMode::RenderPOVRay)
|
||||
gMainWindow->mActions[LC_FILE_RENDER_POVRAY]->setEnabled(true);
|
||||
else if (mDialogMode == lcRenderDialogMode::RenderBlender)
|
||||
gMainWindow->mActions[LC_FILE_RENDER_BLENDER]->setEnabled(true);
|
||||
|
||||
if (mProcess)
|
||||
{
|
||||
#ifdef Q_OS_WIN
|
||||
@@ -233,8 +227,6 @@ void lcRenderDialog::reject()
|
||||
|
||||
void lcRenderDialog::RenderPOVRay()
|
||||
{
|
||||
gMainWindow->mActions[LC_FILE_RENDER_POVRAY]->setEnabled(false);
|
||||
|
||||
QString FileName = GetPOVFileName();
|
||||
|
||||
ui->preview->SetImage(QImage());
|
||||
@@ -363,7 +355,6 @@ void lcRenderDialog::RenderPOVRay()
|
||||
else
|
||||
{
|
||||
delete Process;
|
||||
gMainWindow->mActions[LC_FILE_RENDER_POVRAY]->setEnabled(true);
|
||||
QMessageBox::information(this, tr("Render Error"), tr("Error starting POV-Ray."));
|
||||
CloseProcess();
|
||||
}
|
||||
@@ -426,7 +417,6 @@ void lcRenderDialog::RenderBlender()
|
||||
else
|
||||
{
|
||||
Arguments << QLatin1String("--background");
|
||||
gMainWindow->mActions[LC_FILE_RENDER_BLENDER]->setEnabled(false);
|
||||
}
|
||||
|
||||
PythonExpression.append(", cli_render=True)\"");
|
||||
@@ -466,7 +456,6 @@ void lcRenderDialog::RenderBlender()
|
||||
{
|
||||
QMessageBox::information(this, tr("Render Error"), tr("Cannot write Blender render script file '%1':\n%2.").arg(ScriptFile.fileName(), ScriptFile.errorString()));
|
||||
|
||||
gMainWindow->mActions[LC_FILE_RENDER_BLENDER]->setEnabled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -559,7 +548,6 @@ void lcRenderDialog::RenderBlender()
|
||||
}
|
||||
else
|
||||
{
|
||||
gMainWindow->mActions[LC_FILE_RENDER_BLENDER]->setEnabled(true);
|
||||
Message = tr("Error starting Blender render process");
|
||||
QMessageBox::information(this, tr("Render Error"), Message);
|
||||
CloseProcess();
|
||||
@@ -771,8 +759,6 @@ void lcRenderDialog::ShowResult()
|
||||
|
||||
if (mDialogMode == lcRenderDialogMode::RenderPOVRay)
|
||||
{
|
||||
gMainWindow->mActions[LC_FILE_RENDER_POVRAY]->setEnabled(true);
|
||||
|
||||
ui->preview->SetImage(mImage.scaled(mPreviewWidth, mPreviewHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation));
|
||||
|
||||
if (!FileName.isEmpty())
|
||||
@@ -788,8 +774,6 @@ void lcRenderDialog::ShowResult()
|
||||
}
|
||||
else if (mDialogMode == lcRenderDialogMode::RenderBlender)
|
||||
{
|
||||
gMainWindow->mActions[LC_FILE_RENDER_BLENDER]->setEnabled(true);
|
||||
|
||||
Success = QFileInfo(FileName).exists();
|
||||
if (Success)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user