找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 905|回复: 6

[分享]:一个画数据线的程序

[复制链接]
发表于 2003-1-21 11:16:10 | 显示全部楼层 |阅读模式

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

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

×
这是郑立楷先生的作品,对于形是X Y的带空格文本的数据自动画出,还有填充功能!还能察看程序运行时间。在cad2002下运行很爽。
  1. ;; PLTXT.LSP
  2. ;; 版权所有 (C) 2002-2003  郑立楷
  3. ;;
  4. ;;   本软件免费可供进行任何用途需求的拷贝、修改及发行, 但请遵循下述原则:
  5. ;;
  6. ;;   1)  上列的版权通告必须出现在每一份拷贝里。
  7. ;;   2)  相关的说明文档也必须载有版权通告及本项许可通告。
  8. ;;
  9. ;;   本软件仅提供作为应用上的参考, 而未声明或隐含任何保证; 对于任何特殊
  10. ;;   用途之适应性, 以及商业销售所隐含作出的保证, 在此一概予以否认。
  11. ;;
  12. ;;   [url]http://www.mjtd.com[/url]   [url]http://www.mccad.net[/url]
  13. ;;
  14. ;;   e-mail:mccad@mjtd.com
  15. ;;
  16. (defun c:pltxt (/ oldcmd oldblip oldsnap fle fn pt)
  17.   (vl-load-com)
  18.   (setq oldcmd (getvar "cmdecho"))
  19.   (setvar "cmdecho" 0)
  20.   (setq oldblip (getvar "blipmode"))
  21.   (setvar "blipmode" 0)
  22.   (setq oldsnap (getvar "osmode"))
  23.   (setvar "osmode" 0)
  24.   (setq fle (findfile "txt1.txt"))
  25.   (setq acadObject (vlax-get-acad-object))
  26.   (setq acadDocument (vla-get-ActiveDocument acadObject))
  27.   (setq mSpace (vla-get-ModelSpace acadDocument))
  28.   (setq blocks (vla-get-blocks acadDocument))

  29.   (if (not fle)
  30.     (setq fle (getfiled "请选择数据文件" "txt1" "txt;dat;*" 8))
  31.   )
  32.   (if fle
  33.     (progn
  34.       (initget "1 2 3 4")
  35.       (setq ctype
  36.              (getkword
  37.                "\n请选择数据点填充方式[无填充(1)/全填充(2)/半填充(3)/对角填充(4)]<无填充>:"
  38.              )
  39.       )
  40.       (setq stime(getvar"date"))
  41.       (if (not ctype)
  42.         (setq ctype "1")
  43.       )
  44.       (setq fn (open fle "r"))
  45.       (read-line fn)
  46.       (setq pt1 (read-line fn))
  47.       (setq pnt1 (read (strcat "(" pt1 ")")))
  48.       (setq blkname (makeblk 0.2 ctype blocks))
  49.       (vla-insertblock
  50.         mspace
  51.         (vlax-3d-point pnt1)
  52.         blkname
  53.         1
  54.         1
  55.         1
  56.         0
  57.       )
  58.       (setq pnt0 pnt1)
  59.       (while (setq pt2 (read-line fn))
  60.         (setq pnt2 (read (strcat "(" pt2 ")"))
  61.               pnt1 (drawline pnt1 pnt2 0.2 mSpace)
  62.         )
  63.         (vla-insertblock mspace (vlax-3d-point pnt1) blkname 1 1 1 0)
  64.       )
  65.       (close fn)
  66.       (grtext)
  67.       (setq etime(getvar"date"))
  68.       (princ "\n程序共耗用时间:")
  69.       (princ (* 86400.0 (- (- etime stime) (fix (- etime stime)))))
  70.       (princ "秒")
  71.       (command "zoom" "e")
  72.     )

  73.     (princ "\n未选择数据文件,退出")
  74.   )
  75.   (setvar "cmdecho" oldcmd)
  76.   (setvar "blipmode" oldblip)
  77.   (setvar "osmode" oldsnap)
  78.   (princ)
  79. )

  80. (defun drawline        (pnt1 pnt2 r mSpace / a1 a2 p1 p2)
  81.   (setq        a1 (angle pnt1 pnt2)
  82.         a2 (angle pnt2 pnt1)
  83.         p1 (polar pnt1 a1 r)
  84.         p2 (polar pnt2 a2 r)
  85.   )
  86.   (vla-addLine mSpace (vlax-3d-point p1) (vlax-3d-point p2))
  87.   pnt2
  88. )

  89. (defun ax:2Point (pt1 pt2)
  90.   (vlax-make-variant
  91.     (vlax-safearray-fill
  92.       (vlax-make-safearray vlax-vbdouble '(0 . 3))
  93.       (list (car pt1) (cadr pt1) (car pt2) (cadr pt2))
  94.     )
  95.   )
  96. )

  97. (defun makeblk (r CType blocks / pt1 pt2 pt3 pt4 pl1 pl2 inspnt blkobj basecircle blkname)
  98.   (setq        inspnt (vlax-make-variant
  99.                  (vlax-safearray-fill
  100.                    (vlax-make-safearray vlax-vbdouble '(0 . 2))
  101.                    '(0 0 0)
  102.                  )
  103.                )
  104.   )

  105.   (setq blkobj (vla-add blocks inspnt "*U"))


  106.   (setq basecircle (vla-addCircle blkobj inspnt r))
  107.   (cond
  108.     ((= CType "2")
  109.      (setq pt1 (polar '(0 0) 0 (/ r 2))
  110.            pt2 (polar '(0 0) pi (/ r 2))
  111.      )
  112.      (setq pl1 (vla-AddLightweightPolyline blkobj (ax:2Point pt1 pt2))
  113.            pl2 (vla-AddLightweightPolyline blkobj (ax:2Point pt2 pt1))
  114.      )
  115.      (vla-SetBulge pl1 0 1)
  116.      (vla-SetBulge pl2 0 1)
  117.      (vla-SetWidth pl1 0 r r)
  118.      (vla-SetWidth pl2 0 r r)
  119.     )
  120.     ((= CType "3")
  121.      (setq pt1 (polar '(0 0) 0 (/ r 2))
  122.            pt2 (polar '(0 0) pi (/ r 2))
  123.      )
  124.      (setq pl1 (vla-AddLightweightPolyline blkobj (ax:2Point pt1 pt2))
  125.      )
  126.      (vla-SetBulge pl1 0 1)
  127.      (vla-SetWidth pl1 0 r r)
  128.     )
  129.     ((= CType "4")
  130.      (setq pt1 (polar '(0 0) 0 (/ r 2))
  131.            pt2 (polar '(0 0) (/ pi 2) (/ r 2))
  132.            pt3 (polar '(0 0) pi (/ r 2))
  133.            pt4 (polar '(0 0) (+ pi (/ pi 2)) (/ r 2))
  134.      )
  135.      (setq pl1 (vla-AddLightweightPolyline blkobj (ax:2Point pt1 pt2))
  136.            pl2 (vla-AddLightweightPolyline blkobj (ax:2Point pt3 pt4))
  137.      )
  138.      (vla-SetBulge pl1 0 0.4142)
  139.      (vla-SetBulge pl2 0 0.4142)
  140.      (vla-SetWidth pl1 0 r r)
  141.      (vla-SetWidth pl2 0 r r)
  142.     )
  143.   )
  144.   (setq blkname (vla-get-name blkobj))
  145. )

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

使用道具 举报

已领礼包: 943个

财富等级: 财运亨通

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

使用道具 举报

发表于 2003-1-21 15:20:34 | 显示全部楼层
你说的是明经通道吗,这也是一个很不错的cad网站哦。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 943个

财富等级: 财运亨通

发表于 2003-1-21 21:55:16 | 显示全部楼层
是啊!不太火的论坛,而且论坛页面有点乱。
不过资源还是很丰富的!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2003-5-4 17:54:55 | 显示全部楼层
在CAD2002、2004下能用,坐标点填充有四个选项:无、全、半、对角填充。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 23:36 , Processed in 0.300931 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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