找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1219|回复: 12

[LISP程序]:如何获取LWPOLYLINE的第二点坐标?

[复制链接]
发表于 2004-11-26 15:08:16 | 显示全部楼层 |阅读模式

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

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

×
发现LWPOLYLINE实体中第一点和第二点坐标的group code都是10。不知道有什么办法能够获得第二点的坐标。谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-26 15:24:30 | 显示全部楼层
论坛里有许多求多义线顶点的程序, 搜索一下.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-12 00:31:09 | 显示全部楼层
可以检验每一个原子,只要头一位的是10的就保留,排除顺序,不就可以得到每一点的坐标了么
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-12-12 10:10:11 | 显示全部楼层
5楼楼主解决的只是只有两点的多段线的问题,如果多段线有超过两点,那就不对了
4楼楼主的方法也只能找到第二点,如果在往下找第三点、第四点就麻烦了
有没有通用程序,可以把多段线的每一个点都列出来
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-12 10:25:07 | 显示全部楼层
最初由 stone0030 发布
[B]5楼楼主解决的只是只有两点的多段线的问题,如果多段线有超过两点,那就不对了
4楼楼主的方法也只能找到第二点,如果在往下找第三点、第四点就麻烦了
有没有通用程序,可以把多段线的每一个点都列出来 [/B]

找点的函数太多了

  1. ;;不适合 3dpline
  2. (defun getplpoints (pline / el )
  3.   (setq        el (entget pline)
  4.         el (vl-remove-if-not '(lambda (x) (= (car x) 10)) el)
  5.   )
  6.   (mapcar 'cdr el)
  7. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-12 12:10:11 | 显示全部楼层
一个罗嗦的:
[php](defun c:test (/ ss i ssn retcoord n pt)
  (setvar "cmdecho" 0)
  (princ "\n选取PLINE多义线...")
  (setq ss (ssget '((0 . "*POLYLINE"))))
  (setq i 0)
  (setvar "pdmode" 33)
  (repeat (sslength ss)
    (princ (strcat "\n第" (rtos (+ i 1) 2 0) "条线数据 : "))
    (princ)
    (setq ssn (ssname ss i))
    (setq retcoord (vla-get-Coordinates (vlax-ename->vla-object ssn)))
    (setq n 0)
    (repeat
      (length (vlax-safearray->list (vlax-variant-value retcoord))
      )
       (setq pt
              (vlax-safearray-get-element (vlax-variant-value retcoord) n)
       )
       (princ "\n")
       (princ pt)
       (setq n (1+ n))
    )
    (princ)
    (princ "\n ")
    (princ)
    (setq i (+ 1 i))
  )
  (princ)
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-12 21:01:46 | 显示全部楼层
AUTOLISP:
(DEFUN C:TEST (/ EN ENLIST N PL SS ZB)
  (PROMPT "\n选择要分析的多段线:")
  (SETQ SS (SSGET '((0 . "LWPOLYLINE"))))
  (SETQ        N  0
        PL '()
  )
  (REPEAT (SSLENGTH SS)
    (SETQ EN (SSNAME SS N))
    (SETQ ENLIST (ENTGET EN))
    (FOREACH X ENLIST
      (PROGN
        (IF (EQUAL (CAR X) 10)
          (SETQ PL (CONS (CDR X) PL))
        )
      )
    )

    (SETQ PL (REVERSE PL))
    (PRINC PL)
    (SETQ N (1+ N))
  )
  (PRINC)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-12-13 00:03:18 | 显示全部楼层
最初由 LADESIGNER 发布
[B]AUTOLISP:
(DEFUN C:TEST (/ EN ENLIST N PL SS ZB)
  (PROMPT "\n选择要分析的多段线:")
  (SETQ SS (SSGET '((0 . "LWPOLYLINE"))))
  (SETQ        N  0
        PL '()
  )
  (REPEAT (SSLENGTH SS)
    (SETQ EN (SS... [/B]

[php]
(DEFUN C:TEST (/ EN ENLIST N PL SS ZB)
  (PROMPT "\n选择要分析的多段线:")
  (SETQ SS (SSGET '((0 . "*POLYLINE"))));;增加通配符
  (SETQ        N  0
        PL '()
  )
  (REPEAT (SSLENGTH SS)
    (SETQ EN (SSNAME SS N))
    (SETQ ENLIST (ENTGET EN))
    (FOREACH X ENLIST
      (PROGN
        (IF (EQUAL (CAR X) 10)
          (SETQ PL (CONS (CDR X) PL))
        )
      )
    )
    (SETQ PL (REVERSE PL))
    (PRINC PL)
    (SETQ N (1+ N))
  )
  (PRINC)
)[/php]
测试后无效。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2004-12-13 18:42:12 | 显示全部楼层

10楼看清楚了,测试没有问题

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 17:43 , Processed in 0.408289 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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