明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2728|回复: 10

[求助]求助高手编一个每隔一定距离提取坐标的程序

[复制链接]
发表于 2007-6-21 21:37 | 显示全部楼层 |阅读模式

假如说由很多条pl线,根据pe命令后合成一条线后,如果平均每隔一定的距离,如何提取这条线上的坐标。(比如说每隔10米或者20米30米等等,根据输入的间隔距离而定)。

谢谢!

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2007-6-22 09:49 | 显示全部楼层

1、使用MEASURE命令定矩画点;

2、提取这些点,并输出点的坐标。

 楼主| 发表于 2007-6-22 10:14 | 显示全部楼层

能不能编一个程序,将这些点的坐标一次性全部输出?

发表于 2007-6-22 10:37 | 显示全部楼层
输出格式?从线的什么地方开始输出?包括线条的端点吗?
 楼主| 发表于 2007-6-22 14:45 | 显示全部楼层

输出的格式为x=    y=     z=   全部输出到.txt文件中 

坐标起点根据所选由多条小pl线合成一整条pl线的一头做为起点(坐标要包括这该pl线的起点和最后的端点)每隔一定的距离提取坐标值。至于小线条的端点可可忽略不计。

发表于 2007-6-22 23:43 | 显示全部楼层
  1. (DEFUN C:TEST ()
  2. (SETVAR "CMDECHO" 0)
  3. (SETQ OLDOS (GETVAR "OSMODE"))
  4. (SETVAR "OSMODE" 0)
  5. (SETQ LN "LL")
  6. (WHILE (NOT (WCMATCH LN "*POLYLINE"))
  7.   (SETQ SE (ENTSEL "\nSelect a Polyline :")
  8. ENT (ENTGET (CAR SE))
  9. LN (CDR (ASSOC 0 ENT)))
  10. )
  11. (SETQ PT (CADR SE))
  12. (IF (SETQ DD (GETDIST "\nEnter Distance for Measure :")) (PROGN
  13.   (IF (= LN "LWPOLYLINE")
  14.    (SETQ PT1 (CDR (ASSOC 10 ENT))
  15.   PT2 (CDR (ASSOC 10 (REVERSE ENT))))
  16.   (PROGN
  17.    (SETQ SN1 (ENTNEXT (CDR (ASSOC -1 ENT)))
  18.          LB (ENTGET SN1)          LM (CDR (ASSOC 0 LB))
  19.          PT1 (CDR (ASSOC 10 LB)))
  20.    (WHILE (/= LM "SEQEND")
  21.     (SETQ SN1 (ENTNEXT (CDR (ASSOC -1 LB)))  LB (ENTGET SN1)
  22.           LM (CDR (ASSOC 0 LB))        PT2 (CDR (ASSOC 10 LB)))
  23.    )
  24.   ))
  25.   (IF (> (DISTANCE PT PT1) (DISTANCE PT PT2)) (SETQ PTT PT1 PT1 PT2 PT2 PTT))
  26.   (COMMAND "MEASURE" PT DD)
  27.   (SETQ SS (SSGET "P")
  28. PT0 (CDR (ASSOC 10 (ENTGET (SSNAME SS 0))))
  29. SL (SSLENGTH SS) DL (LIST (APPEND PT1 (LIST 0.0))))
  30.   (IF (> (DISTANCE PT0 PT1) (DISTANCE PT0 PT2))
  31.    (SETQ I (1- SS) N -1)
  32.    (SETQ I 0 N 1)
  33.   )
  34.   (REPEAT (SSLENGTH SS)
  35.    (SETQ PTT (CDR (ASSOC 10 (ENTGET (SSNAME SS I))))
  36.          I (+ I N)
  37.   DL (APPEND DL (LIST PTT)))
  38.   )
  39.   (SETQ DL (APPEND DL (LIST (APPEND PT2 (LIST 0.0)))))
  40.   (SETQ NM (IF NM NM ""))
  41.   (IF (SETQ NM (GETFILED "Select file name to write :" NM "txt" 1)) (PROGN
  42.    (SETQ FP (OPEN NM "w")
  43.   I -1)
  44.    (REPEAT (LENGTH DL)
  45.     (PRINC (NTH (SETQ I (1+ I)) DL) FP) (PRINC "\n" FP)
  46.    )
  47.    (CLOSE FP)
  48.    (COMMAND "NOTEPAD" NM)
  49.   ))
  50. ))
  51. (SETVAR "OSMODE" OLDOS)
  52. (SETVAR "CMDECHO" 1)
  53. (PRINC)
  54. )
复制代码
发表于 2007-6-24 17:52 | 显示全部楼层
看看这个

本帖子中包含更多资源

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

x
发表于 2007-6-26 09:08 | 显示全部楼层

真是个好东东,楼上的,在那里可以下载?

发表于 2007-6-26 11:19 | 显示全部楼层

7楼的程序好漂亮!!

我喜欢!能不能提供个下载地址啊!

发表于 2007-6-26 12:18 | 显示全部楼层
本帖最后由 作者 于 2007-6-26 13:23:24 编辑

根据7楼的,我自己也写一个,附件里有一个lsp和一个xy的块
  1. (defun get_pt (ent / elist ptlist)
  2.   (setq elist (entget ent))
  3.   (foreach n elist
  4.     (if (= 10 (car n))
  5.       (setq ptlist (cons (cdr n) ptlist))
  6.     )
  7.   )
  8.   ptlist
  9. )
  10. (defun C:tt (/ osm pt ss ent ptlst ptx pty n npt nptlst)
  11.   (setq osm (getvar "osmode"))
  12.   (setvar "osmode" 1)
  13.   (setq pt (getpoint))
  14.   (setvar "osmode" osm)
  15.   (setq ss    (ssget pt)
  16. ent   (ssname ss 0)
  17. ptlst (get_pt ent)
  18. ptx   (car pt)
  19. pty   (cadr pt)
  20.   )
  21.   (foreach n ptlst
  22.     (setq nptx (rtos (- (car n) ptx) 2 3)
  23.    npty (rtos (- (cadr n) pty) 2 3)
  24.     )
  25.     (command "-insert" "xy" n "1" "1" "0" nptx npty);_这里的块xy是我自己做的。放在搜索路径里面就能使用!
  26.   )
  27.   (princ)
  28. )

本帖子中包含更多资源

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

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

本版积分规则

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

GMT+8, 2024-5-18 21:02 , Processed in 0.186867 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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