明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4951|回复: 34

大旱盼甘霖,程序盼完善!

  [复制链接]
发表于 2012-8-31 11:42 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 半听可乐 于 2012-12-2 10:02 编辑

社区的朋友“tjuzkj”分享了下面的程序,非常漂亮,最近我在苦想这个程序的作用,结论如下:

布置自动喷淋(管道专业常用)     

程序需改进:①增加动态间距显示(截图中的“主要间距”、“边缘间距”),主要间距默认值为3300,可设置并可记忆上一次输入的主要间距,还可以通过“9” “0”调节,调节的步长值设为50;
                     ②两个边缘间距相同,但是边缘间距跟主要间距不能相同且需要根据主要间距自动调节;
                     ③增加确定第二个点时的捕捉;
                     ④画完水平线能接着画竖线,或者相反
我重点描述一下“拟作用2”,这个管道专业的应该都清楚,布置喷淋时需要叠加梁图,查看喷淋支管与梁、墙、柱子等构配件的间距是否合适,有些建筑的布局较复杂,因此支管间距的反复调整显得非常繁琐,我相信下面的程序经过论坛里大师们恰当的改编,一定能很好的满足上述的功能,这个功能内心早有想法,但苦于没有编程功底,总算是找到个类似的了,仿佛极度口渴时看见一片汪洋大海,是水,但是不能喝!!!小弟在此恭候大师出手相助了!

;;;-------------------------------------------------------------------------------------------------------------------
;;; ★hvlines 动态垂直水平线
;;;  By  tjuzkj  明经社区分享  http://bbs.mjtd.com/thread-91313-1-1.html
;;;-------------------------------------------------------------------------------------------------------------------
(defun c:hvlines ( / *error* g1 g2 gr h l ms p p1 p2 v )
  ;; Lee Mac 2011
  (defun *error* ( m ) (redraw) (princ))
  (or *n (setq *n 3))
  
  (if (setq p1 (getpoint "\nSpecify First Corner: "))
    (progn
      (setq ms (princ "\nSpecify Opposite Corner [TAB/+/-]: "))
      (while
        (progn (setq gr (grread t 15 0) g1 (car gr) g2 (cadr gr))
          (cond
            ( (= 5 g1)(redraw)
              (if *v
                (progn
                  (setq h (/ (- (car g2) (car p1)) (1+ *n))
                        v (- (cadr g2) (cadr p1))
                        p p1
                  )
                  (repeat *n
                    (setq p (list (+ h (car p)) (cadr p) (caddr p)))
                    (grdraw p (list (car p) (+ v (cadr p)) (caddr p)) -1)
                  )
                  (setq l
                    (list
                      p1 (list (car p1) (+ v (cadr p1)) (caddr p1))
                      g2 (list (+ h (car p)) (cadr p) (caddr p))
                    )
                  )
                )
                (progn
                  (setq h (- (car g2) (car p1))
                        v (/ (- (cadr g2) (cadr p1)) (1+ *n))
                        p p1
                  )
                  (repeat *n
                    (setq p (list (car p) (+ v (cadr p)) (caddr p)))
                    (grdraw p (list (+ (car p) h) (cadr p) (caddr p)) -1)
                  )
                  (setq l
                    (list
                      p1 (list (+ (car p1) h) (cadr p1) (caddr p1))
                      g2 (list (car p) (+ v (cadr p)) (caddr p))
                    )
                  )
                )
              )                  
              (mapcar '(lambda ( a b ) (grdraw a b 1 -1)) l (append (cdr l) (list (car l))))
            )
            ( (= 2 g1)
              (cond
                ( (member g2 '(45 95))
                  (if (= 1 *n)
                    (princ (strcat "\n--> Minimum Number of Lines Reached." ms))
                    (setq *n (1- *n))
                  )
                )
                ( (member g2 '(43 61))
                  (setq *n (1+ *n))
                )
                ( (= 9 g2)
                  (setq *v (not *v)) t
                )
              )
            )
            ( (= 3 g1)
              (if *v
                (progn
                  (setq h (/ (- (car g2) (car p1)) (1+ *n))
                        v (- (cadr g2) (cadr p1))
                  )
                  (repeat *n (setq p1 (list (+ h (car p1)) (cadr p1) (caddr p1)))
                    (entmakex
                      (list
                        (cons 0 "LINE")
                        (cons 10 (trans p1 1 0))
                        (cons 11 (trans (list (car p1) (+ v (cadr p1)) (caddr p1)) 1 0))
                      )
                    )
                  )
                )
                (progn
                  (setq h (- (car g2) (car p1))
                        v (/ (- (cadr g2) (cadr p1)) (1+ *n))
                  )
                  (repeat *n (setq p1 (list (car p1) (+ v (cadr p1)) (caddr p1)))
                    (entmakex
                      (list
                        (cons 0 "LINE")
                        (cons 10 (trans p1 1 0))
                        (cons 11 (trans (list (+ (car p1) h) (cadr p1) (caddr p1)) 1 0))
                      )
                    )
                  )
                )
              )
              nil
            )
          )
        )
      )
    )
  )
  (redraw) (princ)
)



帖子已经更新,悬赏也提高了,望大师出手相助!(突然发现贴的第二张gif效果出不来,能一并实现更好!)
附件: 您需要 登录 才可以下载或查看,没有账号?注册

最佳答案

查看完整内容

20楼程序的源码放给大家了。
发表于 2012-8-31 11:42 | 显示全部楼层
本帖最后由 springwillow 于 2012-12-9 20:10 编辑

20楼程序的源码放给大家了。

本帖子中包含更多资源

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

x

点评

非常好用!谢谢孤帆大侠!  发表于 2012-12-10 12:49
回复

使用道具 举报

发表于 2012-8-31 12:35 | 显示全部楼层
缺少捕捉第二点!~~
回复

使用道具 举报

 楼主| 发表于 2012-8-31 12:47 | 显示全部楼层
daidong013 发表于 2012-8-31 12:35
缺少捕捉第二点!~~

正如我发帖描述
回复

使用道具 举报

发表于 2012-8-31 14:31 | 显示全部楼层
高手
回复

使用道具 举报

发表于 2012-8-31 23:44 | 显示全部楼层
缺少捕捉第二点!~~

点评

纯顶帖?  发表于 2012-9-1 08:53
回复

使用道具 举报

发表于 2012-9-1 10:33 | 显示全部楼层
路过,帮顶
回复

使用道具 举报

发表于 2012-9-1 21:32 | 显示全部楼层
帮顶 楼主的建议画立杆也不错

点评

什么立杆?  发表于 2012-9-2 11:48
回复

使用道具 举报

发表于 2012-9-3 14:56 | 显示全部楼层
yaokui25 发表于 2012-8-31 23:44
缺少捕捉第二点!~~

这个我下载试用过
回复

使用道具 举报

发表于 2012-9-4 12:39 | 显示全部楼层
帮顶下!!!!!!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-17 11:24 , Processed in 0.295642 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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