marko_ribar Posted January 8, 2015 Posted January 8, 2015 (edited) The lisp is finally updated and tested and ready for using in all situations where current UCS is parallel to WCS... [b][color=#FF0000]([/color][/b][color=BLUE]defun[/color] c:aplin [b][color=#80FF00]([/color][/b] [color=BLUE]/[/color] *error* *adoc* pt opt ptt el esel ent pent ang real difang nang ptw [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]defun[/color] *error* [b][color=#00FFFF]([/color][/b] msg [color=BLUE]/[/color] pea ss [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] pea [b][color=#0080FF]([/color][/b][color=BLUE]getvar[/color] 'peditaccept[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setvar[/color] 'peditaccept 1[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]if[/color] el [b][color=#0080FF]([/color][/b][color=BLUE]progn[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ss [b][color=#FF0000]([/color][/b][color=BLUE]ssadd[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]foreach[/color] l el [b][color=#FF0000]([/color][/b][color=BLUE]ssadd[/color] l ss[b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.PEDIT"[/color] [color=BROWN]"_M"[/color] ss [color=BROWN]""[/color] [color=BROWN]"_J"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]>[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'cmdactive[b][color=#80FF00])[/color][/b] 0[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]command[/color] [color=BROWN]""[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setvar[/color] 'peditaccept pea[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]if[/color] msg [b][color=#0080FF]([/color][/b][color=BLUE]prompt[/color] msg[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]princ[/color][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-load-com[/color][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] *adoc* [b][color=#00FFFF]([/color][/b][color=BLUE]vla-get-activedocument[/color] [b][color=#0080FF]([/color][/b][color=BLUE]vlax-get-acad-object[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] pt [b][color=#00FFFF]([/color][/b][color=BLUE]getpoint[/color] [color=BROWN]"\nSpecify first point : "[/color][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]while[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]and[/color] pt [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] pt opt[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]not[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]initget[/color] 128[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] ptt [b][color=#FF00FF]([/color][/b][color=BLUE]getpoint[/color] pt [color=BROWN]"\nSpecify next point or - F8 for orthomode [Angle line/Undo] : "[/color][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] ptt opt[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]cond[/color] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] ptt[b][color=#FF0000])[/color][/b] '[color=BLUE]list[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-startundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] pt [color=BROWN]"_non"[/color] ptt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] el [b][color=#FF0000]([/color][/b][color=BLUE]cons[/color] [b][color=#80FF00]([/color][/b][color=BLUE]entlast[/color][b][color=#80FF00])[/color][/b] el[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt ptt[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-endundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]or[/color] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"a*"[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"A*"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-startundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]or[/color] [b][color=#80FF00]([/color][/b][color=BLUE]not[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] esel [b][color=#0080FF]([/color][/b][color=BLUE]entsel[/color] [color=BROWN]"\nPick target curve to obtain its angle"[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-catch-all-error-p[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vlax-curve-getstartparam[/color] [b][color=#0080FF]([/color][/b][color=BLUE]list[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]car[/color] esel[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nMissed or picked enitiy doesn't belong to curves... Try picking target curve again..."[/color][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ent [b][color=#FF0000]([/color][/b][color=BLUE]car[/color] esel[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pent [b][color=#FF0000]([/color][/b][color=BLUE]vlax-curve-getclosestpointto[/color] ent [b][color=#80FF00]([/color][/b][color=BLUE]trans[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]cadr[/color] esel[b][color=#00FFFF])[/color][/b] 1 0[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ang [b][color=#FF0000]([/color][/b][color=BLUE]angle[/color] '[b][color=#80FF00]([/color][/b]0.0 0.0[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vlax-curve-getfirstderiv[/color] ent [b][color=#00FFFF]([/color][/b][color=BLUE]vlax-curve-getparamatpoint[/color] ent pent[b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]initget[/color] 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] real [b][color=#FF0000]([/color][/b][color=BLUE]getreal[/color] [color=BROWN]"\nSpecify angle to picked curve in decimal degrees : "[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] difang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] real [color=BROWN]"degree"[/color] [color=BROWN]"radian"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] nang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] [b][color=#80FF00]([/color][/b][color=BLUE]+[/color] ang difang[b][color=#80FF00])[/color][/b] [color=BROWN]"radian"[/color] [color=BROWN]"degree"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ptw [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] pt 1 0[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_W"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_Z"[/color] nang[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] ptw 0 1[b][color=#FF0000])[/color][/b] [color=BROWN]"\\"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]>[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'cmdactive[b][color=#80FF00])[/color][/b] 0[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]command[/color] [color=BROWN]""[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] el [b][color=#FF0000]([/color][/b][color=BLUE]cons[/color] [b][color=#80FF00]([/color][/b][color=BLUE]entlast[/color][b][color=#80FF00])[/color][/b] el[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ptw [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'lastpoint[b][color=#80FF00])[/color][/b] 1 0[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] ptw 0 1[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-endundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]or[/color] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"u*"[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"U*"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]length[/color] opt[b][color=#80FF00])[/color][/b] 2[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] pt [color=BLUE]nil[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]progn[/color] [b][color=#80FF00]([/color][/b][color=BLUE]if[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]equal[/color] [b][color=#0080FF]([/color][/b][color=BLUE]cadr[/color] opt[b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]cadddr[/color] opt[b][color=#0080FF])[/color][/b] 1e-8[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#0080FF]([/color][/b][color=BLUE]cddddr[/color] opt[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#0080FF]([/color][/b][color=BLUE]cddr[/color] opt[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]if[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]null[/color] opt[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] pt [color=BLUE]nil[/color][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]progn[/color] [b][color=#0080FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UNDO"[/color] [color=BROWN]""[/color][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] el [b][color=#FF00FF]([/color][/b][color=BLUE]cdr[/color] el[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] pt [b][color=#FF00FF]([/color][/b][color=BLUE]cadr[/color] opt[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] ptt[b][color=#FF0000])[/color][/b] 'str[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nInvalid option keyword..."[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#FF0000]([/color][/b][color=BLUE]cddr[/color] opt[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]*error* [color=BLUE]nil[/color][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] Regards, and Happy New Year and to all, cadfan... M.R. Edited January 11, 2015 by marko_ribar code revised and renamed to better suit to what routine do Quote
AIberto Posted January 8, 2015 Posted January 8, 2015 The lisp is finally updated and tested and ready for using in all situations where current UCS is parallel to WCS... M.R. Very nice ! marko. you are always ready to help others, Quote
cadfan Posted January 8, 2015 Author Posted January 8, 2015 The lisp is finally updated and tested and ready for using in all situations where current UCS is parallel to WCS... [b][color=#FF0000]([/color][/b][color=BLUE]defun[/color] c:alin [b][color=#80FF00]([/color][/b] [color=BLUE]/[/color] *adoc* pea pt opt ptt el esel ent pent ang real difang nang ptw ss [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-load-com[/color][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] *adoc* [b][color=#00FFFF]([/color][/b][color=BLUE]vla-get-activedocument[/color] [b][color=#0080FF]([/color][/b][color=BLUE]vlax-get-acad-object[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] pt [b][color=#00FFFF]([/color][/b][color=BLUE]getpoint[/color] [color=BROWN]"\nSpecify first point : "[/color][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]while[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]and[/color] pt [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] pt opt[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]not[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]initget[/color] 128[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] ptt [b][color=#FF00FF]([/color][/b][color=BLUE]getpoint[/color] pt [color=BROWN]"\nSpecify next point or - F8 for orthomode [Angle line/Undo] : "[/color][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#FF00FF]([/color][/b][color=BLUE]cons[/color] ptt opt[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]cond[/color] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] ptt[b][color=#FF0000])[/color][/b] '[color=BLUE]list[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-startundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] pt [color=BROWN]"_non"[/color] ptt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] el [b][color=#FF0000]([/color][/b][color=BLUE]cons[/color] [b][color=#80FF00]([/color][/b][color=BLUE]entlast[/color][b][color=#80FF00])[/color][/b] el[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt ptt[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-endundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]or[/color] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"a*"[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"A*"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-startundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]or[/color] [b][color=#80FF00]([/color][/b][color=BLUE]not[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] esel [b][color=#0080FF]([/color][/b][color=BLUE]entsel[/color] [color=BROWN]"\nPick target curve to obtain its angle"[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-catch-all-error-p[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vlax-curve-getstartparam[/color] [b][color=#0080FF]([/color][/b][color=BLUE]list[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]car[/color] [color=BLUE]esel[/color][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nMissed or picked enitiy doesn't belong to curves... Try picking target curve again..."[/color][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ent [b][color=#FF0000]([/color][/b][color=BLUE]car[/color] [color=BLUE]esel[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pent [b][color=#FF0000]([/color][/b][color=BLUE]vlax-curve-getclosestpointto[/color] ent [b][color=#80FF00]([/color][/b][color=BLUE]trans[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]cadr[/color] esel[b][color=#00FFFF])[/color][/b] 1 0[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ang [b][color=#FF0000]([/color][/b][color=BLUE]angle[/color] '[b][color=#80FF00]([/color][/b]0.0 0.0[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vlax-curve-getfirstderiv[/color] ent [b][color=#00FFFF]([/color][/b][color=BLUE]vlax-curve-getparamatpoint[/color] ent pent[b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]initget[/color] 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] real [b][color=#FF0000]([/color][/b][color=BLUE]getreal[/color] [color=BROWN]"\nSpecify angle to picked curve in decimal degrees : "[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] difang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] real [color=BROWN]"degree"[/color] [color=BROWN]"radian"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] nang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] [b][color=#80FF00]([/color][/b][color=BLUE]+[/color] ang difang[b][color=#80FF00])[/color][/b] [color=BROWN]"radian"[/color] [color=BROWN]"degree"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ptw [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] pt 1 0[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_W"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_Z"[/color] nang[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] ptw 0 1[b][color=#FF0000])[/color][/b] [color=BROWN]"\\"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]>[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'cmdactive[b][color=#80FF00])[/color][/b] 0[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]command[/color] [color=BROWN]""[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] el [b][color=#FF0000]([/color][/b][color=BLUE]cons[/color] [b][color=#80FF00]([/color][/b][color=BLUE]entlast[/color][b][color=#80FF00])[/color][/b] el[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ptw [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'lastpoint[b][color=#80FF00])[/color][/b] 1 0[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] ptw 0 1[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]vla-endundomark[/color] *adoc*[b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]or[/color] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"u*"[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"U*"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]length[/color] opt[b][color=#80FF00])[/color][/b] 2[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] pt [color=BLUE]nil[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]progn[/color] [b][color=#80FF00]([/color][/b][color=BLUE]if[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]equal[/color] [b][color=#0080FF]([/color][/b][color=BLUE]cadr[/color] opt[b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]cadddr[/color] opt[b][color=#0080FF])[/color][/b] 1e-8[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#0080FF]([/color][/b][color=BLUE]cddddr[/color] opt[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#0080FF]([/color][/b][color=BLUE]cddr[/color] opt[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]if[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]null[/color] opt[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] pt [color=BLUE]nil[/color][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]progn[/color] [b][color=#0080FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UNDO"[/color] [color=BROWN]""[/color][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] el [b][color=#FF00FF]([/color][/b][color=BLUE]cdr[/color] el[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] pt [b][color=#FF00FF]([/color][/b][color=BLUE]cadr[/color] opt[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] ptt[b][color=#FF0000])[/color][/b] 'str[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nInvalid option keyword..."[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] opt [b][color=#FF0000]([/color][/b][color=BLUE]cddr[/color] opt[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]if[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]not[/color] [b][color=#0080FF]([/color][/b][color=BLUE]null[/color] el[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]progn[/color] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] ss [b][color=#FF00FF]([/color][/b][color=BLUE]ssadd[/color][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]foreach[/color] l el [b][color=#FF00FF]([/color][/b][color=BLUE]ssadd[/color] l ss[b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setq[/color] pea [b][color=#FF00FF]([/color][/b][color=BLUE]getvar[/color] 'peditaccept[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setvar[/color] 'peditaccept 1[b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.PEDIT"[/color] [color=BROWN]"_M"[/color] ss [color=BROWN]""[/color] [color=BROWN]"_J"[/color][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]>[/color] [b][color=#FF0000]([/color][/b][color=BLUE]getvar[/color] 'cmdactive[b][color=#FF0000])[/color][/b] 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]setvar[/color] 'peditaccept pea[b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]princ[/color][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] Regards, and Happy New Year and to all, cadfan... M.R. wow ... you are great ! marko. Thank you . Quote
marko_ribar Posted January 11, 2015 Posted January 11, 2015 Hi again... I've renamed my previous routine to "APLIN.LSP" and I've created new "ALIN.LSP"... The names are better associated to what routines are doing... For new "ALIN.LSP" I leave to you to figure its usage... Me thinks that it's also very useful giving the fact that I passed school drawing lines with triangles and straight tracking ruler... [b][color=#FF0000]([/color][/b][color=BLUE]defun[/color] c:alin [b][color=#80FF00]([/color][/b] [color=BLUE]/[/color] *error* *adoc* pt ptt esel ent pent ang real difang nang [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]defun[/color] *error* [b][color=#00FFFF]([/color][/b] msg [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]vla-endundomark[/color] *adoc*[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]if[/color] msg [b][color=#0080FF]([/color][/b][color=BLUE]prompt[/color] msg[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]princ[/color][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-load-com[/color][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] *adoc* [b][color=#00FFFF]([/color][/b][color=BLUE]vla-get-activedocument[/color] [b][color=#0080FF]([/color][/b][color=BLUE]vlax-get-acad-object[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vla-startundomark[/color] *adoc*[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]while[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]and[/color] [b][color=#0080FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]not[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF0000]([/color][/b][color=BLUE]null[/color] pt[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] pt [b][color=#80FF00]([/color][/b][color=BLUE]getpoint[/color] [color=BROWN]"\nSpecify first point : "[/color][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]progn[/color] [b][color=#80FF00]([/color][/b][color=BLUE]initget[/color] 128[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] pt [b][color=#00FFFF]([/color][/b][color=BLUE]getpoint[/color] [color=BROWN]"\nSpecify first point or \"Undo\" : "[/color][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [color=BLUE]t[/color] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] pt[b][color=#FF0000])[/color][/b] '[color=BLUE]list[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]progn[/color] [b][color=#FF0000]([/color][/b][color=BLUE]initget[/color] 128[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] ptt [b][color=#80FF00]([/color][/b][color=BLUE]getpoint[/color] pt [color=BROWN]"\nSpecify next point or \"Angle line\" - F8 orthomode : "[/color][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [color=BLUE]t[/color] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]cond[/color] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]and[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] ptt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] pt [color=BROWN]"_non"[/color] ptt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]and[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]or[/color] [b][color=#80FF00]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"a*"[/color][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"A*"[/color][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]or[/color] [b][color=#80FF00]([/color][/b][color=BLUE]not[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] esel [b][color=#0080FF]([/color][/b][color=BLUE]entsel[/color] [color=BROWN]"\nPick target curve to obtain its angle"[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-catch-all-error-p[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vlax-curve-getstartparam[/color] [b][color=#0080FF]([/color][/b][color=BLUE]list[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]car[/color] esel[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nMissed or picked enitiy doesn't belong to curves... Try picking target curve again..."[/color][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ent [b][color=#FF0000]([/color][/b][color=BLUE]car[/color] esel[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pent [b][color=#FF0000]([/color][/b][color=BLUE]vlax-curve-getclosestpointto[/color] ent [b][color=#80FF00]([/color][/b][color=BLUE]trans[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]cadr[/color] esel[b][color=#00FFFF])[/color][/b] 1 0[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ang [b][color=#FF0000]([/color][/b][color=BLUE]angle[/color] '[b][color=#80FF00]([/color][/b]0.0 0.0[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vlax-curve-getfirstderiv[/color] ent [b][color=#00FFFF]([/color][/b][color=BLUE]vlax-curve-getparamatpoint[/color] ent pent[b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]initget[/color] 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] real [b][color=#FF0000]([/color][/b][color=BLUE]getreal[/color] [color=BROWN]"\nSpecify angle to picked curve in decimal degrees : "[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] difang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] real [color=BROWN]"degree"[/color] [color=BROWN]"radian"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] nang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] [b][color=#80FF00]([/color][/b][color=BLUE]+[/color] ang difang[b][color=#80FF00])[/color][/b] [color=BROWN]"radian"[/color] [color=BROWN]"degree"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ptw [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] pt 1 0[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_W"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_Z"[/color] nang[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] ptw 0 1[b][color=#FF0000])[/color][/b] [color=BROWN]"\\"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]>[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'cmdactive[b][color=#80FF00])[/color][/b] 0[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]command[/color] [color=BROWN]""[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]and[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] ptt[b][color=#80FF00])[/color][/b] 'str[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nInvalid option keyword..."[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]or[/color] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] pt [color=BROWN]"u*"[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] pt [color=BROWN]"U*"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]entdel[/color] [b][color=#FF0000]([/color][/b][color=BLUE]entlast[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [color=BLUE]nil[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] pt[b][color=#FF0000])[/color][/b] 'str[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nInvalid option keyword..."[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]*error* [color=BLUE]nil[/color][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] Regards, M.R. Quote
cadfan Posted January 11, 2015 Author Posted January 11, 2015 Hi again... I've renamed my previous routine to "APLIN.LSP" and I've created new "ALIN.LSP"... The names are better associated to what routines are doing... For new "ALIN.LSP" I leave to you to figure its usage... Me thinks that it's also very useful giving the fact that I passed school drawing lines with triangles and straight tracking ruler... [b][color=#FF0000]([/color][/b][color=BLUE]defun[/color] c:alin [b][color=#80FF00]([/color][/b] [color=BLUE]/[/color] *error* *adoc* pt ptt esel ent pent ang real difang nang [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]defun[/color] *error* [b][color=#00FFFF]([/color][/b] msg [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]vla-endundomark[/color] *adoc*[b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]if[/color] msg [b][color=#0080FF]([/color][/b][color=BLUE]prompt[/color] msg[b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]princ[/color][b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-load-com[/color][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] *adoc* [b][color=#00FFFF]([/color][/b][color=BLUE]vla-get-activedocument[/color] [b][color=#0080FF]([/color][/b][color=BLUE]vlax-get-acad-object[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vla-startundomark[/color] *adoc*[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]while[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]and[/color] [b][color=#0080FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]not[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF0000]([/color][/b][color=BLUE]null[/color] pt[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] pt [b][color=#80FF00]([/color][/b][color=BLUE]getpoint[/color] [color=BROWN]"\nSpecify first point : "[/color][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]progn[/color] [b][color=#80FF00]([/color][/b][color=BLUE]initget[/color] 128[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]setq[/color] pt [b][color=#00FFFF]([/color][/b][color=BLUE]getpoint[/color] [color=BROWN]"\nSpecify first point or \"Undo\" : "[/color][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [color=BLUE]t[/color] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b][color=BLUE]if[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] pt[b][color=#FF0000])[/color][/b] '[color=BLUE]list[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]progn[/color] [b][color=#FF0000]([/color][/b][color=BLUE]initget[/color] 128[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]setq[/color] ptt [b][color=#80FF00]([/color][/b][color=BLUE]getpoint[/color] pt [color=BROWN]"\nSpecify next point or \"Angle line\" - F8 orthomode : "[/color][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [color=BLUE]t[/color] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#00FFFF]([/color][/b][color=BLUE]cond[/color] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]and[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] ptt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] pt [color=BROWN]"_non"[/color] ptt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]and[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]or[/color] [b][color=#80FF00]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"a*"[/color][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]wcmatch[/color] ptt [color=BROWN]"A*"[/color][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]or[/color] [b][color=#80FF00]([/color][/b][color=BLUE]not[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]setq[/color] esel [b][color=#0080FF]([/color][/b][color=BLUE]entsel[/color] [color=BROWN]"\nPick target curve to obtain its angle"[/color][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vl-catch-all-error-p[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]vl-catch-all-apply[/color] '[color=BLUE]vlax-curve-getstartparam[/color] [b][color=#0080FF]([/color][/b][color=BLUE]list[/color] [b][color=#FF00FF]([/color][/b][color=BLUE]car[/color] esel[b][color=#FF00FF])[/color][/b][b][color=#0080FF])[/color][/b][b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nMissed or picked enitiy doesn't belong to curves... Try picking target curve again..."[/color][b][color=#FF0000])[/color][/b] [b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ent [b][color=#FF0000]([/color][/b][color=BLUE]car[/color] esel[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pent [b][color=#FF0000]([/color][/b][color=BLUE]vlax-curve-getclosestpointto[/color] ent [b][color=#80FF00]([/color][/b][color=BLUE]trans[/color] [b][color=#00FFFF]([/color][/b][color=BLUE]cadr[/color] esel[b][color=#00FFFF])[/color][/b] 1 0[b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ang [b][color=#FF0000]([/color][/b][color=BLUE]angle[/color] '[b][color=#80FF00]([/color][/b]0.0 0.0[b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b][color=BLUE]vlax-curve-getfirstderiv[/color] ent [b][color=#00FFFF]([/color][/b][color=BLUE]vlax-curve-getparamatpoint[/color] ent pent[b][color=#00FFFF])[/color][/b][b][color=#80FF00])[/color][/b][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]initget[/color] 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] real [b][color=#FF0000]([/color][/b][color=BLUE]getreal[/color] [color=BROWN]"\nSpecify angle to picked curve in decimal degrees : "[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] difang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] real [color=BROWN]"degree"[/color] [color=BROWN]"radian"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] nang [b][color=#FF0000]([/color][/b][color=BLUE]cvunit[/color] [b][color=#80FF00]([/color][/b][color=BLUE]+[/color] ang difang[b][color=#80FF00])[/color][/b] [color=BROWN]"radian"[/color] [color=BROWN]"degree"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] ptw [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] pt 1 0[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_W"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_Z"[/color] nang[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 1[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.LINE"[/color] [color=BROWN]"_non"[/color] [b][color=#FF0000]([/color][/b][color=BLUE]trans[/color] ptw 0 1[b][color=#FF0000])[/color][/b] [color=BROWN]"\\"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]while[/color] [b][color=#FF0000]([/color][/b][color=BLUE]>[/color] [b][color=#80FF00]([/color][/b][color=BLUE]getvar[/color] 'cmdactive[b][color=#80FF00])[/color][/b] 0[b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]command[/color] [color=BROWN]""[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setvar[/color] 'orthomode 0[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]command[/color] [color=BROWN]"_.UCS"[/color] [color=BROWN]"_P"[/color][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [color=BROWN]""[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]and[/color] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] pt[b][color=#80FF00])[/color][/b] '[color=BLUE]list[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]eq[/color] [b][color=#80FF00]([/color][/b][color=BLUE]type[/color] ptt[b][color=#80FF00])[/color][/b] 'str[b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nInvalid option keyword..."[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]or[/color] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] pt [color=BROWN]"u*"[/color][b][color=#FF0000])[/color][/b] [b][color=#FF0000]([/color][/b][color=BLUE]wcmatch[/color] pt [color=BROWN]"U*"[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]entdel[/color] [b][color=#FF0000]([/color][/b][color=BLUE]entlast[/color][b][color=#FF0000])[/color][/b][b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]setq[/color] pt [color=BLUE]nil[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#0080FF]([/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]eq[/color] [b][color=#FF0000]([/color][/b][color=BLUE]type[/color] pt[b][color=#FF0000])[/color][/b] 'str[b][color=#FF00FF])[/color][/b] [b][color=#FF00FF]([/color][/b][color=BLUE]prompt[/color] [color=BROWN]"\nInvalid option keyword..."[/color][b][color=#FF00FF])[/color][/b] [b][color=#0080FF])[/color][/b] [b][color=#00FFFF])[/color][/b] [b][color=#80FF00])[/color][/b] [b][color=#80FF00]([/color][/b]*error* [color=BLUE]nil[/color][b][color=#80FF00])[/color][/b] [b][color=#FF0000])[/color][/b] Regards, M.R. Hi marko , why this version can't draw line continuous ? Quote
marko_ribar Posted January 11, 2015 Posted January 11, 2015 That's the main difference... You don't want always to continue... When you draw lines manually with hand, do you make lines without breaks? I often draw something on one part of drawing, and then I see something missing on the other part... This is very similar to that procedure and it allows you to specify desired inclination angle of line in reference to picked target curve, which is why its called "alin.lsp"... In time you'll see its purpose better when you get used to new ways of doing things... You'll see, we all just need some practice... Quote
cadfan Posted January 11, 2015 Author Posted January 11, 2015 That's the main difference... You don't want always to continue... When you draw lines manually with hand, do you make lines without breaks? I often draw something on one part of drawing, and then I see something missing on the other part... This is very similar to that procedure and it allows you to specify desired inclination angle of line in reference to picked target curve, which is why its called "alin.lsp"... In time you'll see its purpose better when you get used to new ways of doing things... You'll see, we all just need some practice... yes! maybe need some practice... ,thanks marko! Quote
marko_ribar Posted January 11, 2015 Posted January 11, 2015 Oh I forgot to add distance option... Note that when "Angle line" is specified "LINE" command is activated with "PAUSE" inputs, so after you pick target curve, angle in relation to curve, you can specify distance although not shown as text message... (defun c:alin ( / *error* *adoc* pt ptt [color=red]d dn[/color] esel ent pent ang real difang nang ) (defun *error* ( msg ) (vla-endundomark *adoc*) (if msg (prompt msg)) (princ) ) (vl-load-com) (setq *adoc* (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark *adoc*) (while (and (if (not (eq (type pt) 'list)) (if (null pt) (setq pt (getpoint "\nSpecify first point : ")) (progn (initget 128) (setq pt (getpoint "\nSpecify first point or \"Undo\" : ")) ) ) t ) (if (eq (type pt) 'list) (progn (initget 128) (setq ptt (getpoint pt "\nSpecify next point or \"Angle line\" - F8 orthomode : ")) ) t ) ) (cond ( (and (eq (type pt) 'list) (eq (type ptt) 'list)) [color=red](setq d (distance pt ptt)) (initget 2) (setq dn (getreal (strcat "\nSpecify distance <" (rtos d 2 50) "> : "))) (if (null dn) (setq dn d)) (setq ptt (polar pt (angle pt ptt) dn))[/color] (command "_.LINE" "_non" pt "_non" ptt "") (setvar 'orthomode 0) (setq pt "") ) ( (and (eq (type pt) 'list) (or (wcmatch ptt "a*") (wcmatch ptt "A*"))) (while (or (not (setq esel (entsel "\nPick target curve to obtain its angle"))) (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list (car esel)))) ) (prompt "\nMissed or picked enitiy doesn't belong to curves... Try picking target curve again...") ) (setq ent (car esel)) (setq pent (vlax-curve-getclosestpointto ent (trans (cadr esel) 1 0))) (setq ang (angle '(0.0 0.0) (vlax-curve-getfirstderiv ent (vlax-curve-getparamatpoint ent pent)))) (initget 1) (setq real (getreal "\nSpecify angle to picked curve in decimal degrees : ")) (setq difang (cvunit real "degree" "radian")) (setq nang (cvunit (+ ang difang) "radian" "degree")) (setq ptw (trans pt 1 0)) (command "_.UCS" "_W") (command "_.UCS" "_Z" nang) (setvar 'orthomode 1) (command "_.LINE" "_non" (trans ptw 0 1) "\\") (while (> (getvar 'cmdactive) 0) (command "")) (setvar 'orthomode 0) (command "_.UCS" "_P") (command "_.UCS" "_P") (setq pt "") ) ( (and (eq (type pt) 'list) (eq (type ptt) 'str)) (prompt "\nInvalid option keyword...") ) ( (or (wcmatch pt "u*") (wcmatch pt "U*")) (entdel (entlast)) (setq pt nil) ) ( (eq (type pt) 'str) (prompt "\nInvalid option keyword...") ) ) ) (*error* nil) ) (defun c:aplin ( / *error* *adoc* pt opt ptt el [color=red]d dn[/color] esel ent pent ang real difang nang ptw ) (defun *error* ( msg / pea ss ) (setq pea (getvar 'peditaccept)) (setvar 'peditaccept 1) (if el (progn (setq ss (ssadd)) (foreach l el (ssadd l ss) ) (command "_.PEDIT" "_M" ss "" "_J") (while (> (getvar 'cmdactive) 0) (command "")) ) ) (setvar 'peditaccept pea) (if msg (prompt msg)) (princ) ) (vl-load-com) (setq *adoc* (vla-get-activedocument (vlax-get-acad-object))) (setq pt (getpoint "\nSpecify first point : ")) (while (and pt (setq opt (cons pt opt)) (not (initget 128)) (setq ptt (getpoint pt "\nSpecify next point or - F8 for orthomode [Angle line/Undo] : ")) (setq opt (cons ptt opt)) ) (cond ( (eq (type ptt) 'list) (vla-startundomark *adoc*) [color=red](setq d (distance pt ptt)) (initget 2) (setq dn (getreal (strcat "\nSpecify distance <" (rtos d 2 50) "> : "))) (if (null dn) (setq dn d)) (setq ptt (polar pt (angle pt ptt) dn))[/color] (command "_.LINE" "_non" pt "_non" ptt "") (setq el (cons (entlast) el)) (setvar 'orthomode 0) (setq pt ptt) (vla-endundomark *adoc*) ) ( (or (wcmatch ptt "a*") (wcmatch ptt "A*")) (vla-startundomark *adoc*) (while (or (not (setq esel (entsel "\nPick target curve to obtain its angle"))) (vl-catch-all-error-p (vl-catch-all-apply 'vlax-curve-getstartparam (list (car esel)))) ) (prompt "\nMissed or picked enitiy doesn't belong to curves... Try picking target curve again...") ) (setq ent (car esel)) (setq pent (vlax-curve-getclosestpointto ent (trans (cadr esel) 1 0))) (setq ang (angle '(0.0 0.0) (vlax-curve-getfirstderiv ent (vlax-curve-getparamatpoint ent pent)))) (initget 1) (setq real (getreal "\nSpecify angle to picked curve in decimal degrees : ")) (setq difang (cvunit real "degree" "radian")) (setq nang (cvunit (+ ang difang) "radian" "degree")) (setq ptw (trans pt 1 0)) (command "_.UCS" "_W") (command "_.UCS" "_Z" nang) (setvar 'orthomode 1) (command "_.LINE" "_non" (trans ptw 0 1) "\\") (while (> (getvar 'cmdactive) 0) (command "")) (setq el (cons (entlast) el)) (setvar 'orthomode 0) (setq ptw (trans (getvar 'lastpoint) 1 0)) (command "_.UCS" "_P") (command "_.UCS" "_P") (setq pt (trans ptw 0 1)) (vla-endundomark *adoc*) ) ( (or (wcmatch ptt "u*") (wcmatch ptt "U*")) (if (eq (length opt) 2) (setq pt nil) (progn (if (equal (cadr opt) (cadddr opt) 1e- (setq opt (cddddr opt)) (setq opt (cddr opt)) ) (if (null opt) (setq pt nil) (progn (command "_.UNDO" "") (setq el (cdr el)) (setq pt (cadr opt)) ) ) ) ) ) ( (eq (type ptt) 'str) (prompt "\nInvalid option keyword...") (setq opt (cddr opt)) ) ) ) (*error* nil) ) Regards, M.R. P.S. You must pracitce to get used with them... Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.