马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
这是我在一本书上找到的LISP程序,可以在画矩形的同时显示出边长和面积,不过这个程序和我预想的有一些差别,我想边长的单位应是毫米,面积的单位应是平方米。这样符合建筑绘图习惯,另外如果能同时绘出墙厚,显示出轴线面积和使用面积,就是一个非常好的草图绘制工具了。 哪位高手帮忙改一下谢谢!

- (defun DRAWBOX (PT1 PT2 / PT3 PT4)
- (grdraw PT1
- (setq PT3 (list (car PT2) (cadr PT1)))
- -1
- )
- (grdraw PT1
- (setq PT4 (list (car PT1) (cadr PT2)))
- -1
- )
- (grdraw PT3 PT2 -1)
- (grdraw PT4 PT2 -1)
- )
- (defun C:ROOM (/ LLP P LOOP URP SOURCE PT LRP ULP)
- (initget 1)
- (setq LLP (getpoint "\nFirst point :")
- URP LLP
- LOOP t
- )
- (DRAWBOX LLP URP)
- (prompt "\nScond point :")
- (while LOOP
- (setq URP1 (grread t 1 0))
- (setq SOURCE (car URP1)
- PT (cadr URP1)
- )
- (cond
- ((and (= SOURCE 5)
- (or (/= (car URP) (car PT))
- (/= (cadr URP) (cadr PT))
- )
- )
- (progn
- (DRAWBOX LLP URP)
- (setq W (- (car URP) (car LLP)))
- (setq L (- (cadr URP) (cadr LLP)))
- (setq SM (* (/ W 10.0) (/ L 10.0)))
- (setq X (strcat (rtos (abs (/ W 10)) 2 1)
- "cm*"
- (rtos (abs (/ L 10)) 2 1)
- "cm 面积= "
- (rtos (abs SM) 2 2)
- "cm^2"
- )
- )
- ;;(grtext 1 X)
- (setvar "MODEMACRO" X)
- )
- (DRAWBOX LLP PT)
- (setq URP PT)
- )
- ((or (= SOURCE 3)
- (and (= SOURCE 2) (or (= PT 13) (= PT 32)))
- )
- (DRAWBOX LLP URP)
- (setq LOOP NIL)
- )
- )
- )
- (setq LRP (list (car URP) (cadr LLP)))
- (setq ULP (list (car LLP) (cadr URP)))
- (command "pline" LLP LRP URP ULP "c")
- )
|