明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2553|回复: 9

这是我在一本书上找到的LISP程序,可以在画矩形的同时显示出边长和面积[求助]

[复制链接]
发表于 2003-2-12 21:01:00 | 显示全部楼层 |阅读模式
这是我在一本书上找到的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)
       (setp llp (getpoint "\nFirst point :") urp llp loop t)
       (drawbox llp urp)
       (prompt "\nScond point :")
       (while loop
              (setq urp1 (grread t))
              (setq source (car urp1) pt (cadr urp1))
              (cond
                ((and (= source 5)
                 (or (/= (car urp) (car pt))
                     (/= (cadr urp) (cadr pt))
                 )
              )
        (progn
              (drawbox llp utp)
              (setq w (- (car urp) (car llp)))
              (setq l (- (cadr urp) (cadr llp)))
              (setq sm (* (/ w 1000.0) (/ l 1000.0)))
              (setq x (strcat (rtos w 2 0) "x"
                              (rtos l 2 0) "A=" (rtos (ads sm) 2 2)))
              (grtext -2 x)
         )
         (drawbox llp pt)
         (setp 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 uru)))
       (command "pline" llp "w" 240 240 lrp urp ulp "c")
)
发表于 2003-2-13 17:09:00 | 显示全部楼层

有些字母没拼对:setp->setq, ads->abs, utp->urp

发表于 2003-2-13 17:10:00 | 显示全部楼层

还有,程序好象没有显示面积及财长的句子

发表于 2003-2-14 08:20:00 | 显示全部楼层

修改..OK.可以在画矩形的同时显示出边长和面积

(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")
)
 楼主| 发表于 2003-2-15 22:26:00 | 显示全部楼层

谢谢!谢谢高手!不过......

谢谢!谢谢高手!不过这个程序和我预想的有一些差别,我想边长的单位应是毫米,面积的单位应是平方米。这样符合建筑绘图习惯,另外如果能同时绘出墙厚,显示出轴线面积和使用面积,就是一个非常好的草图绘制工具了!
发表于 2003-2-16 14:38:00 | 显示全部楼层

Drawbox中的grdraw还可以用Grvecs的,配合Matrix比Grdraw更强大。

找Grread应用的例子很久了,谢谢。
Drawbox中的grdraw还可以用Grvecs的,配合Matrix比Grdraw更强大。
发表于 2003-2-17 12:25:00 | 显示全部楼层

配合Matrix比Grdraw(有例子嗎?)

发表于 2003-2-20 18:51:00 | 显示全部楼层

没有,不过找到个用VLSP实现动态移动旋转缩放的方法。

尝试着写了,发现个问题鼠标移动后没法消除前面画的就放弃了。
不过找到了一个VLISP实现动态缩放、移动、旋转的方法,用Grread跟踪点,然后构造跟踪点相对基点的矩阵(平移、旋转或缩放),然后用Transformby作用实体。
发表于 2012-3-10 22:55:58 | 显示全部楼层
路过,学习了。这个帖子还得到明总的指点,高兴啊
发表于 2012-3-10 23:15:05 | 显示全部楼层
几世纪的东西都能翻出来,拜服。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-9-25 02:48 , Processed in 0.429409 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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