lisp中的一件事是READ-CHAR,这样你就可以读取文件的开头并查看acad?会有一个游戏。
有一个谷歌
- (DEFUN rb (/ buffer char fh)
- (setq buffer '())
- (SETQ fh (OPEN "d:\\ACADTEMP\\TEST1.dwg"
- "r"
- )
- n -1
- )
- (WHILE ((defun mp-get-dwg-ver ( dwg / handle stream )
-
- ;; Return the specified drawing's version as a string representing
- ;; the AutoCAD versions that create and support the version natively,
- ;; e.g. "2018/2019/2020/2021". Of course drawings saved by Civil3D
- ;; enjoy a special versioning hell that doesn't precisely follow this
- ;; schema. Thanks Autodesk.
-
- (cond
- ((null (setq handle (open dwg "r"))) nil) ;; could not open drawing, return nil
- ((progn (setq stream (substr (read-line handle) 1 6))(close handle)))
- ((eq "AC1032" stream) "2018/2019/2020/2021")
- ((eq "AC1027" stream) "2013/2014/2015/2016/2017")
- ((eq "AC1024" stream) "2010/2011/2012")
- ((eq "AC1021" stream) "2007/2008/2009")
- ((eq "AC1018" stream) "2004/2005/2006")
- ((eq "AC1015" stream) "2000/2000I/2002") ;; was 2000i, forced uppercase
- ((eq "AC1014" stream) "R14")
- ((eq "AC1012" stream) "13")
- ((eq "AC1009" stream) "11,12")
- ((eq "AC1006" stream) "10")
- ((eq "AC1004" stream) "9")
- ((eq "AC1003" stream) "2.6")
- ((eq "AC1002" stream) "2.5")
- ((eq "AC2.10" stream) "2.10")
- ((eq "AC1.50" stream) "2.0")
- ((eq "AC1.4" (setq stream (substr stream 1 5))) "1.4")
- ((eq "AC1.2" stream) "1.2")
- ((eq "MC0.0" stream) "1.1")
- ("Doesn't appear to be an AutoCAD dwg, cue sad trombone.")
- )
- )
干杯。
|