Quick’n dirty,使用多段线顶点的平均值作为圆心:
- ([color=BLUE]defun[/color] c:p2c ( [color=BLUE]/[/color] _massoc _pointaverage e i r s )
- ([color=BLUE]setq[/color] r 0.1) [color=GREEN];; Circle Radius[/color]
- ([color=BLUE]defun[/color] _massoc ( k l [color=BLUE]/[/color] p )
- ([color=BLUE]if[/color] ([color=BLUE]setq[/color] p ([color=BLUE]assoc[/color] k l))
- ([color=BLUE]cons[/color] ([color=BLUE]cdr[/color] p) (_massoc k ([color=BLUE]cdr[/color] ([color=BLUE]member[/color] p l))))
- )
- )
- ([color=BLUE]defun[/color] _pointaverage ( l [color=BLUE]/[/color] x )
- ([color=BLUE]setq[/color] x ([color=BLUE]length[/color] l))
- ([color=BLUE]mapcar[/color] '[color=BLUE]/[/color] ([color=BLUE]apply[/color] '[color=BLUE]mapcar[/color] ([color=BLUE]cons[/color] '[color=BLUE]+[/color] l)) ([color=BLUE]list[/color] x x))
- )
- ([color=BLUE]if[/color] ([color=BLUE]setq[/color] s ([color=BLUE]ssget[/color] [color=MAROON]"_:L"[/color] '((0 . [color=MAROON]"LWPOLYLINE"[/color]) (-4 . [color=MAROON]"&="[/color]) (70 . 1))))
- ([color=BLUE]repeat[/color] ([color=BLUE]setq[/color] i ([color=BLUE]sslength[/color] s))
- ([color=BLUE]setq[/color] e ([color=BLUE]entget[/color] ([color=BLUE]ssname[/color] s ([color=BLUE]setq[/color] i ([color=BLUE]1-[/color] i)))))
- ([color=BLUE]if[/color] ([color=BLUE]entmake[/color]
- ([color=BLUE]list[/color]
- '(0 . [color=MAROON]"CIRCLE"[/color])
- ([color=BLUE]assoc[/color] 008 e)
- ([color=BLUE]cons[/color] 010 (_pointaverage (_massoc 10 e)))
- ([color=BLUE]cons[/color] 040 r)
- ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 006 e)) ('(006 . [color=MAROON]"BYLAYER"[/color])))
- ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 039 e)) ('(039 . 0.0)))
- ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 062 e)) ('(062 . 256)))
- ([color=BLUE]cond[/color] (([color=BLUE]assoc[/color] 370 e)) ('(370 . -1)))
- ([color=BLUE]assoc[/color] 210 e)
- ([color=BLUE]assoc[/color] 410 e)
- )
- )
- ([color=BLUE]entdel[/color] ([color=BLUE]cdr[/color] ([color=BLUE]assoc[/color] -1 e)))
- )
- )
- )
- ([color=BLUE]princ[/color])
- )
假设闭合多段线。 |