;;; Описание : В результате некорректной работы программы, сбоя, выхода по ESC и другим ;;; причинам, возникает необходимость восстановить состояние системных переменных. ;;; Причем Вы можете даже не знать каких именно, поскольку не все так очевидно. ;;; Программа запоминает и восстанавливает их все сразу. ;;; Сделайте одну кнопку с макросом, включающим функцию c:get_sysvar. При первом ;;; нажатии исходное состояние системных переменных будет сохранено в списке ;;; slist (переменная sw_get_sysvar будет принимать значения 1 или nil в ;;; зависимости от четности нажатия на кнопку. ;;; При втором нажатии (когда вы уже провели какие-то изменения в системных ;;; переменных, а по одной восстанавливать уже нет никакого желания) все переменные ;;; будут восстановлены. ;;; Третье нажатие опять запомнит новое (или "старое) состояние системы, четвертое - ;;; восстановит (от третьего нажатия). И т.д. ;;; Таким образом, если вы хотите все время приводить систему в первоначальное и ;;; неизменное состояние - нажмите 2 раза. ;;; ЗЫ: Вы можете отредактировать список запонаемых и восстанавливаемых переменных ;;; по своему усмотрению. ;;; ;;; Prepared by : Okonechnikov A.N. ;;; ;;; Moscow ;;; Russia ;;;--------------------------------------------------------------------------------- ;;; Last revision : 2/09/2002. (defun c:get_sysvar (/ list_sysvar s ) (setq list_sysvar '("ACADLSPASDOC" "ACISOUTVER" "AFLAGS" "ANGBASE" "ANGDIR" "APBOX" "APERTURE" "ATTDIA" "ATTMODE" "ATTREQ" "AUDITCTL" "AUNITS" "AUPREC" "AUTOSNAP" "BINDTYPE" "BLIPMODE" "CECOLOR" "CELTSCALE" "CELTYPE" "CELWEIGHT" "CHAMFERA" "CHAMFERB" "CHAMFERC" "CHAMFERD" "CHAMMODE" "CIRCLERAD" "CLAYER" "CMDECHO" "CMLJUST" "CMLSCALE" "CMLSTYLE" "COMPASS" "COORDS" "CTAB" "CURSORSIZE" "CVPORT" "DCTCUST" "DCTMAIN" "DELOBJ" "DEMANDLOAD" "DIMADEC" "DIMALT" "DIMALTD" "DIMALTF" "DIMALTRND" "DIMALTTD" "DIMALTTZ" "DIMALTU" "DIMALTZ" "DIMAPOST" "DIMASO" "DIMASZ" "DIMATFIT" "DIMAUNIT" "DIMAZIN" "DIMBLK" "DIMBLK1" "DIMBLK2" "DIMCEN" "DIMCLRD" "DIMCLRE" "DIMCLRT" "DIMDEC" "DIMDLE" "DIMDLI" "DIMDSEP" "DIMEXE" "DIMEXO" "DIMFIT" "DIMFRAC" "DIMGAP" "DIMJUST" "DIMLDRBLK" "DIMLFAC" "DIMLIM" "DIMLUNIT" "DIMLWD" "DIMLWE" "DIMPOST" "DIMRND" "DIMSAH" "DIMSCALE" "DIMSD1" "DIMSD2" "DIMSE1" "DIMSE2" "DIMSHO" "DIMSOXD" "DIMTAD" "DIMTDEC" "DIMTFAC" "DIMTIH" "DIMTIX" "DIMTM" "DIMTMOVE" "DIMTOFL" "DIMTOH" "DIMTOL" "DIMTOLJ" "DIMTP" "DIMTSZ" "DIMTVP" "DIMTXSTY" "DIMTXT" "DIMTZIN" "DIMUNIT" "DIMUPT" "DIMZIN" "DISPSILH" "DONUTID" "DONUTOD" "DRAGMODE" "DRAGP1" "DRAGP2" "DWGCHECK" "EDGEMODE" "ELEVATION" "EXPERT" "EXPLMODE" "EXTNAMES" "FACETRATIO" "FACETRES" "FILEDIA" "FILLETRAD" "FILLMODE" "FONTALT" "FONTMAP" "GRIDMODE" "GRIDUNIT" "GRIPBLOCK" "GRIPCOLOR" "GRIPHOT" "GRIPS" "GRIPSIZE" "HIDEPRECISION" "HIGHLIGHT" "HPANG" "HPBOUND" "HPDOUBLE" "HPNAME" "HPSCALE" "HPSPACE" "HYPERLINKBASE" "IMAGEHLT" "INDEXCTL" "INETLOCATION" "INSBASE" "INSNAME" "INSUNITS" "INSUNITSDEFSOURCE" "INSUNITSDEFTARGET" "ISAVEBAK" "ISAVEPERCENT" "ISOLINES" "LASTPOINT" "LIMCHECK" "LISPINIT" "LOGFILEMODE" "LOGFILEPATH" "LTSCALE" "LUNITS" "LUPREC" "LWDEFAULT" "LWDISPLAY" "LWUNITS" "MAXACTVP" "MAXSORT" "MBUTTONPAN" "MEASUREINIT" "MEASUREMENT" "MENUCTL" "MENUECHO" "MIRRTEXT" "MODEMACRO" "MTEXTED" "NOMUTT" "OFFSETDIST" "OFFSETGAPTYPE" "OLEHIDE" "OLEQUALITY" "OLESTARTUP" "ORTHOMODE" "OSMODE" "OSNAPCOORD" "PAPERUPDATE" "PDMODE" "PDSIZE" "PICKADD" "PICKAUTO" "PICKBOX" "PICKDRAG" "PICKFIRST" "PICKSTYLE" "PLINEGEN" "PLINETYPE" "PLINEWID" "PLOTROTMODE" "PLOTTER" "PLQUIET" "POLARADDANG" "POLARANG" "POLARDIST" "POLARMODE" "POLYSIDES" "PROJMODE" "PROXYGRAPHICS" "PROXYNOTICE" "PROXYSHOW" "PSLTSCALE" "PSPROLOG" "PSQUALITY" "PSTYLEPOLICY" "PSVPSCALE" "QTEXTMODE" "RASTERPREVIEW" "REGENMODE" "RE-INIT" "RTDISPLAY" "SAVEFILEPATH" "SAVETIME" "SDI" "SHADEDGE" "SHADEDIF" "SHORTCUTMENU" "SHPNAME" "SKETCHINC" "SKPOLY" "SNAPANG" "SNAPBASE" "SNAPISOPAIR" "SNAPMODE" "SNAPSTYL" "SNAPTYPE" "SNAPUNIT" "SOLIDCHECK" "SORTENTS" "SPLFRAME" "SPLINESEGS" "SPLINETYPE" "SURFTAB1" "SURFTAB2" "SURFTYPE" "SURFU" "SURFV" "TABMODE" "TEXTEVAL" "TEXTFILL" "TEXTQLTY" "TEXTSIZE" "TEXTSTYLE" "THICKNESS" "TILEMODE" "TOOLTIPS" "TRACEWID" "TRACKPATH" "TREEDEPTH" "TREEMAX" "TRIMMODE" "TSPACEFAC" "TSPACETYPE" "TSTACKALIGN" "TSTACKSIZE" "UCSAXISANG" "UCSFOLLOW" "UCSICON" "UCSORTHO" "UCSVIEW" "UCSVP" "UNITMODE" "USERI1" "USERI2" "USERI3" "USERI4" "USERI5" "USERR1" "USERR2" "USERR3" "USERR4" "USERR5" "USERS1" "USERS2" "USERS3" "USERS4" "USERS5" "VISRETAIN" "WHIPARC" "WMFBKGND" "WORLDVIEW" "XCLIPFRAME" "XEDIT" "XFADECTL" "XLOADCTL" "XLOADPATH" "XREFCTL" "ZOOMFACTOR")) (if (not sw_get_sysvar) (progn (get_list list_sysvar) (setq sw_get_sysvar 1) (prompt "Системные переменные сохранены") ) (progn (set_list) (setq sw_get_sysvar nil) (setq slist nil) (prompt "Системные переменные восстановлены") ) ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun get_list (s) (setq slist '()) (repeat (length s) (setq slist (append slist (list (list (car s) (getvar (car s)))))) (setq s (cdr s)) ) ) ;;------------------------------------------------------------------------ (defun set_list () (repeat (length slist) (setvar (caar slist) (cadar slist)) (setq slist (cdr slist)) ) )