明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: 寒风

哪位朋友能帮我写一个LISP小程序,就是在CAD中抓取一个矩形的对角点,计算出其面积

  [复制链接]
 楼主| 发表于 2004-11-27 12:58:00 | 显示全部楼层
就是在CAD中选择两个点计算出来的啊。
发表于 2004-11-27 15:33:00 | 显示全部楼层
本帖最后由 作者 于 2004-11-29 12:39:29 编辑
  1. (setq filename (strcat (getenv "TMP") "paramseting_by_meflying.ini"))
  2. (defun Getxxx(fun msg def / val def2)
  3.    (if def
  4.        (progn
  5.            (if (/= (type def) 'STR) (setq def2 (rtos def)))
  6.            (setq val (fun (strcat msg "<" def2 ">:")))
  7.            (if (or (not val) (= val "")) def val)
  8.        )
  9.        (fun (strcat msg ":"))
  10.    )
  11. )
  12. (defun c:set( / f hei xs gap)
  13.    (if (findfile filename)
  14.        (progn
  15.            (setq f (open (findfile filename) "r"))
  16.            (setq hei (atof (read-line f)))
  17.            (setq xs (atoi (read-line f)))
  18.            (setq gap (atof (read-line f)))
  19.            (close f)
  20.        )
  21.    )
  22.    (setq hei (getxxx getreal "\n字体大小" hei))
  23.    (setq xs (getxxx getint "\n保留小数位数" xs))
  24.    (setq gap (getxxx getreal "\n文本间隔" gap))
  25.    (setq f (open filename "w"))
  26.    (mapcar '(lambda(e) (write-line (rtos e) f)) (list hei xs gap))
  27.    (close f)
  28.    (princ "\n设置完成!键入 TT 运行程序。")
  29.    (princ)
  30. )
  31. (defun c:TT( / val f hei xs gap pts pts pt2 pt2 len wid os)
  32.    (if (not (findfile filename))
  33.        (progn
  34.            (initget "S X")
  35.            (setq val (getkword "\n未设置参数![设置(S)/退出(X)]<退出>:"))
  36.            (if (not val) (setq val "X"))
  37.            (if (= val "S") (c:set))
  38.        )
  39.    )
  40.    (if (/= val "X")
  41.        (progn
  42.            (setq f (open (findfile filename) "r"))
  43.            (setq hei (atof (read-line f)))
  44.            (setq xs (atoi (read-line f)))
  45.            (setq gap (atof (read-line f)))
  46.            (close f)           
  47.            (prompt (apply 'strcat (list "\n字高=" (rtos hei) ", 保留小数位=" (rtos xs) ", 文本间隔=" (rtos gap))))
  48.            (setq pts (getpoint "\n选择文本其始点:"))
  49.            (if pts
  50.   (progn
  51.      (while (and (setq pt1 (getpoint "\n选择第一点:")) (setq pt2 (getcorner pt1 "\n选择第二点:")))
  52.          (setq len (/ (abs (- (car pt1) (car pt2))) 1000))
  53.          (setq wid (/ (abs (- (cadr pt1) (cadr pt2))) 1000))
  54.          (setq os (getvar "osmode"))
  55.          (setvar "osmode" 0)
  56.          (command "_.text" pts 1000  "" (strcat (rtos len 2 xs) "   x   " (rtos wid 2 xs) "   =   " (rtos (* len wid) 2 xs)))
  57.          (setvar "osmode" os)
  58.          (setq pts (polar pts (* 1.5 pi) gap))
  59.      );while
  60.   );progn
  61.            );if
  62.             
  63.        )
  64.    )
  65.    (princ)
  66. )
 楼主| 发表于 2004-11-29 09:41:00 | 显示全部楼层
太好了,太谢谢你了。但是你好象没有转换成米为单位来表示。能帮我转一下吗?
发表于 2004-11-29 12:40:00 | 显示全部楼层
已在12楼改好,输出以米为单位,设置中的字高,字间距仍然以毫米为单位
 楼主| 发表于 2004-11-29 13:37:00 | 显示全部楼层
meflying发表于2004-11-29 12:40:00已在12楼改好,输出以米为单位,设置中的字高,字间距仍然以毫米为单位

谢谢,完全符合要求。
发表于 2011-7-15 00:26:14 | 显示全部楼层
这个程序好,就是多次选择图形的“长*宽=值 ”  不能自动的换行,哪位朋友给改改
发表于 2011-7-17 18:03:11 | 显示全部楼层
顶起来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-6-10 05:13 , Processed in 0.156758 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表