另一种尝试,仅使用一个vl排序表达式:
- ([color=BLUE]defun[/color] c:fixpoints2 ( [color=BLUE]/[/color] e i l s )
- ([color=BLUE]if[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] '((0 . [color=MAROON]"POINT"[/color]))))
- ([color=BLUE]progn[/color]
- ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
- ([color=BLUE]setq[/color] e ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i)))
- l ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] 10 ([color=BLUE]entget[/color] e))) e) l)
- )
- )
- ([color=BLUE]mapcar[/color]
- ([color=BLUE]function[/color]
- ([color=BLUE]lambda[/color] ( a b )
- ([color=BLUE]if[/color] ([color=BLUE]equal[/color] ([color=BLUE]list[/color] ([color=BLUE]caar[/color] a) ([color=BLUE]cadar[/color] a)) ([color=BLUE]list[/color] ([color=BLUE]caar[/color] b) ([color=BLUE]cadar[/color] b)) 1e-
- ([color=BLUE]entmod[/color] ([color=BLUE]cons[/color] ([color=BLUE]cons[/color] -1 ([color=BLUE]cdr[/color] a)) '((8 . [color=MAROON]"Lower Points"[/color]))))
- )
- )
- )
- ([color=BLUE]setq[/color] l
- ([color=BLUE]vl-sort[/color] l
- ([color=BLUE]function[/color]
- ([color=BLUE]lambda[/color] ( a b )
- ([color=BLUE]if[/color] ([color=BLUE]equal[/color] ([color=BLUE]caar[/color] a) ([color=BLUE]caar[/color] b) 1e-
- ([color=BLUE]if[/color] ([color=BLUE]equal[/color] ([color=BLUE]cadar[/color] a) ([color=BLUE]cadar[/color] b) 1e-
- ([color=BLUE]<[/color] ([color=BLUE]caddar[/color] a) ([color=BLUE]caddar[/color] b))
- ([color=BLUE]<[/color] ([color=BLUE]cadar[/color] a) ([color=BLUE]cadar[/color] b))
- )
- ([color=BLUE]<[/color] ([color=BLUE]caar[/color] a) ([color=BLUE]caar[/color] b))
- )
- )
- )
- )
- )
- ([color=BLUE]cdr[/color] l)
- )
- )
- )
- ([color=BLUE]princ[/color])
- )
Lisp方法的一个优势是,如果两个点的X、Y和Z完全相同
它被困住了。
ymg公司 |