明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4706|回复: 5

[转帖]绘制铁路线型

[复制链接]
发表于 2005-1-15 11:59:00 | 显示全部楼层 |阅读模式
  AutoCAD中带有各种线型,包括一些带符号(如圆圈、方框等)的线型,但却没有铁路线型。包括Autodesk公司新推出的GIS系统--World这一与地图紧密相关的产品,在其五花八门的线型中也未发现有铁路线型。可见,铁路这种特殊的线型,看似简单,实则很难用AutoCAD线型实现。下面向大家介绍一种简便、变通的解决方法。       


  1.使用多义线绘制命令(Pline)画出铁路中心线(颜色为黑色,假设曲线长度约为1000个图形单位)。       


  2.使用多义线编辑命令(Pedit)将画出的铁路中心线宽度用Width子命令设置为所需宽度,例如5,并使用子命令Fit或Spline将曲线进行拟合,使其成为光滑的曲线。       


  3.使用复制命令(Copy)将上述多义线在原位置复制,即在响应Copy的"Second        point        of        displacement:"时使用"@0,0"即可。       


  4.使用Pedit命令使复制出的多义线宽度略为减小,例如减小到3。       


  5.使用线型命令(LineType)装载虚线线型,例如ACAD_ISO03W100。       


  6.使用目标属性修改命令(DDModify)对复制出的多义线属性进行修改,将"Color"设置为255(白色),"Linetype"设置为虚线,"Linetype        Scale"设置成适当值(视绘图比例而定,如果在线型比例命令LTScale设置的线型比例为1,则该值设为2),并将"olyline"的"LT        Gen"选项选中,即将该曲线设置成连续线型。       


  7.如果没有出现预期的效果,可使用刷新命令(ReGen)对图形进行刷新,或者使用改变实体显示顺序命令(DrawOrder),将白色虚线的多义线放到上一层(选Front子命令)或将黑色实线的多义线放到下一层(选Back子命令)。
发表于 2005-1-17 01:14:00 | 显示全部楼层
ljc编了一个:
  1. ;;;铁路线绘制
  2. ;;;把spline变成铁路线示图
  3. ;;;ljc 2004.3
  4. (DEFUN O1O (name cd / cm tc os q zd qd ang qdz zdy w1 w2 w3 w4 p1p2 p3
  5.          p4)
  6.    ;;name--spline的图元名 cd铁路线的宽度
  7.    (setq  cm (getvar "cmdecho")
  8.   tc (getvar "clayer")
  9.   os (getvar "osmode")
  10.    )
  11.           ;(command "osnap" "off")
  12.    (setvar "osmode" 0)
  13.    (setq  cd   (/ cd 2)
  14.   q     (entget name)
  15.   Zd   (cdr (assoc 10 q))
  16.   qd   (cdr (LAST q))
  17.   ANG (ANGLE QD ZD)
  18.   qdz (polar qd (+ ANG (/ PI 2)) cd)
  19.   qdy (polar qd (- ANG (/ PI 2)) cd)
  20.    )
  21.    (command "offset" cd name qdz "")
  22.    (setq  w1 (entlast)
  23.   p1 (cdr (assoc 10 (entget w1)))
  24.   p2 (cdr (last (entget w1)))
  25.    )
  26.    (command "offset" cd name qdy "")
  27.    (setq  w2 (entlast)
  28.   p4 (cdr (assoc 10 (entget w2)))
  29.   p3 (cdr (last (entget w2)))
  30.    )
  31.    (command "line" p1 p4 "")
  32.    (setq w3 (entlast))
  33.    (command "line" p2 p3 "")
  34.    (setq w4 (entlast))
  35.    (command "-bhatch" "p" "solid" "s" w1 w2 w3 w4 "" "")
  36.    (command "erase" w1 w2 w3 w4 name "")
  37.    (setvar "cmdecho" cm)
  38.    (setvar "osmode" os)
  39.    (setvar "clayer" tc)
  40. )
  41. (defun c:tielu (/ line n0 j linex q qd zd cdd ang qdz dqy)
  42.    (setq  cm (getvar "cmdecho")
  43.   tc (getvar "clayer")
  44.   os (getvar "osmode")
  45.    )
  46.           ;(command "osnap" "off")
  47.    (setvar "osmode" 0)
  48.    (print "请选择铁路线(SPLINE):")
  49.    (print)
  50.    (setq  line (ssget '((0 . "SPLINE")))
  51.   ds     (getint "请输黑白段长度:")
  52.   cd     (getreal "请输入绘制铁路线的宽度:")
  53.    )
  54.    (command "ucs" "" "")
  55.    (command "erase" (ssget "x" '((0 . "point"))) "")
  56.    (setq  n0 (sslength line)
  57.   j   0
  58.   n2 0
  59.    )
  60.    (repeat n0
  61.        (setq linex  (ssname line j)
  62.      cdd  (/ cd 2)
  63.      q  (entget linex)
  64.      Zd  (cdr (assoc 10 q))
  65.      qd  (cdr (LAST q))
  66.      ANG  (ANGLE QD ZD)
  67.      qdz  (polar qd (+ ANG (/ PI 2)) (* 10 cd))
  68.      qdy  (polar qd (- ANG (/ PI 2)) (* 10 cd))
  69.        )
  70.        (command "offset" cdd linex qdz linex qdy "")
  71.        (command "measure" linex ds "")
  72.        (command)
  73.        (setq point  (ssget "x" '((0 . "point")))
  74.      n  (sslength point)
  75.      i  0
  76.      ii  0
  77.        )
  78.        (repeat n
  79.            (setq p1 (cdr (assoc 10 (entget (ssname point i)))))
  80.            (command "erase" (ssname point i) "")
  81.            (command "zoom"
  82.                "w"
  83.                (polar p1 (* pi 0.75) ds)
  84.                (polar p1 (* pi -0.25) ds)
  85.            )
  86.            (command "break" (list (car p1) (cadr p1) (caddr p1)) "@")
  87.            (if (= 2 ii)
  88.   (setq ii 0)
  89.            )
  90.            (if (= 0 ii)
  91.   (O1O (entlast) cd)
  92.   (command "erase" (entlast) "")
  93.            )
  94.            (setq ii (1+ ii)
  95.          i   (+ i 1)
  96.            )
  97.        )
  98.        (setq j (+ j 1))
  99.        (if  (= 2 ii)
  100.            (O1O linex cd)
  101.            (command "erase" linex "")
  102.        )
  103.    )
  104.    (command "zoom" "e" "")
  105.    (setvar "cmdecho" cm)
  106.    (setvar "osmode" os)
  107.    (setvar "clayer" tc)
  108. )
  109. ;;(print "敲入tL运行程序---LJC")
  110. (PRINT)
回复 支持 1 反对 0

使用道具 举报

发表于 2005-1-15 21:10:00 | 显示全部楼层
正因为没办法定制这样的线型,剩下最有效的办法就是编程,而不是如何画的问题。要说画,一句话解决:“二条实线一条虚线”。
发表于 2005-1-16 20:36:00 | 显示全部楼层
不过编程还没有学会,席姐的方法也可以。
发表于 2005-1-17 09:40:00 | 显示全部楼层
RAILROAD LINETYPE 请参考

本帖子中包含更多资源

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

x
发表于 2005-1-17 11:42:00 | 显示全部楼层
楼上是演示版。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 22:35 , Processed in 0.196734 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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