找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3132|回复: 11

[研讨] API 新鲜出炉的速度极快三角网构建函数

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2014-11-14 21:57:00 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2014-11-14 22:00 编辑

刚拿到了新的API,测试了新加入的三角网构建函数

15万个点,计算部分仅需1秒就完毕,画出来的时间加一起也就几秒钟而已。看看图

BaiduShurufa_2014-11-14_21-52-1.png

多漂亮的图形。

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

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-14 22:08:21 | 显示全部楼层
最好能保存到内部数据库,可以用来查询 拾取点 位于哪个三角形内

点评

没必要保存啊,很占内存的。生成的是3DFACE,另外写函数算三角形内插值标高就行了。  详情 回复 发表于 2014-11-14 22:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-11-14 22:23:17 | 显示全部楼层
st788796 发表于 2014-11-14 22:08
最好能保存到内部数据库,可以用来查询 拾取点 位于哪个三角形内

没必要保存啊,很占内存的。生成的是3DFACE,另外写函数算三角形内插值标高就行了。

点评

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

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-11-14 22:53:50 来自手机 | 显示全部楼层
newer 发表于 2014-11-14 22:23
没必要保存啊,很占内存的。生成的是3DFACE,另外写函数算三角形内插值标高就行了。

点数据占内存?

点评

15万个点,生成的三角网,三角形加一起有80多万个点,额外在单独保存到表里面还不占内存吗? 刚测试的三角网函数,可以画,也可以返回 三点为子表的 大表。你想保存就保存到变量里面吧,但你要显示到屏幕那就等着  详情 回复 发表于 2014-11-14 23:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-11-14 23:04:16 | 显示全部楼层
iLisp 发表于 2014-11-14 22:53
点数据占内存?

15万个点,生成的三角网,三角形加一起有80多万个点,额外在单独保存到表里面还不占内存吗?

刚测试的三角网函数,可以画,也可以返回 三点为子表的 大表。你想保存就保存到变量里面吧,但你要显示到屏幕那就等着刷屏吧。你想找哪个点在哪个三角形,可以遍历这个表去算,有很复杂的算法,最好的复杂度在LOG(N),好像什么穿刺算法,大家可以研究下啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-11-15 13:11:47 | 显示全部楼层
newer 发表于 2014-11-14 23:04
15万个点,生成的三角网,三角形加一起有80多万个点,额外在单独保存到表里面还不占内存吗?

刚测试的 ...

太高深的算法看着费劲,你看看这个算法复杂度是多少
  1. (defun Pnt:IsInTriangle        (p pts / lst)
  2.   (vl-catch-all-error-p
  3.     (vl-catch-all-apply
  4.       '(lambda (/ xl yl minx miny maxx maxy)
  5.          (foreach x pts
  6.            (setq xl   (mapcar 'car x)
  7.                  yl   (mapcar 'cadr x)
  8.                  minx (apply 'min xl)
  9.                  maxx (apply 'max xl)
  10.                  miny (apply 'min yl)
  11.                  maxy (apply 'max yl)
  12.            )
  13.            (if (and (<= minx (car p) maxx)
  14.                     (<= miny (cadr p) maxy)
  15.                     (xd::pnt:isinside p x)
  16.                )
  17.              (progn (setq lst x) (exit))
  18.            )
  19.          )
  20.        )
  21.       nil
  22.     )
  23.   )
  24.   lst
  25. )

点评

每个都遍历,这个应该是N吧。其实我想在ACAD下面,就应该简单些了,只要那些三角形画出来了,3DFACE或者POLYLINE,从点做个射线,从和射线相交的选择集里面找出来离点最近的三角形。  详情 回复 发表于 2014-11-15 13:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-11-15 13:19:36 | 显示全部楼层
st788796 发表于 2014-11-15 13:11
太高深的算法看着费劲,你看看这个算法复杂度是多少

每个都遍历,这个应该是N吧。其实我想在ACAD下面,就应该简单些了,只要那些三角形画出来了,3DFACE或者POLYLINE,从点做个射线,从和射线相交的选择集里面找出来离点最近的三角形。

点评

这个倒是简单,不过有时候是没有三角形的 vl-member-if 可能就是桌子提供处理单向链表遍历的  详情 回复 发表于 2014-11-15 13:33
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 264个

财富等级: 日进斗金

发表于 2014-11-15 13:33:23 来自手机 | 显示全部楼层
newer 发表于 2014-11-15 13:19
每个都遍历,这个应该是N吧。其实我想在ACAD下面,就应该简单些了,只要那些三角形画出来了,3DFACE或者P ...

这个倒是简单,不过有时候是没有三角形的
vl-member-if 可能就是桌子提供处理单向链表遍历的

点评

最基本的算法是N,最好的算法是log(n), 差别挺大的。三角形越多,体现越明显,两者的函数曲线决定的。  详情 回复 发表于 2014-11-15 13:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2014-11-15 13:46:20 | 显示全部楼层
iLisp 发表于 2014-11-15 13:33
这个倒是简单,不过有时候是没有三角形的
vl-member-if 可能就是桌子提供处理单向链表遍历的

最基本的算法是N,最好的算法是log(n), 差别挺大的。三角形越多,体现越明显,两者的函数曲线决定的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-11-15 15:03:08 | 显示全部楼层
既然是给 Autolisp  用的,那就针对 AutoCAD  把速度发挥到极致,函数除了接受点参数,还可以增加选择集参数,把提取部分也放到 ARX 内部,比如

1 Point  选择集,内部提取  Position

2 BlockRef  选择集,内部提取  Position

3 Text 选择集,内部提取 Position

3 曲线选择集,内部提取 getSamplePoints

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

使用道具 举报

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

使用道具 举报

发表于 2018-5-29 21:13:21 | 显示全部楼层
请问版主能分享一下新的API和三角网构建函数吗?

点评

论坛下载啊,最新的是2018.05.29日更新的,刚刚更新的。 http://bbs.xdcad.net/source/plugin/disad/click.php?19  详情 回复 发表于 2018-5-29 21:19
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-5-29 21:19:53 | 显示全部楼层
在路上584 发表于 2018-5-29 21:13
请问版主能分享一下新的API和三角网构建函数吗?

论坛下载啊,最新的是2018.05.29日更新的,刚刚更新的。

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

使用道具 举报

发表于 2018-5-29 21:37:51 | 显示全部楼层
newer 发表于 2018-5-29 21:19
论坛下载啊,最新的是2018.05.29日更新的,刚刚更新的。

http://bbs.xdcad.net/source/plugin/disad/c ...

什么是XDRX API
   XDRX API是用ARX(C++)写的几千个可以让LISP调用的函数库,使用这些函数写成的LISP应用程序,执行前需要加载API。


原来是供LISP调用的!以为可以在C++下调用呢

点评

C++调用XDRX API也可以,acedInvoke,或者没写进文档的LISP求值函数。  详情 回复 发表于 2018-5-29 21:40
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-5-29 21:40:30 | 显示全部楼层
在路上584 发表于 2018-5-29 21:37
什么是XDRX API?
   XDRX API是用ARX(C++)写的几千个可以让LISP调用的函数库,使用这些函数写成的LISP ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 17:27 , Processed in 0.217730 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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