灵感来源于这条线索:
http://www.cadtutor.net/forum/showthread.php?75821-简单的lisp如何删除不必要的步骤单击
试图用3个已知点(形成)一条弧
P1和p2是终点
p3始终位于夹角内的弧上。角度50和51的顺序不对
- [b][color=BLACK]([/color][/b]defun mid_point [b][color=FUCHSIA]([/color][/b]s e[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]mapcar '[b][color=NAVY]([/color][/b]lambda [b][color=MAROON]([/color][/b]a b[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]* [b][color=GREEN]([/color][/b]+ a b[b][color=GREEN])[/color][/b] 0.5[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] s e[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
- [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq p1 [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nArrow Point: "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq p2 [b][color=NAVY]([/color][/b]getpoint p1 [color=#2f4f4f]"\nText CENter Point: "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]grdraw p1 p2 4 3[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq p6 [b][color=NAVY]([/color][/b]mid_point p1 p2[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq p3 [b][color=NAVY]([/color][/b]getpoint p6 [color=#2f4f4f]"\nARC Direction Point: "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq p4 [b][color=NAVY]([/color][/b]mid_point p1 p3[b][color=NAVY])[/color][/b]
- p5 [b][color=NAVY]([/color][/b]mid_point p2 p3[b][color=NAVY])[/color][/b]
- ce [b][color=NAVY]([/color][/b]inters p4 [b][color=MAROON]([/color][/b]polar p4 [b][color=GREEN]([/color][/b]+ [b][color=BLUE]([/color][/b]angle p1 p3[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] 1[b][color=MAROON])[/color][/b]
- p5 [b][color=MAROON]([/color][/b]polar p5 [b][color=GREEN]([/color][/b]+ [b][color=BLUE]([/color][/b]angle p2 p3[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] 1[b][color=MAROON])[/color][/b] nil[b][color=NAVY])[/color][/b]
- ra [b][color=NAVY]([/color][/b]distance ce p1[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]grdraw ce p1 1 3[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]grdraw ce p2 2 3[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]grdraw ce p3 3 3[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]
- (entmake (list (cons 0 "ARC")
- (cons 10 ce)
- (cons 40 ra)
- (cons 50 (angle ce p1))
- (cons 51 (angle ce p2))
- ))
从命令行可以很简单
- (command "_.ARC" "_non" p1 "_non" p3 "_non" p2)
有什么建议吗?大卫 |