明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1479|回复: 3

求采集pline上点坐标的程序

[复制链接]
发表于 2005-3-21 22:43:00 | 显示全部楼层 |阅读模式
一条pline,上面可能有arc,我要采集它上各点的坐标(arc段如果能加密采集更好),该怎么实现呀?各位帮帮忙,感激不尽:)
发表于 2011-10-20 14:08:27 | 显示全部楼层
本帖最后由 zzl9105 于 2011-10-20 14:12 编辑

兄弟,不要说加密采集,就是一个pl线,你把各顶点坐标能取出来不?基本的
把这个功能要求的lisp上传上来学习下呀,没有哪个单一函数能求的吧?
期待你的分享,谢谢
发表于 2011-10-20 14:30:17 | 显示全部楼层
用measure取点?
发表于 2011-10-20 15:36:55 | 显示全部楼层
一个函数,返回表内容是LWPOLYLINE的顶点及加密点,需要参数是LWPOLYLINE的图元名,及曲线上圆弧的加密段数。
  1. (defun getptlist(ename n / dl dlpt dl1 pt1 ptdl dlpt1 ratio H R pm L pto ptm pt3 angle)
  2.     (setq dl   (entget ename)
  3.           dlpt (member (assoc 10 dl) dl)
  4.           dl1  (car dlpt)
  5.           pt1  (cdr dl1)
  6.           ptdl (list pt1)
  7.     );setq
  8.     (while dlpt
  9.            (setq dlpt1 (cdr dlpt))
  10.                    (setq ratio (cdar (member (assoc 42 dlpt1) dlpt1)))
  11.                    (if (not (zerop ratio))
  12.                                       (progn
  13.                                               (setq pm    (/ ratio (abs ratio))
  14.                                                         ratio (abs ratio)
  15.                                                                 pt2   (cdar (member (assoc 10 dlpt1) dlpt1))
  16.                                                                 L     (distance pt1 pt2)
  17.                                                                 H     (/ (* L (- 1.0 (* ratio ratio))) (* 4.0 ratio))
  18.                                                                 R     (/ (* L (+ 1.0 (* ratio ratio))) (* 4.0 ratio))
  19.                                 ptm   (polar pt1 (angle pt1 pt2) (/ L 2.0))
  20.                                                                 pto   (polar ptm (+ (angle pt1 pt2) (* pm pi 0.5)) H)
  21.                                                                 angle 0
  22.                                                   );setq
  23.                                                   (repeat (- n 1)
  24.                                                           (setq  angle (+ angle (* (/ (atan ratio) n) pm 4.0))
  25.                                                                          pt3 (polar pto (+ (angle pto pt1) angle) R)
  26.                                                                                  ptdl (append ptdl (list pt3))
  27.                                                                   );setq
  28.                                                   );repeat
  29.                                           );progn
  30.                     );if
  31.             (setq dlpt (member (assoc 10 dlpt1) dlpt1))
  32.             (if dlpt
  33.                 (progn
  34.                     (setq dl1 (car dlpt))
  35.                     (setq pt1 (cdr dl1))
  36.                     (setq ptdl (append ptdl (list pt1)))
  37.                 );progn
  38.             );if
  39.     );while
  40.     ptdl
  41. )
代码是很早以前写的,有点脏,有些算法很傻,例如凸度还判断正负了,写的时候没仔细推公式,。还有就是返回的都是世界坐标系的xy平面内的坐标,如果是lwpolyline所在平面不是世界坐标系的xy平面,得到的结果还要处理,这部分算法虽然不难,但是还没写进去。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-25 05:10 , Processed in 0.140872 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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