找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1710|回复: 1

[教学] XDGE几何库应用(六)--Pline内部最窄处

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-9-17 03:52:44 | 显示全部楼层 |阅读模式

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

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

×
  1. (defun c:tt1 (/ e ge gelst gelst1 ge1 ge2 ptl pts)
  2.   (if (and (setq
  3.              e1        (xdrx_entsel "\nPick Curve: " '((0 . "LWPOLYLINE")))
  4.            )
  5.            (setq ge (xdge::constructor (car e1)))
  6.       )
  7.     (progn
  8.       (setq gelst (xdge::getpropertyvalue ge "getCurveList"));_pline 每段 Ge 列表
  9.       (while gelst
  10.         (setq ge1    (car gelst)
  11.               gelst  (cdr gelst)
  12.               gelst1 gelst
  13.         )
  14.         (while gelst1
  15.           (setq ge2 (car gelst1))
  16.           (setq        gcc (xdge::getpropertyvalue
  17.                       ge1
  18.                       "getClosestPointTo"
  19.                       ge2
  20.                     );_两 Ge 间最近点 PointOnCurve
  21.                 pts (mapcar '(lambda (x) (xdge::getpropertyvalue x "Point"))
  22.                             gcc
  23.                     );_取出 PointOnCurve 的 Point
  24.           )
  25.           (if (and
  26.                 (not (equal (car pts) (cadr pts) 1e-3));_不能是 Pline 的顶点
  27.                 (= (xdrx_point_getRelationAtClosedCurve
  28.                      (apply 'xdrx_line_midp pts)
  29.                      (car e1)
  30.                    )
  31.                    2
  32.                 );_中点在 Pline  内部
  33.                 (setq lineSeg3d        (xdge::constructor
  34.                                   "kLineSeg3d"
  35.                                   (car pts)
  36.                                   (cadr pts)
  37.                                 )
  38.                 );_构造一个 AcGeLineSeg3d
  39.                 (setq gcc
  40.                        (xdge::constructor "kCurveCurveInt3d" ge lineSeg3d)
  41.                 );_构造一个 相交对象
  42.                 (= (xdge::getpropertyvalue gcc "numIntPoints") 2);_该相交对象只有两个交点即 LineSeg3d 的两个端点
  43.               )
  44.             (setq ptl (cons pts ptl))
  45.           )
  46.           (setq gelst1 (cdr gelst1))
  47.         )
  48.       )
  49.       (xdrx_entity_setcolor
  50.         (apply
  51.           'xdrx_line_make
  52.           (car
  53.             (vl-sort ptl
  54.                      '(lambda (x1 x2)
  55.                         (< (apply 'distance x1) (apply 'distance x2))
  56.                       )
  57.             );_取出最短距离点对
  58.           )
  59.         )
  60.         1
  61.       )
  62.     )
  63.   )
  64.   (xdge::free)
  65.   (princ)
  66. )
20140917035219.jpg

本帖被以下淘专辑推荐:

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

已领礼包: 264个

财富等级: 日进斗金

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-27 20:14 , Processed in 0.397151 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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