明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 827|回复: 8

[源码] lsp版本找朋友算法-模仿net的算法

[复制链接]
发表于 2024-8-10 00:14:43 | 显示全部楼层 |阅读模式
本帖最后由 liuhe 于 2024-8-10 08:59 编辑

最近一直学习net的语言,研究到这个net的找朋友算法很有意思,把算法和朋友概念进行分离,只利用委托的传入的思想很有意思 ,
于是就写了一个lsp版本的找朋友算法。举例是常见,把直线进行首尾相连。效率么不好说,可能某些函数替换,可以增加效率,结果是正确的。


具体的实现原理,请去找找b站搜一搜。

因为算法和概念是分离的,传递进去什么类型的表,就输出什么类型表。
比如说,该算法和包围盒碰撞算法结合,就可以改造成分堆算法。
比如说,该算法和块统计相结合,就可以得出块的分类统计结果。

懂得自然明白我说的啥,不懂的还是请自行体会。


20240810  更新

举例让大佬误会了,net的多线程之类高级用法,我还不会,谢谢大佬的指导。
我用这个lsp找朋友算法,写了一个统计相同块名的统计示例。

通过改变 (LH:FINDFRIENDS   ENTS   FUNC   FUZZX  FUZZY)func为lh:blockcount,就可以把程序变为统计块名。

(defun lh:blockcount (e1 e2 fuzzx fuzzy / name1 name2)
  (setq        name1 ( vla-get-EffectiveName(vlax-ename->vla-object e1))
        name2 ( vla-get-EffectiveName(vlax-ename->vla-object e2))
  )
  (eq name1 name2)
)


写这个更多的是一种通用算法,只需要func  就可以实现很多,首尾相连只是一种。
还可以结合成,统计不同面积的例子。


本帖子中包含更多资源

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

x

评分

参与人数 3明经币 +3 金钱 +5 收起 理由
baitang36 + 1 很给力!
ssyfeng + 1 赞一个!
tigcat + 1 + 5 很给力!实用启发性程序

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-8-10 04:19:35 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-8-10 04:38 编辑

没懂,写了个啥...
如果首尾相连,可以看看下面链接,以及我的评论

http://bbs.mjtd.com/thread-190866-1-1.html
http://bbs.mjtd.com/forum.php?mo ... mp;page=1#pid990734
.net学完流程一定要学优化,例如减少信息熵,多线程并行,锁粒度控制,你会发现可以把之前的东西推翻个七七八八,嘻嘻

回复 支持 1 反对 0

使用道具 举报

发表于 2024-8-10 09:59:19 | 显示全部楼层
没懂,
写了个啥...
说了个啥...
是说net的算法难用,慢吗?
lsp算法简单,快速吗?
发表于 2024-8-10 10:10:10 | 显示全部楼层
演示图速度过快,不知道在做啥
 楼主| 发表于 2024-8-10 11:03:09 | 显示全部楼层
小菜123 发表于 2024-8-10 10:10
演示图速度过快,不知道在做啥

大佬  只需要看代码,gif为了压缩没办法
 楼主| 发表于 2024-8-10 11:04:22 | 显示全部楼层
gzcsun 发表于 2024-8-10 09:59
没懂,
写了个啥...
说了个啥...

写了lsp可以用的版本,只是移植而已。lsp我没看到这个算法
发表于 2024-8-10 11:13:32 | 显示全部楼层
liuhe 发表于 2024-8-10 11:04
写了lsp可以用的版本,只是移植而已。lsp我没看到这个算法

我更想看看你的net学习有没有被别人带歪
 楼主| 发表于 2024-8-10 15:16:17 | 显示全部楼层
你有种再说一遍 发表于 2024-8-10 11:13
我更想看看你的net学习有没有被别人带歪

大佬,我是以能用就行。你早上提醒了我多线程,我今天学习了一下,果然速度提高了,惊惊大佬牛逼
发表于 2024-8-10 19:00:34 | 显示全部楼层
本帖最后由 你有种再说一遍 于 2024-8-10 19:04 编辑
liuhe 发表于 2024-8-10 15:16
大佬,我是以能用就行。你早上提醒了我多线程,我今天学习了一下,果然速度提高了,惊惊大佬牛逼

学多线程并行可以用Parallel.For,它内部缓存了一个线程池给你复用.
而且你得控制线程粒度,
一个文件分多个块每个块进行并行,
和每个文件分配一个线程,有本质的不同.
然后你想想,块表什么的,是不是也可以...
然后你就开始想把10w图元给优化到一秒内了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-30 12:16 , Processed in 0.212479 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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