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)
) 你好
你的代码的作用是什么,它包含许多不同的返回值,但什么也没有实现。
我无意冒犯你,但有几次你发布的代码给我留下了这样的印象:你在把它称为新的LISP时编写了它。除了想要改进代码之外,您很少提及代码本身,所以我决定对此进行一些研究。如果这实际上是您的新lisp,我建议您对此非常清楚。如果这不是你的代码,请确保你有发布它的权限。下面是另一个网站上的相同代码,但它说这段代码是1991年1月在Cadence杂志上发布的。Lisp程序被称为INTCLEAN。lsp,看起来你把它改成了IC。我假设是lsp。
http://www.hispacad.com/foro/viewtopic.php?p=65769&sid=e55ea029bdd66a2f861067a6e48a4d4b 哇!
试一试这些怎么样:
[列表]
[*]vla getboundingbox
[*]vlax for,如果不是foreach
[*]vlax曲线getstartpoint
[*]vlax曲线getendpoint
[/列表] 另外,在第一篇帖子中描述一下它试图做什么也很好,只是lisp名称没有任何意义,如果它对你有用,为什么要征求意见!
更确切地说,询问如何改进可能会对例程有益的缺失函数,或如何减少选择等,例如Renderman,他至少有建议的选项。
页:
[1]