autolisp 发表于 2022-7-6 10:31:18

chk我的新lisp和建议h

尊敬的各位
autolisp&如何改进该lisp的建议
thx寻求帮助

(defun c:IC (/       intlist   ptemp ssetset0   set1selset
      e       lay   lay0i   k       l   n   y   z
      p1       p2   p3    p4    p5       p6   int1int2
       )
(setvar "CMDECHO" 0)
(setq    sset (ssget "C"
         (setq p (getpoint "First pt: "))
         (getcorner p "Other pt: ")
      )
)
(setq    n    (sslength sset)
   i    1
   lay0 (assoc 8 (entget (ssname sset 0)))
   set0 (ssadd (ssname sset 0))
   set1 (ssadd)
)
(repeat (- n 1)
   (setq lay (assoc 8 (entget (setq e (ssname sset i)))))
   (if    (equal lay lay0)
   (ssadd e set0)
   (ssadd e set1)
   )
   (setq i (1+ i))
)
(if (> (sslength set0) (sslength set1))
   (setq selset set0)
   (setq selset set1)
)
(setq    n (sslength selset)
   i 0
)
(repeat (- n 1)
   (setq k (1+ i))
   (while (< k n)
   (if (/= (inters (cdr (assoc 10 (entget (ssname selset i))))
             (cdr (assoc 11 (entget (ssname selset i))))
             (cdr (assoc 10 (entget (ssname selset k))))
             (cdr (assoc 11 (entget (ssname selset k))))
         )
         nil
   )
   (setq
   intlist (append intlist (list (strcat (itoa i) (itoa k))))
   )
   )
   (setq k (1+ k))
   )
   (setq i (1+ i))
)
(setq    n (length intlist)
   i 0
)
(repeat (- n 1)
   (setq k (1+ i))
   (while (< k n)
   (cond
   ((= (substr (nth i intlist) 1 1)
       (substr (nth k intlist) 1 1)
    )
    (setq l (atoi (substr (nth i intlist) 1 1)))
   )
   ((= (substr (nth i intlist) 2 1)
       (substr (nth k intlist) 1 1)
    )
    (setq l (atoi (substr (nth i intlist) 2 1)))
   )
   ((= (substr (nth i intlist) 1 1)
       (substr (nth k intlist) 2 1)
    )
    (setq l (atoi (substr (nth k intlist) 1 1)))
   )
   ((= (substr (nth i intlist) 2 1)
       (substr (nth k intlist) 2 1)
    )
    (setq l (atoi (substr (nth k intlist) 2 1)))
   )
   )
   (setq y nil
       z nil
   )
   (if (/= l nil)
   (progn
   (setq    ptemp (append (list (nth i intlist))
               (list (nth k
                  intlist
                   )
               )
             )
   )
   (foreach x ptemp
       (cond
         ((= (atoi (substr x 1 1)) l)
          (setq y (atoi
            (substr
            x
            2
            )
            )
          )
         )
         ((= (atoi (substr x 2)) l)
          (setq y (atoi
            (substr
            x
            1
            1
            )
            )
          )
         )
       )
       (if    (and (/= y nil)
            (= z nil)
       )
         (setq z y
         y nil
         )
       )
   )


   )
   )
   (setq l nil
       k (1+ k)
   )
   )
   (setq i (1+ i))
)
(SETVAR "CMDECHO" 1)
)

Tharwat 发表于 2022-7-6 11:00:09

你好
 
你的代码的作用是什么,它包含许多不同的返回值,但什么也没有实现。

The Buzzard 发表于 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

BlackBox 发表于 2022-7-6 11:25:25

哇!
 
试一试这些怎么样:
[列表]
[*]vla getboundingbox
[*]vlax for,如果不是foreach
[*]vlax曲线getstartpoint
[*]vlax曲线getendpoint
[/列表]

BIGAL 发表于 2022-7-6 11:35:23

另外,在第一篇帖子中描述一下它试图做什么也很好,只是lisp名称没有任何意义,如果它对你有用,为什么要征求意见!
 
更确切地说,询问如何改进可能会对例程有益的缺失函数,或如何减少选择等,例如Renderman,他至少有建议的选项。
页: [1]
查看完整版本: chk我的新lisp和建议h