乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
楼主: Pete_IC

[编程交流] LISP查找多个顶点的中点

[复制链接]

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:28:24 | 显示全部楼层
你的李没有问题。我只是好奇一种不同的方法。完全是学术性的。
 
  1. (defun c:AvMid (/ ss lst)
  2. ;; Alan J. Thompson, 05.24.10
  3. (if (setq ss (ssget '((0 . "ARC,LINE,*POLYLINE"))))
  4.    ((lambda (i)
  5.       (while (setq e (ssname ss (setq i (1+ i))))
  6.         (setq lst (cons (vlax-curve-getPointatParam
  7.                           e
  8.                           (/ (+ (vlax-curve-getEndParam e)
  9.                                 (vlax-curve-getStartParam e)
  10.                              )
  11.                              2.
  12.                           )
  13.                         )
  14.                         lst
  15.                   )
  16.         )
  17.       )
  18.       (entmakex
  19.         (list '(0 . "POINT")
  20.               (cons 10
  21.                     (mapcar
  22.                       (function
  23.                         (lambda (f)
  24.                           (/ (apply (function +) (mapcar (function f) lst))
  25.                              (length lst)
  26.                           )
  27.                         )
  28.                       )
  29.                       (list car cadr caddr)
  30.                     )
  31.               )
  32.         )
  33.       )
  34.     )
  35.      -1
  36.    )
  37. )
  38. (princ)
  39. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:29:37 | 显示全部楼层
发布变体很好-让大脑工作。。。
 
但请记住,您的代码效率极低-它必须在选择集中翻腾三次,然后每次也翻腾结果列表。。。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:32:24 | 显示全部楼层
啊,你说得对。我将单步执行选择集部分放在mapcar语句中纯粹是偶然的。然而,你是对的。现在,我看了一下它,它平均了点的部分,它确实在最终列表中进行了不需要的次数。我想这会教会我早上第一件事就是编码。顺便说一句,评估最终列表的好方法。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:35:44 | 显示全部楼层
谢谢伙计
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:41:08 | 显示全部楼层
所以,你的地图车。。。(列表l)等同于:
  1. (mapcar (function (lambda (x) (/ x l)))
  2.         (apply (function mapcar)
  3.                (cons
  4.                  (function +)
  5.                  mLst
  6.                )
  7.         )
  8. )

 
这段代码就是剪切光华。我印象深刻。
  1.                  (apply (function mapcar)
  2.                        (cons
  3.                          (function +)
  4.                          mLst
  5.                        )
  6.                 )

我也做过类似的事情,但从未将mapcar应用到其中。A+
 
我想提一个建议(非常轻微)。我会浮动我的列表长度。
只是为了避免将实数除以整数。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:42:58 | 显示全部楼层
 
没错,我只是觉得我写的方式看起来更整洁
 
 
谢谢Alan,它只适合少数情况,我记得在这里也使用了这个结构。
 
 
 
很好的捕捉-我不会想到这一点-虽然我认为vlax曲线*返回的点是双倍的,但在执行除法时,它可能会稍微提高性能,避免数据类型转换(“类型提升”,我相信-或者至少在C++中)。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:47:25 | 显示全部楼层
只是确认一下。 
我以前也做过同样的事情。我只是在浏览你的代码时才注意到/想到它。
你还在学习C++吗?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:51:09 | 显示全部楼层
 
仅控制台程序-习惯循环/条件/指针等。。我还没有考虑过以任何方式将其应用于AutoCAD,但我想说的是,我非常了解基本知识。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-6 11:53:41 | 显示全部楼层
 
有趣的
你用什么作为知识库(书等)?
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 11:55:20 | 显示全部楼层
 
主要是一本书(由Herbert Schildt撰写),以及一些在线标题参考——但进展缓慢,因为我有点偏执于把我的系统搞砸,所以只有在我知道它完全正确时(无论如何,在处理数组/指针时)才会测试一些东西。。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-7-3 09:52 , Processed in 0.835880 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表