找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1411|回复: 6

[求助] [求助]:请高手改一下这个矩形LISP

[复制链接]
发表于 2007-7-13 12:13:59 | 显示全部楼层 |阅读模式

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

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

×
在论坛里找到一个矩形LISP,感觉好用,但有点不习惯的是第一点是矩形的中心点,请高手改为一个角点。谢谢!


(defun c:bx (/ os OO pt w l w2 l2 ptx pty pt1 pt2 pt3 pt4 )
        (setq os (getvar "osmode")
              OO (getvar "orthomode")
        )   ;
        (setvar "cmdecho" 0)
        (setvar "orthomode" 1)
        (setvar "osmode" 3007)
        (while
        (setq pt (getpoint "\n please input center point>>"))
        (setvar "osmode" 0)
        (setq l (getdist "\n pletse input l:"))
        (setq w (getdist (strcat "\n please input w:<"
                                 (rtos l)
                                 ">"
        )       )        )
        (if (null w)
            (setq w l)
        )
        (setq w2 (/ w 2)
              l2 (/ l 2)
              ptx (car pt)
              pty (cadr pt)
              pt1 (list (+ ptx l2) (- pty w2))  
              pt2 (list (+ ptx l2) (+ pty w2))
              pt3 (list (- ptx l2) (+ pty w2))
              pt4 (list (- ptx l2) (- pty w2))
        )
        (command "Pline" pt1 pt2 pt3 pt4 "c")
        (setvar "osmode" 3007)
        )
        (setvar "osmode" os)
        (setvar "orthomode" OO)
        (princ)
        )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2007-7-13 12:25:45 | 显示全部楼层
如果楼主懂一点点lisp,可以用command矩形!
来这里吧,这里回贴有时候回不了!
http://acad.net.cn/viewthread.php?tid=181&extra=page%3D1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2007-7-13 18:19:31 | 显示全部楼层

  1.   [FONT=courier new]
  2. (defun c:bx (/ os OO pt w l ptx pty pt1 pt2 pt3 )
  3. (setq os (getvar "osmode")
  4.       OO (getvar "orthomode")
  5. ) ;
  6. (setvar "cmdecho" 0)
  7. (setvar "orthomode" 1)
  8. (setvar "osmode" 3007)
  9. (while
  10. (setq pt (getpoint "\n please input center point>>"))
  11. (setvar "osmode" 0)
  12. (setq l (getdist "\n pletse input l:"))
  13. (setq w (getdist (strcat "\n please input w:<" (rtos l) ">")))

  14. (if (null w)
  15.     (setq w l)
  16. )
  17. (setq ptx (car pt)
  18.       pty (cadr pt)
  19.       pt1 (list (+ ptx l) pty)
  20.       pt2 (list (+ ptx l) (+ pty w))
  21.       pt3 (list ptx (+ pty w))
  22. )
  23. (command "Pline" pt pt1 pt2 pt3 "c")
  24. (setvar "osmode" 3007)
  25. )
  26. (setvar "osmode" os)
  27. (setvar "orthomode" OO)
  28. (princ)
  29. )
  30.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2007-7-13 19:13:49 | 显示全部楼层

  1. (defun C:BX (/ PT PT1 L W)
  2.     (while (setq PT (getpoint "\n please input center point>>"))
  3.         (if (setq L (getdist PT "\n pletse input l:"))
  4.             (progn
  5.                 (setq PT1 (polar PT 0 L))
  6.                 (if (setq W (getdist PT
  7.                                      (strcat "\n please input w:<"
  8.                                              (rtos L)
  9.                                              ">"
  10.                                      )
  11.                             )
  12.                     )
  13.                     (setq PT1 (polar PT1 (* 0.5 pi) W))
  14.                     (setq PT1 (polar PT1 (* 0.5 pi) L))
  15.                 )
  16.                 (command "_.rectang" "non" PT "non" PT1)
  17.             )
  18.         )
  19.     )
  20.     (princ)
  21. )

更多关于矩形的讨论参见:http://acad.net.cn/viewthread.ph ... tra=page%3D1#pid460
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 2026个

财富等级: 金玉满堂

发表于 2010-3-22 00:29:56 | 显示全部楼层
最初由 lijie70000 发布
[B]汗。下载不了啊 [/B]


你可将各楼的程序代码分别复制到“记事本”中保存下来,再将该文件的扩展名“.txt”改成“.lsp”就成为lsp程序文件了。

3楼的程序若改为下面的会更好用些。

(defun c:bx (/ os or au po h w px py p1 p2 p3 )
  (setq os (getvar "osmode")
        or (getvar "orthomode")
        au (getvar "autosnap")
   )
  (setvar "cmdecho" 0)
  (setvar "orthomode" 1)
  (setvar "osmode" 575)
  (while
    (setq po (getpoint "\n 指定矩形左下角点"))
    (setvar "osmode" 0)
    (setq w (getdist po "\n 指定矩形水平宽度:"))
    (setq h (getdist po (strcat "\n 指定矩形垂直高度(确认则绘制正方形)<" (rtos w) ">:")))

   (if (null h)
    (setq h w)
   )
    (setq px (car po)
          py (cadr po)
          p1 (list (+ px w) py)
          p2 (list (+ px w) (+ py h))
          p3 (list px (+ py h))
      )
    (command "Pline" po p1 p2 p3 "c")
    (setvar "osmode" 575)
   );while
    (setvar "osmode" os)
    (setvar "orthomode" or)
    (setvar "autosnap" au)
    (princ)
)

;;; 同理,1楼的可改为

(defun c:jx (/ os or au po h w h2 l2 px py p1 p2 p3 p4 )
  (princ "以指定矩形中心点来绘制矩形")
  (setq os (getvar "osmode")
        or (getvar "orthomode")
        au (getvar "autosnap")
   )
  (setvar "cmdecho" 0)
  (setvar "orthomode" 1)
  (setvar "osmode" 575)
  (while
  (setq po (getpoint "\n 指定矩形的中心点"))
  (setvar "osmode" 0)
  (setq w (getdist po "\n 指定矩形水平宽度:"))
  (setq h (getdist po (strcat "\n 指定矩形垂直高度(确认则绘制正方形)<"(rtos w)">:")))
  (if (null h)
   (setq h w)
  )
(setq h2 (/ h 2)
       w2 (/ w 2)
       px (car po)
       py (cadr po)
       p1 (list (+ px w2) (- py h2))
       p2 (list (+ px w2) (+ py h2))
       p3 (list (- px w2) (+ py h2))
       p4 (list (- px w2) (- py h2))
     )
  (command "Pline" p1 p2 p3 p4 "c")
  (setvar "osmode" 575)
  ) ;while
  (setvar "osmode" os)
  (setvar "orthomode" or)
  (setvar "autosnap" au)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-25 16:30 , Processed in 0.308711 second(s), 42 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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