找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: jjxiao

[求助]:如何一次性获取多义线的所有顶点

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

使用道具 举报

发表于 2004-6-18 11:37:29 | 显示全部楼层
最初由 maplesu 发布
[B]...我认为autolisp没有办法解决这个问题... [/B]


先不要清易下结论, 怎么会没有办法呢?

纯LISP返回三维多义线顶点:
(defun c:test ( )
  (setq n 0)
  (setq elist (entget (car (entsel))))
  (setq ename (cdr (assoc -1 elist)))
  (while (/= (cdr (assoc 0 elist)) "SEQEND")
    (setq elist (entget (setq ename (entnext ename))))
    (if (assoc 10 elist)
      (setq pts (cons (cdr (assoc 10 elist)) pts))
    )
    (setq n (+ 1 n))
  )
  pts
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2004-6-19 12:07:26 | 显示全部楼层
提取多段线与多义线的控制点,以上各位高手说的太好了,解决的也彻底了。

我遇到过需要加工用的曲线数据,光控制点的话可实在是少的可怜,而且曲线类型决定了曲线不一定通过控制点时怎么办?因此必须取曲线上的众多点才能满足要求。

采取两个步骤即可完成。
1、先用定数或等距点的方式在曲线上作出足够精度的等分点(曲线可以是平面的,也可以是空间的)。

2、将点坐标用下面程序提取出来即可。(若不需Z坐标,可将程序中的相关行删除即可)

精度我在程序中设的是小数据点后三位,可根据需要重新调整

(defun C:pointxy ()
  (setq ss (ssget "X" '((0 . "POINT")))) ;选择全部点
  (setq leng (sslength ss))
  (setq index (- leng 1))
  (setq f (open "D:\pointxy.txt" "w"))
  (REPEAT leng
    (setq b1 (entget (ssname ss index)))
    (setq xy (cdr (assoc 10 b1)))
    (setq x (rtos (car xy) 2 3))
    (setq y (rtos (cadr xy) 2 3))
    (setq z (rtos (caddr xy) 2 3))   ;精度取小数点后三位
    (princ x f)
    (princ "," f)
    (princ y f)
    (princ "," f)
    (princ z f)
    (princ "\n" f)
    (setq index (- index 1))
  )
  (close f)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-20 03:21:49 | 显示全部楼层
凑个热闹,一个子函数,不管是2d的还是3d的
[php]
;|
(xl-vertexs e) = 提取 lwpolyline,polyline类的顶点含xyz.----陌生人!
|;
(defun xl-vertexs (e / pts z i lst)
   (setq obj (vlax-ename->vla-object e)
         pts (vlax-get obj 'Coordinates )
         z   (if (= "AcDbPolyline"  (vla-get-objectname obj)) (vlax-get obj 'Elevation ))
         i   0)
   (while  pts
     (setq lst (cons (list (car pts) (cadr pts) (if z z (caddr pts))) lst)
           pts (if z (cddr pts)(cdddr pts)))
   )(reverse lst)
)

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

使用道具 举报

发表于 2004-6-20 06:56:44 | 显示全部楼层
内部函数(acet-geom-vertex-list pl) 返回多义线(二维和三维)诸顶点.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-20 10:50:40 | 显示全部楼层
我知道,不过我觉得你应该说
“et工具的内部函数(acet-geom-vertex-list pl) 返回多义线(二维和三维)诸顶点. ”
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-20 14:34:05 | 显示全部楼层
19楼的思路不错。
过去我在编一个曲面展开程序时,开始采用提取曲线的控制点,后来发现不同程序生成的曲线差别太大,有一位博士生编的曲线生成程序,其控制点多到完全脱离实际,把这些点提出来用在我的程序上,只有死机的份。于是我只好放弃这些点,用定数或等距点的方式(精度由用户控制)自己生成点,也就是说只利用原有曲线来生成自己需要的点,并不涉及原曲线的数据,这样,原来是什么曲线就无所谓了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-20 17:39:43 | 显示全部楼层
对于样条曲线来说的确先等分在取出等分点的坐标是一个很好的思路!

对于et工具的内部函数(acet-geom-vertex-list pl)这个取得样条曲线的时候是取得控制点,而控制点并非一定在曲线上的,样条曲线的拟和点才是曲线上的点。但是拟和点是如果你这个样条曲线不是通过描点画出来的,应该就是没有拟和点了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-3-31 11:31:10 | 显示全部楼层
我有一个类似的问题,就是一条线路,在放线的时候,需要提取百米标和一些控制点的坐标,并导入到EXCEL表中。原程序我看不懂,不知哪位能解决一下? 谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-3-31 12:30:20 | 显示全部楼层
汗,这些天来在这个论坛中看了这么多高手对于CAD的分析,真没有想到CAD可以用很多地方呢,改变了原先CAD只用于二维绘图的看法,看来要向各位好好学习,学好CAD!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2个

财富等级: 恭喜发财

发表于 2005-11-3 14:42:10 | 显示全部楼层

明經的程序

(defun vertexs (ename / plist pp n)        
  (setq obj (vlax-ename->vla-object ename))
  (setq plist (vlax-safearray->list
(vlax-variant-value
  (vla-get-coordinates obj))))
  (setq n 0)
  (repeat (/ (length plist) 2)
    (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist)))))
    (setq n (+ n 2))
  )
  pp
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-13 06:28 , Processed in 0.213273 second(s), 54 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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