Detect Max installation and list all SDKs with corresponding required toolset versions
parent
5685774a7d
commit
3760a1331c
@ -1,2 +1,133 @@
|
|||||||
|
|
||||||
# Script finds latest max installation, user directory, and max SDKs
|
# Script finds latest max installation, user directory, and max SDKs
|
||||||
|
|
||||||
|
import os
|
||||||
|
|
||||||
|
def HasPluginMax(path):
|
||||||
|
return os.path.isfile(os.path.join(path, "3dsmax.exe")) and (os.path.isfile(os.path.join(path, "plugins/nelexport_r.dlu")) or os.path.isfile(os.path.join(path, "plugins/nelexport_d.dlu")) or os.path.isfile(os.path.join(path, "plugins/nelexport.dlu")))
|
||||||
|
|
||||||
|
def FindPluginMax():
|
||||||
|
for i in range(2038, 2007, -1) + range(9, 2, -1):
|
||||||
|
path = os.getenv('ADSK_3DSMAX_x64_' + str(i))
|
||||||
|
if path and HasPluginMax(path):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
path = "C:/Program Files/Autodesk/3ds Max " + str(i)
|
||||||
|
if HasPluginMax(path):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
path = "C:/Program Files (x86)/Autodesk/3ds Max " + str(i)
|
||||||
|
if HasPluginMax(path):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
|
||||||
|
def FindLatestMax():
|
||||||
|
for i in range(2038, 2007, -1) + range(9, 2, -1):
|
||||||
|
path = os.getenv('ADSK_3DSMAX_x64_' + str(i))
|
||||||
|
if path and os.path.isfile(os.path.join(path, "3dsmax.exe")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
path = "C:/Program Files/Autodesk/3ds Max " + str(i)
|
||||||
|
if os.path.isfile(os.path.join(path, "3dsmax.exe")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
path = "C:/Program Files (x86)/Autodesk/3ds Max " + str(i)
|
||||||
|
if os.path.isfile(os.path.join(path, "3dsmax.exe")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
|
||||||
|
def FindMaxLocal(maxPath):
|
||||||
|
maxPathSplit = maxPath.split()
|
||||||
|
version = maxPathSplit[len(maxPathSplit) - 1]
|
||||||
|
if "x86" in maxPath:
|
||||||
|
version += " - 32bit"
|
||||||
|
else:
|
||||||
|
version += " - 64bit"
|
||||||
|
return os.path.normpath(os.path.expandvars("%LocalAppData%/Autodesk/3dsMax/" + version + "/ENU"))
|
||||||
|
|
||||||
|
def FindMaxSDK(version):
|
||||||
|
path = os.getenv('ADSK_3DSMAX_SDK_' + str(version))
|
||||||
|
if path:
|
||||||
|
if os.path.isfile(os.path.join(path, "include/max.h")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
elif os.path.isfile(os.path.join(path, "maxsdk/include/max.h")):
|
||||||
|
return os.path.normpath(os.path.join(path, "maxsdk"))
|
||||||
|
path = "C:/Program Files/Autodesk/3ds Max " + str(version) + " SDK"
|
||||||
|
if os.path.isfile(os.path.join(path, "include/max.h")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
elif os.path.isfile(os.path.join(path, "maxsdk/include/max.h")):
|
||||||
|
return os.path.normpath(os.path.join(path, "maxsdk"))
|
||||||
|
path = "C:/Program Files (x86)/Autodesk/3ds Max " + str(version) + " SDK"
|
||||||
|
if os.path.isfile(os.path.join(path, "include/max.h")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
elif os.path.isfile(os.path.join(path, "maxsdk/include/max.h")):
|
||||||
|
return os.path.normpath(os.path.join(path, "maxsdk"))
|
||||||
|
path = "C:/Program Files (x86)/Autodesk/3dsMax" + str(version)
|
||||||
|
if os.path.isfile(os.path.join(path, "include/max.h")):
|
||||||
|
return os.path.normpath(path)
|
||||||
|
elif os.path.isfile(os.path.join(path, "maxsdk/include/max.h")):
|
||||||
|
return os.path.normpath(os.path.join(path, "maxsdk"))
|
||||||
|
return
|
||||||
|
|
||||||
|
def FindMaxSDKs():
|
||||||
|
toolset = {
|
||||||
|
2022: "v141",
|
||||||
|
2021: "v141",
|
||||||
|
2020: "v141",
|
||||||
|
2219: "v140",
|
||||||
|
2018: "v140",
|
||||||
|
2017: "v140",
|
||||||
|
2016: "v110",
|
||||||
|
2015: "v110",
|
||||||
|
2014: "v100",
|
||||||
|
2013: "v100",
|
||||||
|
2012: "v90",
|
||||||
|
2011: "v90",
|
||||||
|
2010: "v90",
|
||||||
|
2009: "v80",
|
||||||
|
2008: "v80",
|
||||||
|
9: "v80",
|
||||||
|
8: "v70",
|
||||||
|
7: "v70",
|
||||||
|
6: "v70",
|
||||||
|
5: "v60",
|
||||||
|
4: "v60",
|
||||||
|
3: "v60",
|
||||||
|
}
|
||||||
|
compatible = {
|
||||||
|
2021: 2020,
|
||||||
|
2016: 2015,
|
||||||
|
2014: 2013,
|
||||||
|
2011: 2010,
|
||||||
|
2008: 9,
|
||||||
|
8: 7,
|
||||||
|
7: 6,
|
||||||
|
5: 4,
|
||||||
|
}
|
||||||
|
res = []
|
||||||
|
set = {}
|
||||||
|
remap = {}
|
||||||
|
for i in range(3, 10) + range(2008, 2039):
|
||||||
|
found = FindMaxSDK(i)
|
||||||
|
if found:
|
||||||
|
set[i] = True
|
||||||
|
c = None
|
||||||
|
remap[i] = i
|
||||||
|
if i in compatible:
|
||||||
|
if compatible[i] in set:
|
||||||
|
c = remap[compatible[i]]
|
||||||
|
remap[i] = c
|
||||||
|
t = "v142"
|
||||||
|
if i in toolset:
|
||||||
|
t = toolset[i]
|
||||||
|
rv = { "Path": found, "Version": i, "Toolset": t }
|
||||||
|
if c:
|
||||||
|
rv["Compatible"] = c
|
||||||
|
res += [ rv ]
|
||||||
|
return res
|
||||||
|
|
||||||
|
FoundPluginMax = FindPluginMax()
|
||||||
|
FoundPluginMaxLocal = FindMaxLocal(FindPluginMax())
|
||||||
|
FoundLatestMax = FindLatestMax()
|
||||||
|
FoundMaxSDKs = FindMaxSDKs()
|
||||||
|
|
||||||
|
print FoundPluginMax
|
||||||
|
print FoundPluginMaxLocal
|
||||||
|
print FoundLatestMax
|
||||||
|
print FoundMaxSDKs
|
||||||
|
|
||||||
|
# end of file
|
||||||
|
Loading…
Reference in New Issue