明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1437|回复: 7

[已解答] 多段线循环提取顶点的问题,请大神进来给看看,谢谢!

[复制链接]
发表于 2013-12-29 22:50:07 | 显示全部楼层 |阅读模式
  1. (defun c:tt()
  2.   (setq ent (entget (car (entsel))))
  3.   (setq i 0)
  4.   (repeat (length ent)
  5.     (setq lst (nth i ent))
  6.     (if (= 10 (car lst))
  7.      (progn
  8.       (setq x (cadr lst))
  9.       (setq y (caddr lst))
  10.      )
  11.     )
  12.    (print (strcat "顶点坐标为:" (rtos x) (rtos y)))
  13.    (setq i (1+ i))
  14.   )
  15. )
代码如上,ent为多段线的组码表,然后进行循环提取坐标,现在有个问题就是:如果循环完成后,我还想要在最后面输出第一次循环得到的X,Y坐标,不知道怎么做,用assoc不行,坐标和第一次提取的对不上!

发表于 2013-12-29 23:02:56 | 显示全部楼层
把所有的坐标都做成一个表吧,循环一次打印一次意义不大啊
发表于 2013-12-29 23:33:05 | 显示全部楼层
而且代码貌似完全不对……
发表于 2013-12-30 08:17:44 | 显示全部楼层
  1. (defun c:tt()
  2. (if (and (setq s1 (entsel "\n选择复线: "))
  3.             (setq ent (entget(car s1)))
  4.             (= (cdr(assoc 0 ent)) "LWPOLYLINE")) (progn
  5.   (setq i 0 plst (list))
  6.   (foreach x ent (if (= (car x) 10) (setq plst (cons (cdr x) plst))))
  7.   (setq plst (reverse plst))
  8.   (print (strcat "顶点坐标为:" (rtos (caar plst)) (rtos (cadar plst))))
  9. ))
  10. (princ)
  11. )

评分

参与人数 1明经币 +1 收起 理由
312735894 + 1 谢谢Z版大大!

查看全部评分

发表于 2013-12-30 09:18:55 | 显示全部楼层
使用vl-remove-if-not函数从实体表中提取出点表,然后再进行其它操作。

评分

参与人数 1金钱 +6 收起 理由
312735894 + 6 谢谢大大!

查看全部评分

 楼主| 发表于 2013-12-30 20:08:46 | 显示全部楼层
ZZXXQQ 发表于 2013-12-30 08:17

哦哦 ,我明白了,原来就是将所有的顶点做成一个表,单独来提取,谢谢Z版!!!
 楼主| 发表于 2013-12-30 20:09:58 | 显示全部楼层
ll_j 发表于 2013-12-30 09:18
使用vl-remove-if-not函数从实体表中提取出点表,然后再进行其它操作。

谢谢老大给的思路,前段时间刚看了您发的帖子,函数赋值与定义,对我帮助太大了,谢谢!
 楼主| 发表于 2013-12-30 20:25:57 | 显示全部楼层
前面给弄错了,其实用assoc也是可以的,可以提取到第一次的坐标的,不过Z版的更好,想提取哪个就提取哪个!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-26 03:49 , Processed in 0.175680 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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