明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4124|回复: 12

[原创]动态矩形

    [复制链接]
发表于 2009-9-6 22:02:00 | 显示全部楼层 |阅读模式

小程序,简单的动态

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2009-9-7 00:33:00 | 显示全部楼层

很不错,支持源码

修改一下,按50的模数,便于画结构构件截面

;;luyu9635动态矩形

(defun c:rg (/ gr grr p1 p2 p3 p4 po pt px pxy py text textent x z)
  (setq pt (getpoint "\n指定第一个角点:") z t)
  (prompt "\n指定另一个角点:")
  (while z
    (initget 128)
    (setq grr (grread t 4 1));请求输入
    (setq gr (car grr) po (cadr grr))
    (cond
      ((= gr 5);移动时
        (setq px (* 50 (fix (/ (- (car po) (car pt)) 50)))
              py (* 50 (fix (/ (- (cadr po) (cadr pt)) 50)))
              pxy (list (abs px) (abs py)))
        (setq p1 (list (car pt) (cadr pt))
              p2 (list (car pt) (+ py (cadr pt)))
              p3 (list (+ px (car pt)) (+ py (cadr pt)))
              p4 (list (+ px (car pt)) (cadr pt)))
        (redraw)
        (grvecs (list 7 p1 p2 7 p2 p3 7 p3 p4 7 p4 p1))
        (if text
          (progn
            (setq textent (subst (cons 1 (vl-princ-to-string pxy)) (assoc 1 textent) textent))
            (setq textent (subst (cons 10 po) (assoc 10 textent) textent))
            (entmod textent)
          )
          (progn
            (entmake (list '(0 . "TEXT") (cons 1 (vl-princ-to-string pxy)) (cons 10 po) (cons 40 100)(cons 41 0.7) (cons 50 0)(cons 62 2)))
            (setq text (entlast)
                  textent (entget text))
          )
        )
      )
      ((or (= gr 3);左击
         (equal grr '(2 32));空格
         (equal grr '(2 13));回车
         (equal grr' (11 0)));右击
        (setq z nil)
      )
    )
  )
  (redraw)
  (entmake (append' ((0 . "lwpolyline") (100 . "AcDbEntity") (100 . "AcDbPolyline") (90 . 4) (70 . 1) )
              (mapcar '(lambda (x) (cons 10 x))(list p1 p2 p3 p4))))
  (if text (entdel text)
  )
  (princ)
)

回复 支持 1 反对 0

使用道具 举报

发表于 2021-2-11 17:23:22 | 显示全部楼层
对啊   需要能输入的吗  不然只是好看
发表于 2009-9-16 01:38:00 | 显示全部楼层

谢谢楼主,能否再完善一下:

1,程序按Esc键,文字还是留在屏幕上不消失

2,小数点位太长,仅保留2位小数如何?

3,最重要的一点,能否让用户输入长宽就能按用户输入的数据来画矩形的尺寸

下面是我常用的矩形程序,主要是没有动态显示,每次输数据时看世界cad的自动坐标不好用,所以想用你的程序加入上面3点的效果!

(defun c:rec ()
  (prompt "矩形绘制")
  (setq m:err *error* *error* *merr*)
  (setvar "cmdecho" 0)
  (setq OS (getvar "osmode"))
  (while(SETQ PT1(GETPOINT "\n指定起始位置或输入数值/<退出>: "))
  (initget 128)
  (setq pt2(GETCORNER PT1 "\n对角点位或矩形宽/<退出>:"))
  (command "rectang" pt1)
  (cond
    ((not pt2)(command)(exit))
    ((listp pt2)(command pt2))
    ((distof pt2) (setvar "osmode" 0)
                  (command (strcat "@" pt2 "," (rtos(getdist "\n矩形高:")))))
  ))
(setvar "osmode" OS)
(setq *error* m:err m:err nil)
(princ)
)

发表于 2009-9-16 09:22:00 | 显示全部楼层

不能输入数值,看着怪着好看,不太实用

发表于 2009-9-16 18:17:00 | 显示全部楼层
是啊﹐只是好看不太實用﹐能輸數字就好了
发表于 2009-9-21 01:03:00 | 显示全部楼层
有没有人能将这个程序在原有的基础上加上用户输入长*宽的功能呀
 楼主| 发表于 2009-9-23 00:39:00 | 显示全部楼层
啵浪鼓发表于2009-9-16 18:17:00是啊﹐只是好看不太實用﹐能輸數字就好了

请参照动态拉伸,自己修改一下

发表于 2011-9-23 17:51:39 | 显示全部楼层
高手!
发表于 2011-11-22 15:30:07 | 显示全部楼层
很好啊,学习,学习,在学习!!!
发表于 2011-11-23 10:59:38 | 显示全部楼层
luyu9635 发表于 2009-9-23 00:39
请参照动态拉伸,自己修改一下

希望楼主能继续完善功能:动态输入矩形宽、高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-29 19:29 , Processed in 0.207096 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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