找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 937|回复: 5

[LISP程序]:涵洞立面图,初次编程,望多多指教

[复制链接]
发表于 2005-10-10 12:04:40 | 显示全部楼层 |阅读模式

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

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

×
(defun dtr(a)
  (* a (/ pi 180))
  )
(defun c:正交涵洞一般布置图(立面)()
  (setvar "cmdecho" 0)
;;;  盖板画法(左侧和右侧)
  (setq p0 (getpoint "输入公路中心线的位置"))(terpri)
  (setq hi (getreal "输入路面横坡"))
  (setq B (getreal "输入路基半宽度"))
  (setq hia (atan (* hi 0.01)))
  (setq pz1 (polar p0 (+ (dtr 180) hia) (/ B (cos hia))))
  (setq gbh (getreal "输入盖板厚度"))
  (setq pz2 (polar pz1 (dtr 90) gbh))
  (setq jbk (getreal "输入帽石襟边"))
  (setq pz3 (polar pz2 (dtr 180) jbk))
  (setq msg (getreal "输入帽石高"))
  (setq pz4 (polar pz3 (dtr 90) msg))
  (setq msk (getreal "输入帽石宽"))
  (setq pz5 (polar pz4 0 msk))
  (setq pz6 (polar pz5 (dtr -90 ) msg))
  (setq p01 (polar pz6 hia (/ (-(+ b jbk) msk) (cos hia))))
  (command "line" p0 pz1 Pz2 pz3 pz4 pz5 pz6 p01 "" )
  (setq py1 (polar p0 (- (dtr 360) hia) (/ b (cos hia))))
  (setq py2 (polar py1 (dtr 90) gbh))
  (setq py3 (polar py2 0 jbk))
  (setq py4 (polar py3 (dtr 90) msg))
  (setq py5 (polar py4 (dtr 180) msk))
  (setq py6 (polar py5 (dtr 270) msg))
  (command "line" p0 py1 py2 py3 py4 py5 py6 p01 "")

;;;八字墙画法(左侧和右侧)
  (setq xuanze (getstring "z为左侧进水口,y为右侧进水口"))
  (setq hg (getreal "输入涵洞高"))
  (setq pzch (getreal "输入铺装层厚度"))
  (setq kq (getreal "输入八字墙顶端高于铺砌层的高度:"))
  (setq di (* 0.01 (getreal "输入铺砌坡度")))
  (if (= xuanze z)   
    (setq zbzqc (* (/ 1.5 (+ 1 (* 1.5 di)))  (- hg gbh pzch kq )))
    (setq zbzqc (* (/ 1.5 (- 1 (* 1.5 di)))(- (+ hg(* (* 2 b) di)) gbh pzch kq)))
    )
  (setq pz7 ( polar pz2 (+ (dtr 180) (atan 1 1.5)) (/ zbzqc (cos (atan 1 1.5)))))
  (setq pz8 (polar pz7 (dtr 270) kq))
  (setq jcs (getreal "输入基础深度"))
  (setq pz9 (polar pz8 (dtr 270) jcs))
  (setq jsqh (getreal "输入截水墙厚度"))
  (setq pz10 (polar pz9 0 jsqh))
  (setq jchd (getreal "输入基础厚度"))
  (setq pz11 (polar pz10 (dtr 90) jchd))
  (setq pqch (getreal "输入铺砌层厚度"))
  (setq pz12 (polar pz11 (dtr 90) (- jcs jchd pqch)))
  
  (if (= xuanze y)
    (setq ybzqc (* (/ 1.5 (- 1 (* 1.5 di)))(- (+ hg(* (* 2 b) di)) gbh pzch kq)))
    (setq ybzqc (* (/ 1.5 (+ 1 (* 1.5 di)))  (- hg gbh pzch kq )))
    )
  (setq py7 (polar py2 (- 0 (atan 1 1.5)) (/ ybzqc (cos (atan 1 1.5)))))
  (setq py8 (polar py7 (dtr -90) kq))
  (setq py9 (polar py8 (dtr -90) jcs))
  (setq py10 (polar py9 (dtr 180) jsqh))
  (setq py11 (polar py10 (dtr 90) jchd))
  (setq py12 (polar py11 (dtr 90) (- jcs jchd pqch)))
  (command "line" pz2 pz7 pz8 pz9 pz10 pz11 pz12 "")
  (command "line" py2 py7 py8 py9 py10 py11 py12 "")
  (command "line" pz8 py8 "")
  (command "line" pz10 py10 "")
  (command "line" pz11 py11 "")
  (command "line" pz12 py12 "")
;;;  铺装层画法
  (setq pzz (list (car pz6) (+ (cadr pz6) pzch)))
  (setq pz0 (list (car p01) (+ (cadr p01) pzch)))
  (setq pzy (list (car py6) (+ (cadr py6) pzch)))
  (command "line" pzz pz0 pzy "")
;;;  台帽画法
  (setq tmh (getreal "输入台帽的厚度"))
  (setq ptz (list (car pz1) (- (cadr pz1) tmh)))
  (setq pt0 (list (car p0) (- (cadr p0) tmh)))
  (setq pty (list (car py1) (- (cadr py1) tmh)))
  (command "line" ptz pt0 pty "")
;;;  八字墙与墙身接线的画法
  (if (= xuanze z)
    (setq pjz (polar pz9(- 0 (atan di)) (/ zbzqc (cos (atan di)))))
    (setq pjz (polar pz9 (atan di) (/ zbzqc (cos (atan di)))))
    )
  (if (= xuanze y)
    (setq pjy (polar py9 (+ (dtr 180) (atan di)) (/ ybzqc (cos (atan di )))))
    (setq pjy (polar py9 (- (dtr 180) (atan di )) ( / ybzqc (cos (atan di )))))
    )

  (command "line" pz1 pjz "")
  (command "line" py1 pjy "")
  (command "zoom" "a" "")
;;;  标注的画法
  (setvar "dimasz" 5)
  (setvar "dimtxt" 5)
  (setvar "dimtih" 0)
  (setvar "dimtad" 1)
  (setvar "dimgap" 3)
  (setvar "dimdec" 1)
  (setvar "dimexo" (+ jsqh 10))
  (command "dimlinear" pz10 pz11 "v" (list (-(car pz11) 60) (cadr pz11)))
  (setvar "dimexo" 10)
  (setvar "dimse1" 1)
  (command "dimcontinue" "s" pz11 pz8 )
  (setvar "dimse1" 0)  
  (command "dimcontinue" "s" pz8 pz7 "" "" )
  (setvar "dimexo" 10)
  (command "dimlinear" pz9 pz11 "h" (list (car pz9) (- (cadr pz9) 20)))
  (command "dimcontinue" "s" pz9 pjz)
  (command "dimcontinue" "s" pjz pjy)
  (command "dimcontinue" "s" pjy py9 "" "")
  (command "dimlinear" py7 py8 "v" (list (+ (car py7) 30) (cadr py7)))
  (setvar "dimexo" (+ jsqh 10))
  (setvar "dimse1" 1)
  (command "dimcontinue" "s" py8 py11 "" "")
  (setvar "dimse1" 0)
  (command "dimcontinue" "s" py11 py10 "" "")
  (setvar "dimexo" (+ msg 20))
  (command "dimlinear" pz2 py2 "h" (list (car pz2) (+ (cadr pz2) msg 30)))
  (setvar "dimexo" 10)
  (command "dimlinear" pz4 pz5 "h" (list (car pz4) (+ (cadr pz4) 20)))
  (command "dimlinear" pz3 pz4 "v" (list (- (car pz4) 20) (cadr pz4)))
  (setvar "cmdecho" 1)
  (princ)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-10-11 10:52:35 | 显示全部楼层
楼主的是公路还是铁路?
其实根据规范,涵洞孔径及板底填土高度确定后,应该可以确定板厚及其它一些参数,你可以将其写为判断程式去运行。
还有就是在命令行输入不如采用对话框更简洁明了!
我以前也编过一个公路涵洞的,只是还有许多不尽人意的地方,我把运行过程帖图上来,大家互相研究一下!
不行帖图速度太慢,还是将文件传上去吧!(一个gif动画)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-10-11 11:23:56 | 显示全部楼层
上面所编的是公路正交明涵,涵洞没有超高,路幅横坡相同,以《小桥涵手册〉为依据而已,没什么计算,纯粹是画图而已,只是初学,以后换望你多多指教!!!
你的对话框是用DCL编的吗?还是?真的很漂亮,但你所出的图能否互相对齐
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-11 11:28:39 | 显示全部楼层
是用DCL编写的,我没有把三个视图一起出,立面和平面可以互相对齐,至于横断图,本没有对齐的地方,你说的是和路基中线部分对齐么?
对了,楼主。我以前用command命令标注时,总是出现一些标注不对应的情况,后来加载activex支持功能即(vl-load-com)后,用vla-adddimaligned命令标注比较好!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 21:45 , Processed in 0.272115 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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