Alright, so I figured it out:
basically, when you make a custom material (defined by the Material Type tag, ie PLA, or PETG), there are no qualities associated with that tag. What you need to do is create them for Cura to be able to slice with the custom material. These files are located in `/Applications/Ultimaker\ Cura.app/Contents/Resources/resources/quality`, and each printer has it's own sub-directory. For my printer (ender 3), it is `creality/base` so the full path is `/Applications/Ultimaker\ Cura.app/Contents/Resources/resources/quality/creality/base`.
This folder has files like this:
base_0.2_ABS_super.inst.cfg base_0.4_PLA_super.inst.cfg
base_0.2_ABS_ultra.inst.cfg base_0.4_TPU_adaptive.inst.cfg
base_0.2_PETG_super.inst.cfg base_0.4_TPU_standard.inst.cfg
base_0.2_PETG_ultra.inst.cfg base_0.4_TPU_super.inst.cfg
base_0.2_PLA_super.inst.cfg base_0.5_ABS_adaptive.inst.cfg
...
As you can see, each Nozzle diameter, and each quality (standard, super, adaptive, low, etc) has its own config file. When you use a tag such as PC-ABS in Cura material creation, there is no quality associated with it.
Now, what we must do is create files for it!
Here is a script I created that you run in terminal:
cura_generate_material() {
# check arg supplied
if [[ $# -eq 0 ]] ; then
echo 'Enter the material as first argument'
return
fi
# get the lower case of the material
material=`echo "$1" | tr "[A-Z]" "[a-z]"`
# navigate to root of quality files
cd /Applications/Ultimaker\ Cura.app/Contents/Resources/resources/quality/
# navigate to your printer-- in my case, ender3 AKA creality. This then has a
# sub folder called 'base' that has all the definition files
cd creality/base
declare -a quality=("low" "standard" "adaptive" "super")
## now loop through the qualities array
for quality in "${quality[@]}"
do
echo "[general]
version = 4
name = Standard Quality
definition = creality_base
[metadata]
setting_version = 10
type = quality
quality_type = $quality
material = generic_$material
variant = 0.4mm Nozzle
[values]" >> base_0.4_"$1"_"$quality".inst.cfg
done
}
What it does is create these files that Cura looks up for the selected material. For example, I used it to generate the PC-ABS files like so:
nyxaria@/Applications/Ultimaker Cura.app/Contents/Resources/resources/quality/creality/base$ cura_generate_material Nylon
nyxaria@/Applications/Ultimaker Cura.app/Contents/Resources/resources/quality/creality/base$ ls | grep PC-ABS
base_0.4_PC-ABS_adaptive.inst.cfg
base_0.4_PC-ABS_low.inst.cfg
base_0.4_PC-ABS_standard.inst.cfg
base_0.4_PC-ABS_super.inst.cfg
(grep is a filter for a key-word, in this case 'PC-ABS')
As you can see, Cura now lets me select these materials! It was quite a lot of work for not having them all under 'PLA', but it was fun. Let me know if this was helpful. I have also attached the files I generated for the PC-ABS if you just want to copy them manually and edit each one. Note, inside the file the 'material' must be lower case, but in the file name it must be as typed, eg PC-ABS or Nylon.
What you may also have to do is add a file into /Applications/Ultimaker Cura.app/Contents/Resources/resources/materials.
In my case, I added the file generic_pc-abs.xml.fdm_material and did not add one for Nylon as one already exists in Cura by default. Not sure if this step is needed, but did not test without it!
I have also attached generic_pc-abs.xml.fdm_material in the zip.
enjoy !
custom-material-files.zip