2006 = 16.2Kinda related:
2005 = 16.1
2004 = 16.0
2002 = 15.06
2000i = 15.05
2000 = 15.0
r14.01 = 14.01 (from Bob's list)
r14 = 14.0
(defun GetDwgVersion ( DwgName / Path Handle Header )
(if (setq Path (FindFile DwgName))
(cond
( (setq Handle (open Path "r"))
(setq Header (substr (read-line Handle) 1 6))
(close Handle)
(cond
((eq Header "AC1018") 16)
((eq Header "AC1015") 15)
((eq Header "AC1014") 14)
((eq Header "AC1012") 13)
((eq Header "AC1009") 12)
((eq Header "AC1006") 10)
((eq Header "AC1004") 9)
((eq Header "AC1002") 2.6)
((eq Header "AC1.50") 2.05)
(t 0) ; 0 = undeterminable
)
)
)
)
)
(defun GetDwgVersion ( dwgName / path handle header )
(if (setq path (findfile dwgName))
(cond
( (setq handle (open Path "r"))
(setq header (substr (read-line Handle) 1 6))
(close handle)
(cond
((eq header "AC1027") 19) [color=green];; extrapolated guess, will verify later[/color]
((eq header "AC1024") 18) [color=green];; extrapolated guess, will verify later[/color]
((eq header "AC1021") 17)
((eq header "AC1018") 16)
((eq header "AC1015") 15)
((eq header "AC1014") 14)
((eq header "AC1012") 13)
((eq header "AC1009") 12)
((eq header "AC1006") 10)
((eq header "AC1004") 9)
((eq header "AC1002") 2.6)
((eq header "AC1.50") 2.05)
(t 0) [color=green];; 0 = not determinable[/color]
)
)
)
)
)
(defun GetDwgVersion ( dwgName / path handle header )
[color=green] ;; If the drawing's version can be determined
;; it's returned as an integer, otherwise nil.[/color]
(if (setq path (findfile dwgName))
(cond
( (setq handle (open Path "r"))
(setq header (substr (read-line Handle) 1 6))
(close handle)
(cdr
(assoc header
'(
("AC1027" . 19) [color=green];; logical extrapolated guess[/color]
("AC1024" . 18) [color=green];; "" "" ""[/color]
("AC1021" . 17)
("AC1018" . 16)
("AC1015" . 15)
("AC1014" . 14)
("AC1012" . 13)
("AC1009" . 12)
("AC1006" . 10)
("AC1004" . 9)
("AC1002" . 2.6)
("AC1.50" . 2.05)
)
)
)
)
)
)
)
Here's a different flavor using assoc instead of cond, I like it better.Code: [Select](defun GetDwgVersion ( dwgName / path handle header )
[color=green] ;; If the drawing's version can be determined
;; it's returned as an integer, otherwise nil.[/color]
(if (setq path (findfile dwgName))
(cond
( (setq handle (open Path "r"))
(setq header (substr (read-line Handle) 1 6))
(close handle)
(cdr
(assoc header
'(
("AC1027" . 19) [color=green];; logical extrapolated guess[/color]
("AC1024" . 18) [color=green];; "" "" ""[/color]
("AC1021" . 17)
("AC1018" . 16)
("AC1015" . 15)
("AC1014" . 14)
("AC1012" . 13)
("AC1009" . 12)
("AC1006" . 10)
("AC1004" . 9)
("AC1002" . 2.6)
("AC1.50" . 2.05)
)
)
)
)
)
)
)
(princ (strcat "\n*** --------- AutoCAD Release " (rtos (GetDwgVersion (getvar "dwgname")) 2 0) " --------- ***"))
(defun GetDwgVersion (dwgName / path handle header)
;; If the drawing's version can be determined
;; it's returned as an integer, otherwise nil.
(if (setq path (findfile dwgName))
(cond
( (setq handle (open Path "r"))
(setq header (substr (read-line Handle) 1 6))
(close handle)
(cdr
(assoc header
'(
("AC1024" . 2010)
("AC1021" . 2008)
("AC1018" . 2004)
("AC1015" . 2000)
("AC1014" . 14)
("AC1012" . 13)
("AC1009" . 12)
)
)
)
)
)
)
)
(princ (strcat "\n*** -------- AutoCAD Release " (rtos (GetDwgVersion (getvar "dwgname")) 2 0) " -------- ***"))
(if (/= (getvar "dwgtitled") 0)
(princ (strcat "\n*** -------- AutoCAD Release " (rtos (GetDwgVersion (getvar "dwgname")) 2 0) " -------- ***"))
)
I'm placing this in my startup to verify the current open drawing version last saved in.Doesn't AutoCAD already do this? Mine does.Code: [Select](princ (strcat "\n*** --------- AutoCAD Release " (rtos (GetDwgVersion (getvar "dwgname")) 2 0) " --------- ***"))
Opening an AutoCAD 2007 format file.
Regenerating model.
Tried on AutoCAD Civil 3D 2013:I'm placing this in my startup to verify the current open drawing version last saved in.Doesn't AutoCAD already do this? Mine does.Code: [Select](princ (strcat "\n*** --------- AutoCAD Release " (rtos (GetDwgVersion (getvar "dwgname")) 2 0) " --------- ***"))
->
; error: no function definition: GETDWGVERSION
Yep, sorry I opened other window of Autocad with no function loaded :ugly:Happens to all of us. :lol:
(getvar "acadver")
and take first 4 symbols of string
Usually I just usedCode: [Select](getvar "acadver")
and take first 4 symbols of string
(strcat "AutoCAD " (substr (ver) 13 4) " Version" " => " (substr (getvar "acadver") 1 4))