Jump to content

smart line ?


cadfan

Recommended Posts

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 by marko_ribar
code revised and renamed to better suit to what routine do
Link to comment
Share on other sites

  • Replies 48
  • Created
  • Last Reply

Top Posters In This Topic

  • cadfan

    15

  • ReMark

    7

  • marko_ribar

    6

  • nestly

    6

Top Posters In This Topic

Posted Images

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, :thumbsup:

Link to comment
Share on other sites

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 .

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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 ?

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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!

Link to comment
Share on other sites

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...

Link to comment
Share on other sites

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


×
×
  • Create New...