CAD start based on license Bundle check

Discussion forum for all Windows batch related topics.

Moderator: DosItHelp

Post Reply
Message
Author
schweigk
Posts: 4
Joined: 08 Oct 2019 06:25

CAD start based on license Bundle check

#1 Post by schweigk » 16 Oct 2019 01:43

Hello,

I`m at my wits end here, it gets too complex for me.
We have a CAD system where you can set two license bundles for usage.
And based on availability and applications you use in CAD either one can be used.

Now I want to check the licenses set before the CAD is started to avoid unnecessary CAD start which end in an error since none of the selected licenses are available.
But it gets more complex. If a user starts the CAD a second time and already uses a license bundle on the same PC it can be used multiple times, so this also has to be checked compared.

And the next step is to inform the user if his pre-selected licenses are not available: Ask him if the registry settings should be changed and to start CAD with other licenses, or if he wants to try starting CAD anyhow or he could cancel the CAD start.

I tried doing this by splitting up some of the tasks. Checking registry to find out the pre-selected User Bundles, Checking license usage and availability from the flexlm license server and lastly to use this information in the main batch file.

But this is getting much too complicated for me so I made a Visio flowchart to visualize all possible/necessary choices and possibilities.
And I`m not too good with complex batch loops either.

I cannot upload our real license server responses but I will create text files to show the answer I usually get for each license check (sorry).
And I will also upload my other batch files and the Visio file I made.

The best outcome would be if I can get one batch file which does all the above mentioned tasks.
And I call it in my batch file where I start the CAD.

I uploaded the Visio file and the text files:https://gofile.io/?c=dAKjDb

I would be really thankful for help input.

Best regards

Code: Select all

@echo off
REM Check user registry to find out license bundles
for /f "tokens=1 delims=," %%a in ('%SYSTEMROOT%\system32\reg.exe query 
                                       "HKEY_CURRENT_USER\Software\Siemens_PLM_Software\Common_Licensing" 
                                        /v "NX_BUNDLES" 2^>NUL ^| find /i "NX_BUNDLES"') do set USER_BUNDLE_1="%%a"
SET USER_BUNDLE_1==%USER_BUNDLE_1:"=%
FOR /F "tokens=4 delims= " %%A IN ("%USER_BUNDLE_1%") DO set USER_BUNDLE_1=%%A
for /f "tokens=2,* delims=," %%a in ('%SYSTEMROOT%\system32\reg.exe query 
                                       "HKEY_CURRENT_USER\Software\Siemens_PLM_Software\Common_Licensing" 
                                        /v "NX_BUNDLES" 2^>NUL ^| find /i "NX_BUNDLES"') do set USER_BUNDLE_2="%%a"
SET USER_BUNDLE_2=%USER_BUNDLE_2:"=%
ECHO 1 %USER_BUNDLE_1%
ECHO 2 %USER_BUNDLE_2%

REM Check license usage and availability
REM Check BUNDLE_1
FOR /F "tokens=6,11 delims= " %%A IN ('PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_1 ^| findstr /C:"Users of BUNDLE_1:"') DO (
	set BUNDLE_1_AVAIL=%%A
	set BUNDLE_1_USED=%%B
	)
PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_1 | findstr /R /C:%USERNAME%
If %ERRORLEVEL% EQU 0 SET USER_HAS_BUNDLE_1=YES
If %ERRORLEVEL% EQU 1 SET USER_HAS_BUNDLE_1=NO
REM Check BUNDLE_2
FOR /F "tokens=6,11 delims= " %%A IN ('PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_2 ^| findstr /C:"Users of BUNDLE_2:"') DO (
	set BUNDLE_2_AVAIL=%%A
	set BUNDLE_2_USED=%%B
	)
PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_2 | findstr /R /C:%USERNAME%
If %ERRORLEVEL% EQU 0 SET USER_HAS_BUNDLE_2=YES
If %ERRORLEVEL% EQU 1 SET USER_HAS_BUNDLE_2=NO
REM Check BUNDLE_3
FOR /F "tokens=6,11 delims= " %%A IN ('PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_3 ^| findstr /C:"Users of BUNDLE_3:"') DO (
	set BUNDLE_3_AVAIL=%%A
	set BUNDLE_3_USED=%%B
	)
PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_3 | findstr /R /C:%USERNAME%
If %ERRORLEVEL% EQU 0 SET USER_HAS_BUNDLE_3=YES
If %ERRORLEVEL% EQU 1 SET USER_HAS_BUNDLE_3=NO
REM Check BUNDLE_4
FOR /F "tokens=6,11 delims= " %%A IN ('PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_4 ^| findstr /C:"Users of BUNDLE_4:"') DO (
	set BUNDLE_4_AVAIL=%%A
	set BUNDLE_4_USED=%%B
	)
PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_4 | findstr /R /C:%USERNAME%
If %ERRORLEVEL% EQU 0 SET USER_HAS_BUNDLE_4=YES
If %ERRORLEVEL% EQU 1 SET USER_HAS_BUNDLE_4=NO
REM Check BUNDLE_5
FOR /F "tokens=6,11 delims= " %%A IN ('PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_5 ^| findstr /C:"Users of BUNDLE_5:"') DO (
	set BUNDLE_5_AVAIL=%%A
	set BUNDLE_5_USED=%%B
	)
PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_5 | findstr /R /C:%USERNAME%
If %ERRORLEVEL% EQU 0 SET USER_HAS_BUNDLE_5=YES
If %ERRORLEVEL% EQU 1 SET USER_HAS_BUNDLE_5=NO
REM Check BUNDLE_6
FOR /F "tokens=6,11 delims= " %%A IN ('PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_6 ^| findstr /C:"Users of BUNDLE_6:"') DO (
	set BUNDLE_6_AVAIL=%%A
	set BUNDLE_6_USED=%%B
	)
PATH\UGFLEXLM\lmutil.exe lmstat -a -c 28000@LIC_SERVER -f BUNDLE_6 | findstr /R /C:%USERNAME%
If %ERRORLEVEL% EQU 0 SET USER_HAS_BUNDLE_6=YES
If %ERRORLEVEL% EQU 1 SET USER_HAS_BUNDLE_6=NO
REM List Free Licenses
if 1%BUNDLE_1_USED% LSS 1%BUNDLE_1_AVAIL% SET /a BUNDLE_1_FREE=%BUNDLE_1_AVAIL%-%BUNDLE_1_USED%
if defined BUNDLE_1_FREE ECHO %BUNDLE_1_FREE% BUNDLE_1 licenses are available
if 1%BUNDLE_4_USED% LSS 1%BUNDLE_4_AVAIL% SET /a BUNDLE_4_FREE=%BUNDLE_4_AVAIL%-%BUNDLE_4_USED%
if defined BUNDLE_4_FREE ECHO %BUNDLE_4_FREE% BUNDLE_4 licenses are available
if 1%BUNDLE_5_USED% LSS 1%BUNDLE_5_AVAIL% SET /a BUNDLE_5_FREE=%BUNDLE_5_AVAIL%-%BUNDLE_5_USED%
if defined BUNDLE_5_FREE ECHO %BUNDLE_5_FREE% BUNDLE_5 licenses are available
if 1%BUNDLE_2_USED% LSS 1%BUNDLE_2_AVAIL% SET /a BUNDLE_2_FREE=%BUNDLE_2_AVAIL%-%BUNDLE_2_USED%
if defined BUNDLE_2_FREE ECHO %BUNDLE_2_FREE% BUNDLE_2 licenses are available
if 1%BUNDLE_3_USED% LSS 1%BUNDLE_3_AVAIL% SET /a BUNDLE_3_FREE=%BUNDLE_3_AVAIL%-%BUNDLE_3_USED%
if defined BUNDLE_3_FREE ECHO %BUNDLE_3_FREE% BUNDLE_3 licenses are available
if 1%BUNDLE_6_USED% LSS 1%BUNDLE_6_AVAIL% SET /a BUNDLE_6_FREE=%BUNDLE_6_AVAIL%-%BUNDLE_6_USED%
if defined BUNDLE_6_FREE ECHO %BUNDLE_6_FREE% BUNDLE_6 licenses are available
if %BUNDLE_1_AVAIL% == %BUNDLE_1_USED% if %BUNDLE_4_AVAIL% == %BUNDLE_4_USED% if %BUNDLE_2_AVAIL% == %BUNDLE_2_USED% if %USER_HAS_BUNDLE_1% == NO if %USER_HAS_BUNDLE_4% == NO if %USER_HAS_BUNDLE_2% == NO goto NOLICENSE
REM Check license in reference to selected bundles

goto EOF

:NOLICENSE
set NO_NX_STD_LIC_AVAILABLE=YES
ECHO NO LICENSES AVAILABE OR IN USE BY YOU, TRY LATER OR CONTACT IT DEPARTMENT TO CHECK LICENCE USAGE.


REM check if seleted bunlde is available or allrady used
if %USER_BUNDLE_1%==USER_BUNDLE_1 if defined USER_BUNDLE_1_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_1%==USER_BUNDLE_2 if defined USER_BUNDLE_2_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_1%==USER_BUNDLE_3 if defined USER_BUNDLE_3_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_1%==USER_BUNDLE_4 if defined USER_BUNDLE_4_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_1%==USER_BUNDLE_5 if defined USER_BUNDLE_5_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_1%==USER_BUNDLE_6 if defined USER_BUNDLE_6_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_2%==USER_BUNDLE_1 if defined USER_BUNDLE_1_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_2%==USER_BUNDLE_2 if defined USER_BUNDLE_2_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_2%==USER_BUNDLE_3 if defined USER_BUNDLE_3_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_2%==USER_BUNDLE_4 if defined USER_BUNDLE_4_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_2%==USER_BUNDLE_5 if defined USER_BUNDLE_5_FREE goto NX_LICENSE_AVAILABLE
if %USER_BUNDLE_2%==USER_BUNDLE_6 if defined USER_BUNDLE_6_FREE goto NX_LICENSE_AVAILABLE
REM check if seleted bunlde is allrady used by %username%
if %USER_BUNDLE_1%==USER_BUNDLE_1 if %USER_HAS_USER_BUNDLE_1%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_1%==USER_BUNDLE_2 if %USER_HAS_USER_BUNDLE_2%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_1%==USER_BUNDLE_3 if %USER_HAS_USER_BUNDLE_3%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_1%==USER_BUNDLE_4 if %USER_HAS_USER_BUNDLE_4%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_1%==USER_BUNDLE_5 if %USER_HAS_USER_BUNDLE_5%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_1%==USER_BUNDLE_6 if %USER_HAS_USER_BUNDLE_6%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_2%==USER_BUNDLE_1 if %USER_HAS_USER_BUNDLE_1%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_2%==USER_BUNDLE_2 if %USER_HAS_USER_BUNDLE_2%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_2%==USER_BUNDLE_3 if %USER_HAS_USER_BUNDLE_3%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_2%==USER_BUNDLE_4 if %USER_HAS_USER_BUNDLE_4%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_2%==USER_BUNDLE_5 if %USER_HAS_USER_BUNDLE_5%==YES goto NX_LIC_ALLR_IN_USE
if %USER_BUNDLE_2%==USER_BUNDLE_6 if %USER_HAS_USER_BUNDLE_6%==YES goto NX_LIC_ALLR_IN_USE
REM warning if first and second bundle are not free

:CHANGE_USER_BUNDLE
REM Changes user Bundle to available license bundles
reg add HKEY_CURRENT_USER\Software\%REGTEST%\Common_Licensing /v NX_BUNDLES /d "%BUNDLE_1%,%BUNDLE_2%" /f

I stopped here because it got too complex for me....
:EOF


Eureka!
Posts: 33
Joined: 25 Jul 2019 18:25

Re: CAD start based on license Bundle check

#2 Post by Eureka! » 17 Oct 2019 02:38

See code below for how I interpreted your requirements (not everything was clear to me).
It is merely a rough sketch of the logic you could use; not read-to-run code.

As I don't have enough time to visit this forum often (unfortunately), don't expect quick responses from me.
But the good people on this forum are very capable to help you further -- much better than I ever could.

Code: Select all

@echo off

::	debug
	echo ON

setlocal

::_______________________________________________________________
::
::			SETTINGS
::_______________________________________________________________
::
:: Number of bundles. Wasn't clear: 5 or 6?
	set #BUNDLES=6
	
	
::_______________________________________________________________
::
::			INIT
::_______________________________________________________________
::
	set PREFIX=%RANDOM%
	set ACTIVEBUNDLE=
	set TOTAL.FREE=
	set SESSION_ELSEWHERE=
	
	
::_______________________________________________________________
::
::			ACTION!
::_______________________________________________________________
::

::	Get license info for all %#BUNDLES% bundles in separate temp files

	For /l %%i in (1,1,%#BUNDLES%) DO (
		"PATH\UGFLEXLM\lmutil.exe" lmstat -a -c 28000@LIC_SERVER -f BUNDLE_%%i > "%TEMP%\%PREFIX%_LIC_%%i.deleteme"
	)


::	Check if USER/PC combination actively using any bundle
::	Result in variable %ACTIVEBUNDLE%

	rem findstr /i /m /c:"%USERNAME% %COMPUTERNAME%" "%PREFIX%_LIC_*.txt" >nul && set ACTIVEBUNDLE=1
	for /f "usebackq tokens=3 delims=_." %%x in (`findstr /i /m /c:"%USERNAME% %COMPUTERNAME%" "%PREFIX%_LIC_*.txt"`) DO set ACTIVEBUNDLE=%%x


::	If already active: use that bundle and exit this script
	rem if it was started on PC x by user y, it must already be defined in the registry of user y...

	If defined ACTIVEBUNDLE (
		echo start "" "Path\to\CAD program.exe" -parameter="BUNDLE_%ACTIVEBUNDLE%"
		goto :CLEANUP
	)


::	Get the number of free licenses for each bundle. Results like BUNDLE_2.FREE=0
::	I'm assuming prefix 0's ( "06 available")

	For /l %%i in (1,1,%#BUNDLES%) DO (
		for /f "usebackq tokens=6,11 delims= " %%x in (`findstr /i /C:"Users of BUNDLE" "%TEMP%\%PREFIX%_LIC_%%i.deleteme"`) DO set /a BUNDLE_%%i.FREE=1%%x-1%%y
	)


::	Get total of free licenses (no use to go on if 0)
	rem for /f "usebackq tokens=2 delims==" %%x in (`set BUNDLE_ ^| findstr /i "FREE"`) do set /a total.free+=%x
	for /l %%i in (1,1,%#BUNDLES%) do call set /a TOTAL.FREE+=%bundle_%%i.FREE%	


::	If TOTAL.FREE is zero:
::	Let user know
::	and exit (goto cleanup)


::	Session on another computer?

	find /i "%USERNAME%" "%TEMP%\%PREFIX%_LIC_*.deleteme" | findstr /b /c:"   " && set SESSION_ELSEWHERE=1
	If defined SESSION_ELSEWHERE (
		echo.
		echo session on another computer detected
		echo what do you want to do?
		rem show options and get input using choice.exe 
		rem choice /? for options.
	)


::	If we are here, user has no usable active session and there are sessions available.


	
:: Check user registry to find out configured license bundles

	for /f "skip=2 usebackq tokens=3,4 delims=, " %%x in (`reg.exe query "HKCU\Software\Siemens_PLM_Software\Common_Licensing" /v "NX_BUNDLES" 2^>NUL`) ^
	  Do ( set "FAVORITE1=%%~x"  & set "FAVORITE2=%%~y" )


:: debug
	set FAVORITE


:: FAVORITE1 available? Start CAD.exe using this bundle

	call set FAVORITE1.FREE=%%FAVORITE1%.FREE%
	if %FAVORITE1.FREE% gtr 0 (
		echo start "" "Path\to\CAD program.exe" -parameter="%FAVORITE1%"
	goto :CLEANUP
	)

:: FAVORITE2 available?
	call set FAVORITE2.FREE=%%FAVORITE2%.FREE%
	if %FAVORITE2.FREE% gtr 0 (
		echo start "" "Path\to\CAD program.exe" -parameter="%FAVORITE2%"
	goto :CLEANUP
	)
	

:: If we are here, user has no othere CAD sessions and his favorites are not available,
:: but other bundles are.
:: show available free licenses for each bundle

	for /l %%i in (1,1,%#BUNDLES%) do call echo BUNDLE_%%i has %bundle_%%i.FREE% free licenses.	

:: User must choose what to do:
::	- select bundle (and reconfigure favorites accordingly and start CAD program with that new settings)
::	- Try it anyhow
::	- Drink some coffe and try again later

rem I stopped here because I ran out of time ....



::_______________________________________________________________
::
			:CLEANUP
::_______________________________________________________________
::
	del "%TEMP%\%PREFIX%*.deleteme"

	
goto :EOF

schweigk
Posts: 4
Joined: 08 Oct 2019 06:25

Re: CAD start based on license Bundle check

#3 Post by schweigk » 23 Oct 2019 03:36

Hello Eureka!, thanks for your help.
i will try to build on your proposal, I know its a complicated topic.

Best regards
Eureka! wrote:
17 Oct 2019 02:38
See code below for how I interpreted your requirements (not everything was clear to me).
It is merely a rough sketch of the logic you could use; not read-to-run code.

As I don't have enough time to visit this forum often (unfortunately), don't expect quick responses from me.
But the good people on this forum are very capable to help you further -- much better than I ever could.

Code: Select all

@echo off

::	debug
	echo ON

setlocal

::_______________________________________________________________
::
::			SETTINGS
::_______________________________________________________________
::
:: Number of bundles. Wasn't clear: 5 or 6?
	set #BUNDLES=6
	
	
::_______________________________________________________________
::
::			INIT
::_______________________________________________________________
::
	set PREFIX=%RANDOM%
	set ACTIVEBUNDLE=
	set TOTAL.FREE=
	set SESSION_ELSEWHERE=
	
	
::_______________________________________________________________
::
::			ACTION!
::_______________________________________________________________
::

::	Get license info for all %#BUNDLES% bundles in separate temp files

	For /l %%i in (1,1,%#BUNDLES%) DO (
		"PATH\UGFLEXLM\lmutil.exe" lmstat -a -c 28000@LIC_SERVER -f BUNDLE_%%i > "%TEMP%\%PREFIX%_LIC_%%i.deleteme"
	)


::	Check if USER/PC combination actively using any bundle
::	Result in variable %ACTIVEBUNDLE%

	rem findstr /i /m /c:"%USERNAME% %COMPUTERNAME%" "%PREFIX%_LIC_*.txt" >nul && set ACTIVEBUNDLE=1
	for /f "usebackq tokens=3 delims=_." %%x in (`findstr /i /m /c:"%USERNAME% %COMPUTERNAME%" "%PREFIX%_LIC_*.txt"`) DO set ACTIVEBUNDLE=%%x


::	If already active: use that bundle and exit this script
	rem if it was started on PC x by user y, it must already be defined in the registry of user y...

	If defined ACTIVEBUNDLE (
		echo start "" "Path\to\CAD program.exe" -parameter="BUNDLE_%ACTIVEBUNDLE%"
		goto :CLEANUP
	)


::	Get the number of free licenses for each bundle. Results like BUNDLE_2.FREE=0
::	I'm assuming prefix 0's ( "06 available")

	For /l %%i in (1,1,%#BUNDLES%) DO (
		for /f "usebackq tokens=6,11 delims= " %%x in (`findstr /i /C:"Users of BUNDLE" "%TEMP%\%PREFIX%_LIC_%%i.deleteme"`) DO set /a BUNDLE_%%i.FREE=1%%x-1%%y
	)


::	Get total of free licenses (no use to go on if 0)
	rem for /f "usebackq tokens=2 delims==" %%x in (`set BUNDLE_ ^| findstr /i "FREE"`) do set /a total.free+=%x
	for /l %%i in (1,1,%#BUNDLES%) do call set /a TOTAL.FREE+=%bundle_%%i.FREE%	


::	If TOTAL.FREE is zero:
::	Let user know
::	and exit (goto cleanup)


::	Session on another computer?

	find /i "%USERNAME%" "%TEMP%\%PREFIX%_LIC_*.deleteme" | findstr /b /c:"   " && set SESSION_ELSEWHERE=1
	If defined SESSION_ELSEWHERE (
		echo.
		echo session on another computer detected
		echo what do you want to do?
		rem show options and get input using choice.exe 
		rem choice /? for options.
	)


::	If we are here, user has no usable active session and there are sessions available.


	
:: Check user registry to find out configured license bundles

	for /f "skip=2 usebackq tokens=3,4 delims=, " %%x in (`reg.exe query "HKCU\Software\Siemens_PLM_Software\Common_Licensing" /v "NX_BUNDLES" 2^>NUL`) ^
	  Do ( set "FAVORITE1=%%~x"  & set "FAVORITE2=%%~y" )


:: debug
	set FAVORITE


:: FAVORITE1 available? Start CAD.exe using this bundle

	call set FAVORITE1.FREE=%%FAVORITE1%.FREE%
	if %FAVORITE1.FREE% gtr 0 (
		echo start "" "Path\to\CAD program.exe" -parameter="%FAVORITE1%"
	goto :CLEANUP
	)

:: FAVORITE2 available?
	call set FAVORITE2.FREE=%%FAVORITE2%.FREE%
	if %FAVORITE2.FREE% gtr 0 (
		echo start "" "Path\to\CAD program.exe" -parameter="%FAVORITE2%"
	goto :CLEANUP
	)
	

:: If we are here, user has no othere CAD sessions and his favorites are not available,
:: but other bundles are.
:: show available free licenses for each bundle

	for /l %%i in (1,1,%#BUNDLES%) do call echo BUNDLE_%%i has %bundle_%%i.FREE% free licenses.	

:: User must choose what to do:
::	- select bundle (and reconfigure favorites accordingly and start CAD program with that new settings)
::	- Try it anyhow
::	- Drink some coffe and try again later

rem I stopped here because I ran out of time ....



::_______________________________________________________________
::
			:CLEANUP
::_______________________________________________________________
::
	del "%TEMP%\%PREFIX%*.deleteme"

	
goto :EOF

Eureka!
Posts: 33
Joined: 25 Jul 2019 18:25

Re: CAD start based on license Bundle check

#4 Post by Eureka! » 24 Oct 2019 15:41

Good luck!

(and let us know the results ..)

Post Reply