找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3007|回复: 3

[点表] (XD::Pnts:Visible)判断点表(多段线实体表)哪些点对一条直线可见

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-5-30 20:20:14 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Pnts:Visible
调用格式: (XD::Pnts:Visible pts p1 p2)
参数说明: pts ----- (点表)或 (e1 ...en), 每个点表可生成一条多段线
p1 ----- 测试直线起点
p2 ------ 测试直线端点
返回值: ((可见点表1)... (可见点表n))

每个表都是按P1 P2排好序的。
函数简介: 判断点表(多段线实体表)哪些点对一条直线可见
函数来源: 原创
函数作者: Newer
适用版本: XDRX API 
最后更新时间: 2016-05-30
备注: -
演示图片:

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

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

×
本帖最后由 newer 于 2016-6-13 08:57 编辑

  1. (defun XD::Pnts:Visible (pts p1 p2 / e ints ints1 pt1 pt2 pts1 pts2 ptss x y)
  2.   (defun _isInt (ptss pt1 pt2)
  3.     (vl-some '(lambda (x)
  4.                 (xdrx_curve_getinters (list pt1 pt2) x)
  5.               ) ptss
  6.     )
  7.   )
  8.   (setq pts (xd::list:removedup pts))
  9.   (setq pts1 (mapcar
  10.                '(lambda (x)
  11.                   (cond
  12.                     ((= (type x) 'ENAME)
  13.                       (xdrx_getpropertyvalue x "vertices")
  14.                     )
  15.                     ((= (type x) 'LIST)
  16.                       x
  17.                     )
  18.                   )
  19.                 )
  20.                pts
  21.              )
  22.   )
  23.   (setq pts2 (vl-remove nil (mapcar
  24.                               '(lambda (x / e)
  25.                                  (setq e (xdrx_polyline_make x t))
  26.                                  (setq ints1 nil)
  27.                                  (mapcar
  28.                                    '(lambda (y)
  29.                                       (if (setq pts2
  30.                                                 (xd::pnts:orthoproject
  31.                                                                        (list y)
  32.                                                                        p1 p2
  33.                                                 )
  34.                                           )
  35.                                         (progn
  36.                                           (if (setq ints
  37.                                                     (xdrx_curve_getinters
  38.                                                                           (list
  39.                                                                                 (car pts2) y
  40.                                                                           )
  41.                                                                           e
  42.                                                     )
  43.                                               )
  44.                                             (progn
  45.                                               (if (and
  46.                                                     (= (length ints) 1)
  47.                                                     (not (_isInt
  48.                                                                  (vl-remove x pts1)
  49.                                                                  (car pts2)
  50.                                                                  (car ints)
  51.                                                          )
  52.                                                     )
  53.                                                   )
  54.                                                 (setq ints1 (cons
  55.                                                                   (car ints)
  56.                                                                   ints1
  57.                                                             )
  58.                                                 )
  59.                                               )
  60.                                             )
  61.                                           )
  62.                                         )
  63.                                       )
  64.                                     )
  65.                                    x
  66.                                  )
  67.                                  (xdrx_entity_delete e)
  68.                                  (vl-remove nil (mapcar
  69.                                                   'cadr
  70.                                                   (xdrx_points_sortoncurve
  71.                                                                            (list p1 p2) ints1
  72.                                                   )
  73.                                                 )
  74.                                  )
  75.                                )
  76.                               pts1
  77.                             )
  78.              )
  79.   )
  80.   (xd::list:removedup (mapcar
  81.                         'cadr
  82.                         (xdrx_points_sortoncurve (list p1 p2)
  83.                                                  (apply
  84.                                                    'append
  85.                                                    pts2
  86.                                                  )
  87.                         )
  88.                       )
  89.   )
  90. )

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

已领礼包: 859个

财富等级: 财运亨通

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

使用道具 举报

已领礼包: 1211个

财富等级: 财源广进

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

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2016-11-24 10:29:29 | 显示全部楼层

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 19:03 , Processed in 0.395877 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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