找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 583|回复: 2

[求助] [求助]:这是我在一本书上找到的LISP程序

[复制链接]
发表于 2003-2-17 19:43:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
这是我在一本书上找到的LISP程序,可以在画矩形的同时显示出边长和面积,不过这个程序和我预想的有一些差别,我想边长的单位应是毫米,面积的单位应是平方米。这样符合建筑绘图习惯,另外如果能同时绘出墙厚,显示出轴线面积和使用面积,就是一个非常好的草图绘制工具了。 哪位高手帮忙改一下谢谢!


  1. (defun DRAWBOX (PT1 PT2 / PT3 PT4)
  2.   (grdraw PT1
  3.   (setq PT3 (list (car PT2) (cadr PT1)))
  4.   -1
  5.   )
  6.   (grdraw PT1
  7.   (setq PT4 (list (car PT1) (cadr PT2)))
  8.   -1
  9.   )
  10.   (grdraw PT3 PT2 -1)
  11.   (grdraw PT4 PT2 -1)
  12. )
  13. (defun C:ROOM (/ LLP P LOOP URP SOURCE PT LRP ULP)
  14.   (initget 1)
  15.   (setq LLP  (getpoint "\nFirst point :")
  16. URP  LLP
  17. LOOP t
  18.   )
  19.   (DRAWBOX LLP URP)
  20.   (prompt "\nScond point :")
  21.   (while LOOP
  22.     (setq URP1 (grread t 1 0))
  23.     (setq SOURCE (car URP1)
  24.   PT (cadr URP1)
  25.     )
  26.     (cond
  27.       ((and (= SOURCE 5)
  28.     (or (/= (car URP) (car PT))
  29. (/= (cadr URP) (cadr PT))
  30.     )
  31.        )
  32.        (progn
  33. (DRAWBOX LLP URP)
  34. (setq W (- (car URP) (car LLP)))
  35. (setq L (- (cadr URP) (cadr LLP)))
  36. (setq SM (* (/ W 10.0) (/ L 10.0)))
  37. (setq X (strcat (rtos (abs (/ W 10)) 2 1)
  38. "cm*"
  39. (rtos (abs (/ L 10)) 2 1)
  40. "cm 面积= "
  41. (rtos (abs SM) 2 2)
  42. "cm^2"
  43. )
  44. )
  45.            ;;(grtext 1 X)
  46. (setvar "MODEMACRO" X)
  47.        )
  48.        (DRAWBOX LLP PT)
  49.        (setq URP PT)
  50.       )
  51.       ((or (= SOURCE 3)
  52.    (and (= SOURCE 2) (or (= PT 13) (= PT 32)))
  53.        )
  54.        (DRAWBOX LLP URP)
  55.        (setq LOOP NIL)
  56.       )
  57.     )
  58.   )
  59.   (setq LRP (list (car URP) (cadr LLP)))
  60.   (setq ULP (list (car LLP) (cadr URP)))
  61.   (command "pline" LLP LRP URP ULP "c")
  62. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2003-2-17 21:34:46 | 显示全部楼层
你讲的第二个要求好像比较麻烦,第一个要求的话改一下就很简单了。
找到这一段改成下面的就行了
(progn
(DRAWBOX LLP URP)
(setq W (- (car URP) (car LLP)))
(setq L (- (cadr URP) (cadr LLP)))
(setq SM (* (/ W 1000.0) (/ L 1000.0)))
(setq X (strcat (rtos (abs  W) 2 1)
"mm*"
(rtos (abs L) 2 1)
"mm 面积= "
(rtos (abs SM) 2 2)
"m^2"
)

偷了下懒,没有验证,你试一下吧:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-2-20 22:08:39 | 显示全部楼层
谢谢!挺好用的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-28 07:02 , Processed in 0.226636 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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