找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1262|回复: 19

[求助]:绘制断面图.lsp文件

[复制链接]
发表于 2004-10-12 09:00:57 | 显示全部楼层 |阅读模式

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

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

×
我是一线路设计员,测量玩后,想用CAD画断面图,不知哪位高手能帮忙谢谢了,我还想要一画铁路的小程序。
我的邮箱是zzlphp6225519@163.com
谢谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-3-16 21:49:40 | 显示全部楼层
说明:
需要的几个图层:_duanmian(断面位置线及断面线的图层)、Dx-dgx(等高线的图层);
等高线要有高程,我用的单位是mm;
如果等高线是pline线,程序将炸开为line,请事先备份原文件!
要画断面,先在断面位置处画“断面位置线”(line);
程序运行后,提示“请选择断面:”,“点取断面图左下角点位置(不移动断面图直接回车):”;
程序中设置了一个相对标高:290000mm;断面线将以此相对标高绘制;
断面线以line绘制出后组成无名组,断面位置线与等高线相交处绘制了垂直线,也组成无名组!







  1. (defun c:dm (/            cmd           dmx          sp         ep        sp_ucs ep_ucs ang
  2.              ang1   ss1           ss2          sslst         sslen        inters_p_l    n
  3.              ent    sp1           ep1          sp2         ep2        pt3    os     uf
  4.              cly    pt4           inters_p         xdgch        gro1   gro2   pt_0
  5.              pt_0_t pt_n   pt_n_t
  6.             )
  7.   (defun set_ini ()
  8.     (setq cmd (GETVAR "cmdecho")
  9.           os  (GETVAR "OSMODE")
  10.           uf  (getvar "UCSFOLLOW")
  11.           cly (getvar "CLAYER")
  12.     ) ;_ end of setq
  13.     (setvar "cmdecho" 0)
  14.     (setvar "osmode" 0)
  15.     (setvar "UCSFOLLOW" 0)
  16.     (setvar "CLAYER" "_duanmian")
  17.   ) ;_ end of defun
  18.   (defun err_new (msg) (princ msg) (set_close)) ;_ end of defun
  19.   (defun set_close ()
  20.     (setvar "OSMODE" os)
  21.     (setvar "cmdecho" cmd)
  22.     (setvar "UCSFOLLOW" uf)
  23.     (setvar "CLAYER" cly)
  24.     (setq *error* err_old)
  25.   ) ;_ end of defun
  26.   (setq        err_old        *error*
  27.         *error*        err_new
  28.   ) ;_ end of setq
  29.   (set_ini)
  30.   (setq xdgch 290000);相对高程
  31.   (setq dmx (car (nentsel "请选择断面:")))
  32.   (command "_.ucsicon" "off")
  33.   (command "_.ucs" "ob" dmx)
  34.   (setq        sp     (cdr (assoc 10 (entget dmx)))
  35.         ep     (cdr (assoc 11 (entget dmx)))
  36.         sp_ucs (trans sp 0 1)
  37.         ep_ucs (trans ep 0 1)
  38.         ang    (angle sp_ucs ep_ucs)
  39.   ) ;_ end of setq
  40.   (if (and (> ang (/ pi 2)) (< ang (* pi 1.5)))
  41.     (setq ang1 (* pi 1.5))
  42.     (setq ang1 (/ pi 2))
  43.   ) ;_ end of if
  44.   (setq        ss1 (ssget "f"
  45.                    (list sp_ucs ep_ucs)
  46.                    '((8 . "Dx-dgx") (0 . "LWPOLYLINE"))
  47.             ) ;_ end of ssget
  48.   ) ;_ end of setq
  49.   (if (/= ss1 nil)
  50.     (progn (command "qaflags" 1) (command "_.explode" ss1 ""))
  51.   ) ;_ end of if
  52.   (setq        ss2 (ssget "f"
  53.                    (list sp_ucs ep_ucs)
  54.                    '((8 . "Dx-dgx") (0 . "line"))
  55.             ) ;_ end of ssget
  56.   ) ;_ end of setq
  57.   (setq        sslen           (sslength ss2)
  58.         sslst           nil
  59.         n           0
  60.         inters_p_l nil
  61.   ) ;_ end of setq
  62.   (while (< n sslen)
  63.     (setq ent (ssname ss2 n))
  64.     (setq sp1 (cdr (assoc 10 (entget ent)))
  65.           ep1 (cdr (assoc 11 (entget ent)))
  66.           sp2 (list (car sp1) (cadr sp1) (caddr sp))
  67.           ep2 (list (car ep1) (cadr ep1) (caddr ep))
  68.     ) ;_ end of setq
  69.     (setq inters_p (inters sp ep sp2 ep2))
  70.     (setq inters_p_l
  71.            (cons (list inters_p (caddr sp1)) inters_p_l) ;_ end of cons
  72.     ) ;_ end of setq
  73.     (setq n (1+ n))
  74.   ) ;_ end of while
  75.   (setq        ll     (length inters_p_l)
  76.         n      1
  77.         sp_ucs (trans sp 0 1)
  78.         ep_ucs (trans ep 0 1)
  79.   ) ;_ end of setq
  80.   (setq        pt_0   (trans (car (nth 0 inters_p_l)) 0 1)
  81.         h      (car (cdr (nth 0 inters_p_l)))
  82.         pt_0_t (polar pt_0 ang1 (- h xdgch))
  83.         gro1   nil
  84.         gro2   nil
  85.   ) ;_ end of setq
  86.   (command "_.line" pt_0 pt_0_t "")
  87.   (setq gro1 (cons (entlast) gro))
  88.   (while (< n ll)
  89.     (setq pt_n         (trans (car (nth n inters_p_l)) 0 1)
  90.           h         (car (cdr (nth n inters_p_l)))
  91.           pt_n_t (polar pt_n ang1 (- h xdgch))
  92.     ) ;_ end of setq
  93.     (command "_.line" pt_n pt_n_t "")
  94.     (setq gro1 (cons (entlast) gro1))
  95.     (command "_.line" pt_0_t pt_n_t "")
  96.     (setq gro2 (cons (entlast) gro2))
  97.     (setq pt_0_t pt_n_t)
  98.     (setq n (1+ n))
  99.   ) ;_ end of while
  100.   (command "_.line" pt_0 pt_n "")
  101.   (setq        pt_0 (trans pt_0 1 0)
  102.         pt_n (trans pt_n 1 0)
  103.   ) ;_ end of setq
  104.   (setq gro2 (cons (entlast) gro2))
  105.   (command "_.ucs" "p")
  106.   (command "_.ucsicon" "on")
  107.   (dm:makgrp gro1 "In use by DuanMian")
  108.   (dm:makgrp gro2 "In use by DuanMian")
  109.   (setq
  110.     pt3        (getpoint "\n点取断面图左下角点位置(不移动断面图直接回车):") ;_ end of getpoint
  111.   ) ;_ end of setq
  112.   (if (/= nil pt3)
  113.     (progn (setq pt4  (polar pt3 0 xdgch)
  114.                  pt_0 (trans pt_0 0 1)
  115.                  pt_n (trans pt_n 0 1)
  116.            ) ;_ end of setq
  117.            (if (< (car pt_0) (car pt_n))
  118.              (dm:align (append gro1 gro2) pt_0 pt3 pt_n pt4)
  119.              (dm:align (append gro1 gro2) pt_n pt3 pt_0 pt4)
  120.            ) ;_ end of if
  121.     ) ;_ end of progn
  122.   ) ;_ end of if
  123.   (command "qaflags" 0)
  124.   (set_close)
  125.   (gc)
  126.   (princ)
  127. ) ;_ end of defun

  128. (defun dm:makgrp (LST DESC / NAM EN LST GDICT GDATA)
  129.   (setq
  130.     NAM        (strcat "DuanMian" (substr (rtos (getvar "CDATE") 2 8) 10)) ;_ end of strcat
  131.   ) ;_ end of setq
  132.   (command "_.-group" "_create" NAM DESC)
  133.   (foreach EN LST (command EN))
  134.   (command "")
  135.   (setq        GDICT (dictsearch (namedobjdict) "ACAD_GROUP")
  136.         GDATA (dictsearch (cdr (assoc -1 GDICT)) NAM)
  137.         GDATA (subst (cons 70 1) (assoc 70 GDATA) GDATA)
  138.   ) ;_ end of setq
  139.   (dictrename (cdr (assoc -1 GDICT)) NAM "*A")
  140.   (entmod GDATA)
  141. ) ;_ end of defun


  142. (defun dm:align        (gro f_pt1 f_pt2 f_pt3 f_pt4 / en f_test f_osmode)
  143.   (setq f_osmode -1)
  144.   (if (not
  145.         (or (null f_pt1) (null f_pt2) (null f_pt3) (null f_pt4)) ;_ end of or
  146.       ) ;_ end of not
  147.     (progn (if (< (getvar "osmode") 16384)
  148.              (progn (setq f_osmode (getvar "osmode"))
  149.                     (setvar "osmode" (+ f_osmode 16384))
  150.              ) ;_ end of progn
  151.            ) ;_ end of if
  152.            (command "ucs" "z" f_pt2 f_pt4)
  153.            (command "rotate")
  154.            (foreach EN gro (command EN))
  155.            (command "" f_pt1 "r" f_pt1 f_pt3 "0") ;_ end of command
  156.            (command "ucs" "p")
  157.            (command "move" "P" "" f_pt1 f_pt2)
  158.            (if (/= f_osmode -1)
  159.              (setvar "osmode" f_osmode)
  160.            ) ;_ end of if
  161.     ) ;_ end of progn
  162.   ) ;_ end of if
  163.   (princ)
  164. ) ;_ end of defun
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 2 反对 0

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

已领礼包: 33个

财富等级: 招财进宝

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 226个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 01:52 , Processed in 0.238039 second(s), 60 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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