明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 931|回复: 6

[讨论] 代码可阅读性

[复制链接]
发表于 2024-8-13 21:51:23 | 显示全部楼层 |阅读模式
Lee Mac 的代码真的是。。。难
对照代码都没法消化,比如随便摘一段Lee Mac的函数中的代码。

  1. (setq
  2.         ent (entget ent)
  3.         lst (_vertices ent)
  4.         lst (apply 'mapcar
  5.                 (cons
  6.                     (function
  7.                         (lambda ( a b )
  8.                             (
  9.                                 (lambda ( c )
  10.                                     (mapcar
  11.                                         (function
  12.                                             (lambda ( d )
  13.                                                 (mapcar
  14.                                                     (function
  15.                                                         (lambda ( e f )
  16.                                                             (mapcar 'd (car e)
  17.                                                                 (mapcar
  18.                                                                     (function
  19.                                                                         (lambda ( g ) (* g (/ f 2.0)))
  20.                                                                     )
  21.                                                                     c
  22.                                                                 )
  23.                                                             )
  24.                                                         )
  25.                                                     )
  26.                                                     (list a b) (cdr a)
  27.                                                 )
  28.                                             )
  29.                                         )
  30.                                         (list + -)
  31.                                     )
  32.                                 )
  33.                                 (
  34.                                     (lambda ( v / n )
  35.                                         (setq v (list (- (cadr v)) (car v) 0.0)
  36.                                               n (distance '(0. 0.) v)
  37.                                         )
  38.                                         (if (equal 0.0 n 1e-14)
  39.                                             (list  0.0 0.0 0.0)
  40.                                             (mapcar '/ v (list n n n))
  41.                                         )
  42.                                     )
  43.                                     (mapcar '- (car a) (car b))
  44.                                 )
  45.                             )
  46.                         )
  47.                     )
  48.                     (if (= 1 (logand 1 (cdr (assoc 70 ent))))
  49.                         (list
  50.                             (cons (last lst) lst)
  51.                             (append lst (list (car lst)))
  52.                         )
  53.                         (list lst (cdr lst))
  54.                     )
  55.                 )
  56.             )
  57.         lst (
  58.                 (lambda ( a )
  59.                     (if (zerop (logand 1 (cdr (assoc 70 ent))))
  60.                         (append
  61.                             (list (mapcar 'car  (car  lst)))
  62.                             a
  63.                             (list (mapcar 'cadr (last lst)))
  64.                         )
  65.                         a
  66.                     )
  67.                 )
  68.                 (apply 'append
  69.                     (mapcar
  70.                         (function
  71.                             (lambda ( a b / c )
  72.                                 (if
  73.                                     (setq c
  74.                                         (apply 'append
  75.                                             (mapcar
  76.                                                 (function
  77.                                                     (lambda ( d e / f )
  78.                                                         (if (setq f (inters (car d) (cadr d) (car e) (cadr e) nil))
  79.                                                             (list f)
  80.                                                         )
  81.                                                     )
  82.                                                 )
  83.                                                 a b
  84.                                             )
  85.                                         )
  86.                                     )
  87.                                     (list c)
  88.                                 )
  89.                             )
  90.                         )
  91.                         lst (cdr lst)
  92.                     )
  93.                 )
  94.             )
  95.     )




发表于 2024-8-13 21:57:57 | 显示全部楼层
LM有自己的风格,确实比较晦涩,但别人的轮子,装你车上,能正常跑就好。
发表于 2024-8-13 22:15:04 | 显示全部楼层
Lee mac主打一个数学好,真的很难。
发表于 2024-8-13 22:44:12 | 显示全部楼层
lambda与mapcar函数好难学

点评

aws
什么时候搞懂了这两个,lisp才算入门  发表于 2024-8-14 08:59
发表于 2024-8-14 11:13:56 | 显示全部楼层
qazxswk 发表于 2024-8-13 22:44
lambda与mapcar函数好难学

看似两个,其实就一个mapcar,什么?你没写过defun?当我没说
发表于 2024-8-14 11:59:47 | 显示全部楼层
又不需要重写其功能,就拿他的函数当成普通lisp函数,会用就行了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-23 05:57 , Processed in 0.181667 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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