找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1267|回复: 4

[LISP程序]:发个刚刚编好的横断面地面线绘图程序,求建议.

[复制链接]
发表于 2005-6-22 09:01:38 | 显示全部楼层 |阅读模式

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

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

×
先感谢一下fylinwater和xyp1964两位前辈帮了我不小的忙
这个程序是根据纬地横断面测量资料来画横断面测量图的,要用一个hdm.txt测量文件才能用

(DEFUN C:0 (/ wj zh zh1 zh2 z y nz ny p px py px1 py1 px2 py2 temp)
(SETQ wj (OPEN "f:\\autolisp\\hdm.TXT" "r"))
(setq p  (getpoint"选择绘图基点"))
(while (= 1 1)
(SETQ zh (atof (READ-LINE wj))
       z  (read (strcat "("(READ-LINE wj)")"))
       nz (length z)
       y  (read (strcat "("(READ-LINE wj)")"))
       ny (length y)
       px (nth 0 p)
       py (nth 1 p)
       p  (list px (+ py 4))
)

  
(command "line" (list px (+ py 1)) (list px (- py 1)) "")    ;画中心线

          
(setq zh1 (fix (/ zh 1000))
       zh  (- zh (* zh1 1000))
)
(cond
   ((> zh 99.9995) (setq zh2 (rtos zh 2 3)))
   ((< zh 9.9995)  (setq zh2 (strcat "00" (rtos zh 2 3))))
   ((< zh 99.9995) (setq zh2 (strcat "0" (rtos zh 2 3))))
)
  
(setq zh (strcat "K" (rtos zh1 2 0) "+" zh2))
(command "text" "j" "m" (list px (- py 1.6)) 0.4 0 zh)       ;标桩号

  
(setq temp 1                                                 ;画地面线
       px1 px
       py1 py
)
  (while (> ny 2)
   (setq px2 (+ px (nth temp y))
         py2 (+ py (nth (+ temp 1) y))
   )
   (command "line" (list px1 py1) (list px2 py2) "")
   (setq ny (- ny 2)
         temp (+ temp 2)
         px1 px2
         py1 py2
   )
)
  
(setq   temp 1
         px1 px
         py1 py
)
  (while (> nz 2)
   (setq px2 (- px (nth temp z))
         py2 (+ py (nth (+ temp 1) z))
   )
   (command "line" (list px1 py1) (list px2 py2) "")
   (setq nz (- nz 2)
         temp (+ temp 2)
         px1 px2
         py1 py2
   )
)

  
;(command "pline" p
;                  (list (+ px (nth 1 z)) (+ py (nth 2 z)))
;                  (list (+ px (nth 3 z)) (+ py (nth 4 z)))
;                  (list (+ px (nth 5 z)) (+ py (nth 6 z)))
;                  (list (+ px (nth 7 z)) (+ py (nth 8 z)))
;                  (list (+ px (nth 9 z)) (+ py (nth 10 z)))
;                  ""
; )
      

)
(close wj)
)

有些图层线型设置什么的没有放进去,感觉用处不是太大了.
感觉程序有几个不足,一个是它是个死循环,读到文件结束时出错了于是退出,不知有没什么完美的方法解决;另一个是我想不出怎么用"pline"来画地面线,就是后面注释里的那一段,想不出该怎么循环才好.求一下各位的建议.
谢谢了!


顶一下,没人给点建议么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-6-23 21:25:07 | 显示全部楼层
这样吧:
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR][url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]|;

  11. (DEFUN C:test (/ wj zh zh1 zh2 z y nz ny p px py px1 py1 px2 py2 temp)
  12.   (CMDLA0)
  13.   (jzhz)
  14.   (SETQ        wj (OPEN (getfiled "坐标数据文件(txt)" "" "txt" 2) "r")
  15.         p  (getpoint "选择绘图基点")
  16.   )
  17.   (while (setq ptt (READ-LINE wj))
  18.     (SETQ zh (atof ptt)
  19.           z  (read (strcat "(" (READ-LINE wj) ")"))
  20.           nz (length z)
  21.           y  (read (strcat "(" (READ-LINE wj) ")"))
  22.           ny (length y)
  23.           px (nth 0 p)
  24.           py (nth 1 p)
  25.           p  (list px (+ py 4))
  26.     )
  27.     (mkla "中心线" 1)
  28.     (command "line" (list px (+ py 1)) (list px (- py 1)) "") ;画中心线
  29.     (setq zh1 (fix (/ zh 1000))
  30.           zh  (- zh (* zh1 1000))
  31.     )
  32.     (cond
  33.       ((> zh 99.9995) (setq zh2 (rtos zh 2 3)))
  34.       ((< zh 9.9995) (setq zh2 (strcat "00" (rtos zh 2 3))))
  35.       ((< zh 99.9995) (setq zh2 (strcat "0" (rtos zh 2 3))))
  36.     )
  37.     (setq zh (strcat "K" (rtos zh1 2 0) "+" zh2))
  38.     (mkla "桩号" 3)
  39.     (command "text"
  40.              "j"
  41.              "m"
  42.              (list px (- py 1.6))
  43.              (* SC 0.5)
  44.              0
  45.              zh
  46.     )                                        ;标桩号
  47.     (setq temp 1                        ;画地面线
  48.           px1 px
  49.           py1 py
  50.     )
  51.     (mkla "地面线" 4)
  52.     (command "pline" (list px1 py1))
  53.     (while (> ny 2)
  54.       (setq px2        (+ px (nth temp y))
  55.             py2        (+ py (nth (+ temp 1) y))
  56.       )

  57.       (command (list px2 py2))
  58.       (setq ny         (- ny 2)
  59.             temp (+ temp 2)
  60.       )
  61.     )
  62.     (command "")

  63.     (setq temp 1
  64.           px1 px
  65.           py1 py
  66.     )
  67.     (command "pline" (list px1 py1))
  68.     (while (> nz 2)
  69.       (setq px2        (- px (nth temp z))
  70.             py2        (+ py (nth (+ temp 1) z))
  71.       )
  72.       (command (list px2 py2))
  73.       (setq nz         (- nz 2)
  74.             temp (+ temp 2)
  75.       )
  76.     )
  77.     (command "")
  78.   )
  79.   (close wj)
  80.   (CMDLA1)
  81. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-24 10:05:10 | 显示全部楼层
首先,图层的设置是有用的,这样对于后面的调整有帮助。
画pline,建议使用active方法。如果使用循环,
eg: (command "pline")
  (repeat n
          (command p1)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-6-24 11:09:45 | 显示全部楼层
感谢回复,PLINE问题解决,斑竹的xyp_lib文件感觉很牛,不知有没有说明
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-26 00:42 , Processed in 0.177120 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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