改你的程序确实比较困难,因为不明白程序作者的意图。 还是贴上我自己的程序吧。 (defun c:scd (/ sc ss oldds oldfac poi n en myerr olderr osm ort) ;;;**************************************************** ;;程序功能:变比例尺寸不变 ;;作者:英雄无敌 ;;QQ:280212043 ;;Email:280212043 (defun myerr (msg) ;;************************************************ ;;在这里写入错误处理函数 (setq *error* olderr) (princ msg) ;;; (if osm ;;; (setvar "osmode" osm) ;;; ) ;;; (if ort ;;; (setvar "orthomode" ort) ;;; ) (command "undo" "E") ;;********************** (princ) ) (setq olderr *error*) (setq *error* myerr) ;;初始化 ;;; (setq osm (getvar "osmode")) ;;; (setq ort (getvar "orthomode")) ;;; (setvar "osmode" 0) ;;; (setvar "orthomode" 0) ;;;**************************************************** ;;在这里写入正常工作的函数 (IF (SETQ ss (ssget)) (PROGN (command "undo" "BE") (command "scale" ss "") (while (= nil (setq poi (getpoint "\n请输入基点:")))) (command poi (SETQ sc (getreal "\n请输入缩放比例 :"))) (setq ss (ssget "p" '((0 . "dimension")))) (if ss (progn (setq oldds (getvar "dimstyle")) (setq n -1) (repeat (sslength ss) (command "_dimstyle" "restore" "" (setq en (ssname ss (setq n (1+ n)))) ) (setq oldfac (getvar "dimlfac")) (SETVAR "DIMLFAC" (/ oldfac sc)) (COMMAND "DIMSTYLE" "_APPLY" en "") ) (command "-dimstyle" "r" oldds) ) ) ) ) ;;;**************************************************** ;;结束 ;;; (setvar "osmode" osm) ;;; (setvar "orthomode" ort) (command "undo" "E") (setq *error* olderr) (princ) )
|