fixed the colors to match the last release.
Made the export multi material work for more than 2 extruders. Made the parts that are outside the extruder count map to extruder 1.
This commit is contained in:
parent
9457897e62
commit
5e59bda7c3
2 changed files with 38 additions and 39 deletions
|
|
@ -160,6 +160,7 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
|
||||
public static string[] GetStlFileLocations(string fileToSlice)
|
||||
{
|
||||
int extruderCount = ActiveSliceSettings.Instance.ExtruderCount;
|
||||
switch (Path.GetExtension(fileToSlice).ToUpper())
|
||||
{
|
||||
case ".STL":
|
||||
|
|
@ -168,63 +169,54 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
|
||||
case ".AMF":
|
||||
List<MeshGroup> meshGroups = MeshFileIo.Load(fileToSlice);
|
||||
List<MeshGroup> extruder1Group = new List<MeshGroup>();
|
||||
extruder1Group.Add(new MeshGroup());
|
||||
List<MeshGroup> extruder2Group = new List<MeshGroup>();
|
||||
extruder2Group.Add(new MeshGroup());
|
||||
List<MeshGroup> extruderMeshGroups = new List<MeshGroup>();
|
||||
for(int extruderIndex = 0; extruderIndex < extruderCount; extruderIndex++)
|
||||
{
|
||||
extruderMeshGroups.Add(new MeshGroup());
|
||||
}
|
||||
int maxExtruderIndex = 0;
|
||||
foreach (MeshGroup meshGroup in meshGroups)
|
||||
{
|
||||
foreach (Mesh mesh in meshGroup.Meshes)
|
||||
{
|
||||
if (ActiveSliceSettings.Instance.ExtruderCount > 1)
|
||||
MeshMaterialData material = MeshMaterialData.Get(mesh);
|
||||
int extruderIndex = Math.Max(0, material.MaterialIndex-1);
|
||||
maxExtruderIndex = Math.Max(maxExtruderIndex, extruderIndex);
|
||||
if(extruderIndex >= extruderCount)
|
||||
{
|
||||
MeshMaterialData material = MeshMaterialData.Get(mesh);
|
||||
switch (material.MaterialIndex)
|
||||
{
|
||||
case 1:
|
||||
extruder1Group[0].Meshes.Add(mesh);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
extruder2Group[0].Meshes.Add(mesh);
|
||||
break;
|
||||
|
||||
default:
|
||||
extruder1Group[0].Meshes.Add(mesh);
|
||||
break;
|
||||
}
|
||||
extruderMeshGroups[0].Meshes.Add(mesh);
|
||||
}
|
||||
else
|
||||
{
|
||||
extruder1Group[0].Meshes.Add(mesh);
|
||||
extruderMeshGroups[extruderIndex].Meshes.Add(mesh);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
string extruder1StlFileToSlice;
|
||||
if (ActiveSliceSettings.Instance.ExtruderCount > 1)
|
||||
List<string> extruderFilesToSlice = new List<string>();
|
||||
for (int i = 0; i < extruderMeshGroups.Count; i++ )
|
||||
{
|
||||
extruder1StlFileToSlice = SaveAndGetFilenameForExtruder(extruder1Group, 1);
|
||||
MeshGroup meshGroup = extruderMeshGroups[i];
|
||||
List<int> materialsToInclude = new List<int>();
|
||||
materialsToInclude.Add(i+1);
|
||||
if (i == 0)
|
||||
{
|
||||
for (int j = extruderCount+1; j < maxExtruderIndex + 2; j++)
|
||||
{
|
||||
materialsToInclude.Add(j);
|
||||
}
|
||||
}
|
||||
|
||||
extruderFilesToSlice.Add(SaveAndGetFilenameForMaterial(meshGroup, materialsToInclude));
|
||||
}
|
||||
else
|
||||
{
|
||||
extruder1StlFileToSlice = SaveAndGetFilenameForExtruder(extruder1Group, -1);
|
||||
}
|
||||
if (extruder2Group.Count > 0
|
||||
&& extruder2Group[0].Meshes != null
|
||||
&& extruder2Group[0].Meshes.Count > 0)
|
||||
{
|
||||
string extruder2StlFileToSlice = SaveAndGetFilenameForExtruder(extruder2Group, 2);
|
||||
return new string[] { extruder1StlFileToSlice, extruder2StlFileToSlice };
|
||||
}
|
||||
return new string[] { extruder1StlFileToSlice };
|
||||
return extruderFilesToSlice.ToArray();
|
||||
|
||||
default:
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
}
|
||||
|
||||
private static string SaveAndGetFilenameForExtruder(List<MeshGroup> extruder1Group, int extruderIndex)
|
||||
private static string SaveAndGetFilenameForMaterial(MeshGroup extruderMeshGroup, List<int> materialIndexsToSaveInThisSTL)
|
||||
{
|
||||
string fileName = Path.ChangeExtension(Path.GetRandomFileName(), ".stl");
|
||||
string applicationUserDataPath = ApplicationDataStorage.Instance.ApplicationUserDataPath;
|
||||
|
|
@ -234,9 +226,9 @@ namespace MatterHackers.MatterControl.SlicerConfiguration
|
|||
Directory.CreateDirectory(folderToSaveStlsTo);
|
||||
}
|
||||
MeshOutputSettings settings = new MeshOutputSettings();
|
||||
settings.OnlySaveMaterialIndex = extruderIndex;
|
||||
settings.MaterialIndexsToSave = materialIndexsToSaveInThisSTL;
|
||||
string extruder1StlFileToSlice = Path.Combine(folderToSaveStlsTo, fileName);
|
||||
MeshFileIo.Save(extruder1Group, extruder1StlFileToSlice, settings);
|
||||
MeshFileIo.Save(extruderMeshGroup, extruder1StlFileToSlice, settings);
|
||||
return extruder1StlFileToSlice;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue