johnzero7 / XNALaraMesh

Blender addon Import/Export XPS Models, Poses
525 stars 94 forks source link

Export to .ascii not working. #96

Open Konohamaru04 opened 1 year ago

Konohamaru04 commented 1 year ago

When I try to export a model to .ascii it throws following error

Python: Traceback (most recent call last): File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\xps_tools.py", line 312, in execute export_xnalara_model.getOutputFilename(xpsSettings) File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\export_xnalara_model.py", line 68, in getOutputFilename xpsExport() File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\timing.py", line 31, in wrap ret = f(*args) File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\export_xnalara_model.py", line 114, in xpsExport xpsMeshes = exportMeshes(selectedArmature, selectedMeshes) File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\export_xnalara_model.py", line 175, in exportMeshes meshName = makeNamesFromMesh(mesh) File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\export_xnalara_model.py", line 208, in makeNamesFromMesh renderType = xps_material.makeRenderType(meshFullName) File "C:\Users\Admin\AppData\Roaming\Blender Foundation\Blender\3.3\scripts\addons\XNALaraMesh\xps_material.py", line 521, in makeRenderType if math.isnan(renderGroupFloat): TypeError: must be real number, not str

Maybe I'm using some invalid settings please help me out here.

Thanks !

ldo commented 1 year ago

The problem seems to be that the getFloat routine in ascii_ops does not always return a float:

def getFloat(value):
    """Read value and returns a float. If error return NaN."""
    if value:
        try:
            return float(value)
        except ValueError:
            return float('NaN')
    return value

That initial “if value:” check skips the conversion for values that Python interprets as False — for example None or the empty string — and returns them unconverted.

Could it be that the mesh name begins with an underscore?