Ik heb een aantal lispen op usb stick staan zodat ik op mijn eigenwijze wijze op verschillende pc's kan werken. Onder ander ook de zeer geliefde MDItab18.arx.
Deze heeft een 32 en een 64 bit versie welke beide op mn USB stick staan.
Is het mogelijk om lisp te laten bepalen op welk systeem (32 of 64) ik werk.
Welke variabel moet ik daar voor hebben?
Bedank voor uw reactie
Michel
Beste Michel,
Probeer:
(GETENV "PROCESSOR_ARCHITECTURE")
Met vriendelijke groet, HofCAD CSI.
Beste Hofcad,
We zijn op de goede weg.
Command: (GETENV "PROCESSOR_ARCHITECTURE")
"AMD64"
En volgens de stikker op de kast zou er een Intel Xeon in moeten zitten.
Is deze variabel AMD64 geldig voor alle pc's? of moet ik checken op de laatste 2 karakters?
Michel
Beste Michel,
Ik krijg met:
(GETENV "PROCESSOR_ARCHITECTURE")
de prompt
"x86"
.
(defun C:is64bit (/) (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE")))
Met vriendelijke groet, HofCAD CSI.
PS1 (vl-string-search "X64" (strcase (getvar 'PLATFORM)))
PS2(defun Acad64Bit-version ()
;;; Get from http://forum.dwg.ru/showthread.php?t=31568
;;;vlax-get-acad-object in 64-bit return a longer object ID number
;;;than in the 32-bit so the function Acad64Bit-version
;;; will return T if AutoCAD is a 64-bit version.
(vl-load-com)
(> (strlen (vl-prin1-to-string (vlax-get-acad-object))) 40)
)
Super beste Hofcad,
Met de code van PS2 heb ik een controle routine gemaakt en het werkt op mijn 64bit pc. Ik ga er vanuit dat het dan ook op een 32bit werk.
(
(vl-load-com)
(if (= (> (strlen (vl-prin1-to-string (vlax-get-acad-object))) 40) T)
(arxload "64bit\\Mditab18")
(arxload "32bit\\Mditab18")
)
)
bovenstaande code zit in een routine die wordt op gestart bij het begin van acad. Hier in staan al mijn "eigen" routines.
Heel hartelijk dank voor deze input.
Michel
Michel,
Werkt dit:
(findfile "C:\\Program Files (x86)")
en dit
(vl-file-directory-p "C:\\Program Files (x86)")
Met vriendelijke groet, HofCAD CSI.
PS (defun is64bit (/) (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE")))
Citaat van: HofCAD op di 05 06 2012, 13:55:14
Michel,
Werkt dit:
(findfile "C:\\Program Files (x86)")
geeft:
Command: (findfile "C:\\Program Files (x86)")
"C:\\Program Files (x86)"
en dit
(vl-file-directory-p "C:\\Program Files (x86)")
geeft:
Command: (vl-file-directory-p "C:\\Program Files (x86)")
T
Met vriendelijke groet, HofCAD CSI.
PS (defun is64bit (/) (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE")))
geeft:
Command: (defun is64bit (/) (vl-string-search "64" (getenv
"PROCESSOR_ARCHITECTURE")))
IS64BIT
Command: (is64bit)
3
Beste Michel,
Dat zijn dus ook alternatieven!
Bedankt.
Met vriendelijke groet, HofCAD CSI.
Wellicht interessant: dit onderwerp is kort geleden ook voorbij gekomen op een Bricsys forum:
http://www.bricsys.com/common/support/forumthread.jsp?id=17883
Als ik het nu allemaal goed begrijp (roy_043) is het belangrijker om te weten welke Acad je hebt (32 of 64) als dat je weet welke PC (32 of 64) je hebt. Dit omdat je op een 64 pc ook nog wel een 32 Acad kan installeren.
Met de code die ik gebruik:
(if (= (> (strlen (vl-prin1-to-string (vlax-get-acad-object))) 40) T)
controleer ik welke Acad ik heb, waarbij T=64 geldt.
Goed bezig. Toch??
Michel