寒风 发表于 2004-11-27 12:58:00

就是在CAD中选择两个点计算出来的啊。

meflying 发表于 2004-11-27 15:33:00

本帖最后由 作者 于 2004-11-29 12:39:29 编辑

(setq filename (strcat (getenv "TMP") "paramseting_by_meflying.ini"))
(defun Getxxx(fun msg def / val def2)
   (if def
       (progn
         (if (/= (type def) 'STR) (setq def2 (rtos def)))
         (setq val (fun (strcat msg "<" def2 ">:")))
         (if (or (not val) (= val "")) def val)
       )
       (fun (strcat msg ":"))
   )
)
(defun c:set( / f hei xs gap)
   (if (findfile filename)
       (progn
         (setq f (open (findfile filename) "r"))
         (setq hei (atof (read-line f)))
         (setq xs (atoi (read-line f)))
         (setq gap (atof (read-line f)))
         (close f)
       )
   )
   (setq hei (getxxx getreal "\n字体大小" hei))
   (setq xs (getxxx getint "\n保留小数位数" xs))
   (setq gap (getxxx getreal "\n文本间隔" gap))
   (setq f (open filename "w"))
   (mapcar '(lambda(e) (write-line (rtos e) f)) (list hei xs gap))
   (close f)
   (princ "\n设置完成!键入 TT 运行程序。")
   (princ)
)
(defun c:TT( / val f hei xs gap pts pts pt2 pt2 len wid os)
   (if (not (findfile filename))
       (progn
         (initget "S X")
         (setq val (getkword "\n未设置参数![设置(S)/退出(X)]<退出>:"))
         (if (not val) (setq val "X"))
         (if (= val "S") (c:set))
       )
   )
   (if (/= val "X")
       (progn
         (setq f (open (findfile filename) "r"))
         (setq hei (atof (read-line f)))
         (setq xs (atoi (read-line f)))
         (setq gap (atof (read-line f)))
         (close f)         
         (prompt (apply 'strcat (list "\n字高=" (rtos hei) ", 保留小数位=" (rtos xs) ", 文本间隔=" (rtos gap))))
         (setq pts (getpoint "\n选择文本其始点:"))
         (if pts
(progn
   (while (and (setq pt1 (getpoint "\n选择第一点:")) (setq pt2 (getcorner pt1 "\n选择第二点:")))
         (setq len (/ (abs (- (car pt1) (car pt2))) 1000))
         (setq wid (/ (abs (- (cadr pt1) (cadr pt2))) 1000))
         (setq os (getvar "osmode"))
         (setvar "osmode" 0)
         (command "_.text" pts 1000"" (strcat (rtos len 2 xs) "   x   " (rtos wid 2 xs) "   =   " (rtos (* len wid) 2 xs)))
         (setvar "osmode" os)
         (setq pts (polar pts (* 1.5 pi) gap))
   );while
);progn
         );if
            
       )
   )
   (princ)
)

寒风 发表于 2004-11-29 09:41:00

太好了,太谢谢你了。但是你好象没有转换成米为单位来表示。能帮我转一下吗?

meflying 发表于 2004-11-29 12:40:00

已在12楼改好,输出以米为单位,设置中的字高,字间距仍然以毫米为单位

寒风 发表于 2004-11-29 13:37:00

meflying发表于2004-11-29 12:40:00static/image/common/back.gif已在12楼改好,输出以米为单位,设置中的字高,字间距仍然以毫米为单位

<BR>谢谢,完全符合要求。

bai2000 发表于 2011-7-15 00:26:14

这个程序好,就是多次选择图形的“长*宽=值 ”不能自动的换行,哪位朋友给改改

bai2000 发表于 2011-7-17 18:03:11

顶起来
页: 1 [2]
查看完整版本: 哪位朋友能帮我写一个LISP小程序,就是在CAD中抓取一个矩形的对角点,计算出其面积