我在代码方面取得了一些进展:
- [b][color=BLACK]([/color][/b]defun c:test [b][color=FUCHSIA]([/color][/b] / ent1 ent2 obj1 obj2 int-lst cnt pt pt-lst [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]vl-load-com[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setvar 'errno 0[b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]while
- [b][color=NAVY]([/color][/b]not
- [b][color=MAROON]([/color][/b]and
- [b][color=GREEN]([/color][/b]setq ent1 [b][color=BLUE]([/color][/b]car [b][color=RED]([/color][/b]entsel [color=#2f4f4f]"\nPick first curve: "[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]setq obj1 [b][color=BLUE]([/color][/b]vlax-ename->vla-object ent1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]= [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b] 7[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]null ent1[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\nYou missed, try again!"[/color][b][color=MAROON])[/color][/b] [b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]while
- [b][color=NAVY]([/color][/b]not
- [b][color=MAROON]([/color][/b]and
- [b][color=GREEN]([/color][/b]setq ent2 [b][color=BLUE]([/color][/b]car [b][color=RED]([/color][/b]entsel [color=#2f4f4f]"\nPick second curve: "[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]setq obj2 [b][color=BLUE]([/color][/b]vlax-ename->vla-object ent2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]not [b][color=BLUE]([/color][/b]eq ent1 ent2[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]or [b][color=GREEN]([/color][/b]= [b][color=BLUE]([/color][/b]getvar 'errno[b][color=BLUE])[/color][/b] 7[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]null ent2[b][color=GREEN])[/color][/b] [b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\nYou missed, try again!"[/color][b][color=MAROON])[/color][/b] [b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq int-lst [b][color=NAVY]([/color][/b]vlax-safearray->list [b][color=MAROON]([/color][/b]vlax-variant-value [b][color=GREEN]([/color][/b]vla-IntersectWith obj1 obj2 acExtendNone[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq cnt [b][color=NAVY]([/color][/b]- 1[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]foreach x int-lst
- [b][color=NAVY]([/color][/b]if
- [b][color=MAROON]([/color][/b]and
- [b][color=GREEN]([/color][/b]setq pt [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]nth [b][color=PURPLE]([/color][/b]setq cnt [b][color=TEAL]([/color][/b]+ cnt 1[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] int-lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]nth [b][color=PURPLE]([/color][/b]setq cnt [b][color=TEAL]([/color][/b]+ cnt 1[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] int-lst[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]nth [b][color=PURPLE]([/color][/b]setq cnt [b][color=TEAL]([/color][/b]+ cnt 1[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] int-lst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
- [b][color=GREEN]([/color][/b]car pt[b][color=GREEN])[/color][/b] [color=#8b4513]; X check[/color]
- [b][color=GREEN]([/color][/b]cadr pt[b][color=GREEN])[/color][/b] [color=#8b4513]; Y check[/color]
- [b][color=GREEN]([/color][/b]caddr pt[b][color=GREEN])[/color][/b] [color=#8b4513]; Z check[/color]
- [b][color=MAROON])[/color][/b]
- [b][color=MAROON]([/color][/b]setq pt-lst [b][color=GREEN]([/color][/b]cons pt pt-lst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
- [b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]setq pt-lst [b][color=NAVY]([/color][/b]reverse pt-lst[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]progn
- [b][color=NAVY]([/color][/b]setvar 'PDMODE 35[b][color=NAVY])[/color][/b]
- [b][color=NAVY]([/color][/b]foreach x pt-lst
- [b][color=MAROON]([/color][/b]if x
- [b][color=GREEN]([/color][/b]progn
- [b][color=BLUE]([/color][/b]entmakex [b][color=RED]([/color][/b]list [b][color=PURPLE]([/color][/b]cons 0 [color=#2f4f4f]"POINT"[/color][b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cons 10 x[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]cons 62 1[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
- [b][color=BLUE]([/color][/b]princ [color=#2f4f4f]"\n"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]print x[b][color=BLUE])[/color][/b]
- [b][color=GREEN])[/color][/b]
- [b][color=MAROON])[/color][/b]
-
- [b][color=NAVY])[/color][/b]
- [b][color=FUCHSIA])[/color][/b]
- [b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
- [b][color=BLACK])[/color][/b][color=#8b4513];defun [/color]
我不确定我的方法是否草率。
我要考虑的下一步是使用选择集:
-SSGET(cons 0“圆、弧、*线*)
-通过选择集迭代并对每个实体使用置换,直到找到所有交点 |