乐筑天下

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

[编程交流] chk我的新lisp和建议h

[复制链接]

18

主题

58

帖子

41

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
91
发表于 2022-7-6 10:31:18 | 显示全部楼层 |阅读模式
尊敬的各位
autolisp&如何改进该lisp的建议
thx寻求帮助
  1. (defun c:IC (/       intlist     ptemp sset  set0     set1  selset
  2.         e       lay     lay0  i     k       l     n     y     z
  3.         p1       p2     p3    p4    p5       p6     int1  int2
  4.        )
  5. (setvar "CMDECHO" 0)
  6. (setq    sset (ssget "C"
  7.            (setq p (getpoint "First pt: "))
  8.            (getcorner p "Other pt: ")
  9.         )
  10. )
  11. (setq    n    (sslength sset)
  12.    i    1
  13.    lay0 (assoc 8 (entget (ssname sset 0)))
  14.    set0 (ssadd (ssname sset 0))
  15.    set1 (ssadd)
  16. )
  17. (repeat (- n 1)
  18.    (setq lay (assoc 8 (entget (setq e (ssname sset i)))))
  19.    (if    (equal lay lay0)
  20.      (ssadd e set0)
  21.      (ssadd e set1)
  22.    )
  23.    (setq i (1+ i))
  24. )
  25. (if (> (sslength set0) (sslength set1))
  26.    (setq selset set0)
  27.    (setq selset set1)
  28. )
  29. (setq    n (sslength selset)
  30.    i 0
  31. )
  32. (repeat (- n 1)
  33.    (setq k (1+ i))
  34.    (while (< k n)
  35.      (if (/= (inters (cdr (assoc 10 (entget (ssname selset i))))
  36.              (cdr (assoc 11 (entget (ssname selset i))))
  37.              (cdr (assoc 10 (entget (ssname selset k))))
  38.              (cdr (assoc 11 (entget (ssname selset k))))
  39.          )
  40.          nil
  41.      )
  42.    (setq
  43.      intlist (append intlist (list (strcat (itoa i) (itoa k))))
  44.    )
  45.      )
  46.      (setq k (1+ k))
  47.    )
  48.    (setq i (1+ i))
  49. )
  50. (setq    n (length intlist)
  51.    i 0
  52. )
  53. (repeat (- n 1)
  54.    (setq k (1+ i))
  55.    (while (< k n)
  56.      (cond
  57.    ((= (substr (nth i intlist) 1 1)
  58.        (substr (nth k intlist) 1 1)
  59.     )
  60.     (setq l (atoi (substr (nth i intlist) 1 1)))
  61.    )
  62.    ((= (substr (nth i intlist) 2 1)
  63.        (substr (nth k intlist) 1 1)
  64.     )
  65.     (setq l (atoi (substr (nth i intlist) 2 1)))
  66.    )
  67.    ((= (substr (nth i intlist) 1 1)
  68.        (substr (nth k intlist) 2 1)
  69.     )
  70.     (setq l (atoi (substr (nth k intlist) 1 1)))
  71.    )
  72.    ((= (substr (nth i intlist) 2 1)
  73.        (substr (nth k intlist) 2 1)
  74.     )
  75.     (setq l (atoi (substr (nth k intlist) 2 1)))
  76.    )
  77.      )
  78.      (setq y nil
  79.        z nil
  80.      )
  81.      (if (/= l nil)
  82.    (progn
  83.      (setq    ptemp (append (list (nth i intlist))
  84.                  (list (nth k
  85.                     intlist
  86.                    )
  87.                  )
  88.              )
  89.      )
  90.      (foreach x ptemp
  91.        (cond
  92.          ((= (atoi (substr x 1 1)) l)
  93.           (setq y (atoi
  94.             (substr
  95.               x
  96.               2
  97.             )
  98.               )
  99.           )
  100.          )
  101.          ((= (atoi (substr x 2)) l)
  102.           (setq y (atoi
  103.             (substr
  104.               x
  105.               1
  106.               1
  107.             )
  108.               )
  109.           )
  110.          )
  111.        )
  112.        (if    (and (/= y nil)
  113.             (= z nil)
  114.        )
  115.          (setq z y
  116.            y nil
  117.          )
  118.        )
  119.      )
  120.    )
  121.      )
  122.      (setq l nil
  123.        k (1+ k)
  124.      )
  125.    )
  126.    (setq i (1+ i))
  127. )
  128. (SETVAR "CMDECHO" 1)
  129. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:00:09 | 显示全部楼层
你好
 
你的代码的作用是什么,它包含许多不同的返回值,但什么也没有实现。
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 11:07:50 | 显示全部楼层
 
我无意冒犯你,但有几次你发布的代码给我留下了这样的印象:你在把它称为新的LISP时编写了它。除了想要改进代码之外,您很少提及代码本身,所以我决定对此进行一些研究。如果这实际上是您的新lisp,我建议您对此非常清楚。如果这不是你的代码,请确保你有发布它的权限。下面是另一个网站上的相同代码,但它说这段代码是1991年1月在Cadence杂志上发布的。Lisp程序被称为INTCLEAN。lsp,看起来你把它改成了IC。我假设是lsp。
 
http://www.hispacad.com/foro/viewtopic.php?p=65769&sid=e55ea029bdd66a2f861067a6e48a4d4b
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 11:25:25 | 显示全部楼层
哇!
 
试一试这些怎么样:
[列表]
  • vla getboundingbox
  • vlax for,如果不是foreach
  • vlax曲线getstartpoint
  • vlax曲线getendpoint
    [/列表]
  • 回复

    使用道具 举报

    106

    主题

    1万

    帖子

    101

    银币

    顶梁支柱

    Rank: 50Rank: 50

    铜币
    1299
    发表于 2022-7-6 11:35:23 | 显示全部楼层
    另外,在第一篇帖子中描述一下它试图做什么也很好,只是lisp名称没有任何意义,如果它对你有用,为什么要征求意见!
     
    更确切地说,询问如何改进可能会对例程有益的缺失函数,或如何减少选择等,例如Renderman,他至少有建议的选项。
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-6 17:49 , Processed in 0.452967 second(s), 73 queries .

    © 2020-2025 乐筑天下

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