Jump to content

Recommended Posts

Posted (edited)

Can some one please help me with this lisp. I need it to round to the neastest foot and add the ' symbol. And if possible get it to sit above the line instead of on the line. I am using Autocad 2011.

 

This Lisp was created by Tharwat::::

(defun c:Lentxt (/ ss)

(if (setq ss (ssget "_:L" '((0 . "LINE"))))

(

(lambda (i / ss1 e dis pt1 pt2 pt3)

(while

(setq ss1 (ssname ss (setq i (1+ i))))

(setq e (entget ss1 ))

(setq dis (distance (setq pt1 (cdr (assoc 10 e)))(setq pt2 (cdr (assoc 11 e)))))

(cond ((

(setq pt3 (polar pt1 (setq ang (angle pt1 pt2)) (/ dis 2.)))

)

((> (car pt1)(car pt2))(setq pt3 (polar pt2 (setq ang (angle pt2 pt1)) (/ dis 2.)))

)

)

(entmakex (list (cons 0 "TEXT")

(cons 10 (polar pt3 ang 0))

(cons 1 (rtos dis 2))

(cons 50 ang)

(cons 40 (getvar 'textsize))))

))-1)

(princ "\n No Line(s) selected")

)

(princ)

)

Edited by j_spawn_h
Posted

I got it from some one who posted it to me last time i came and asked for help. I forgot their tag name.

Posted

J_spawn_h

We have some simple rules here:

Please ensure that you have the right to publish code on a public forum. In most cases, the code you are publishing will be your own and it will be assumed that if no attribution is given, you are the author. However, if you are not the author, you must make this clear and where possible, give credit to the author.
Or better go here and read all the thread -you could learn about the CODE tag too.

 

Tharwat

I see no intention to harm your reputation, I am sure it was a mistake. Anyway, you could provide your Lisp routines with a short personal header.

Posted (edited)

Sorry I did not know how to go back to old posts.

Your lisp works great I was just trying to add to it, but could not figure out how it was getting the number so I could add a (cvunit x "inches" "feet").

Was not taking credit for what he did I just did not know how to find out who gave it to me.

I corrected my mistake in the first post.

Edited by j_spawn_h
Posted

Assuming:

  • The lines are drawn in inches and you want to round to the nearest foot:
  • You want 2D distances only
  • You want the text middle justified above the middle of the line
  • You have preset your TEXTSTYLE TEXTSIZE LAYER
  • Everything is WCS
  • Yada Yada Yada

 

Maybe something like this:

 

[b][color=BLACK]([/color][/b]defun c:llabel [b][color=FUCHSIA]([/color][/b]/ ss en ed p10 p11 mpt d2d lan dir tan[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]defun round1 [b][color=NAVY]([/color][/b]r[b][color=NAVY])[/color][/b]
[b][color=NAVY]([/color][/b]if [b][color=MAROON]([/color][/b]<= 0.5 [b][color=GREEN]([/color][/b]abs [b][color=BLUE]([/color][/b]rem r 1[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    [b][color=MAROON]([/color][/b]fix [b][color=GREEN]([/color][/b]1+ r[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
    [b][color=MAROON]([/color][/b]fix r[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]and [b][color=NAVY]([/color][/b]setq ss [b][color=MAROON]([/color][/b]ssget [color=#2f4f4f]"X"[/color] '[b][color=GREEN]([/color][/b][b][color=BLUE]([/color][/b]0 . [color=#2f4f4f]"LINE"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
    [b][color=NAVY]([/color][/b]while [b][color=MAROON]([/color][/b]setq en [b][color=GREEN]([/color][/b]ssname ss 0[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           [b][color=MAROON]([/color][/b]setq ed [b][color=GREEN]([/color][/b]entget en[b][color=GREEN])[/color][/b]
                p10 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 10 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                p11 [b][color=GREEN]([/color][/b]cdr [b][color=BLUE]([/color][/b]assoc 11 ed[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                mpt [b][color=GREEN]([/color][/b]mapcar '[b][color=BLUE]([/color][/b]lambda [b][color=RED]([/color][/b]a b[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]* [b][color=PURPLE]([/color][/b]+ a b[b][color=PURPLE])[/color][/b] 0.5[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] p10 p11[b][color=GREEN])[/color][/b]
                d2d [b][color=GREEN]([/color][/b]distance [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]reverse p10[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr [b][color=RED]([/color][/b]reverse p11[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
                lan [b][color=GREEN]([/color][/b]angle p10 p11[b][color=GREEN])[/color][/b]
                dir [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]< [b][color=RED]([/color][/b]* pi 0.5[b][color=RED])[/color][/b] lan [b][color=RED]([/color][/b]* pi 1.5[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] - +[b][color=GREEN])[/color][/b]
                tan [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]> [b][color=RED]([/color][/b]* pi 1.5[b][color=RED])[/color][/b] lan [b][color=RED]([/color][/b]* pi 0.5[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]+ lan pi[b][color=BLUE])[/color][/b] lan[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 8 [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"CLAYER"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 7 [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"TEXTSTYLE"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 40 [b][color=RED]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 72 4[b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 10 [b][color=RED]([/color][/b]polar mpt [b][color=PURPLE]([/color][/b]dir [b][color=TEAL]([/color][/b]angle p10 p11[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]* pi 0.5[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
                                   [b][color=PURPLE]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 11 [b][color=RED]([/color][/b]polar mpt [b][color=PURPLE]([/color][/b]dir [b][color=TEAL]([/color][/b]angle p10 p11[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]* pi 0.5[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
                                   [b][color=PURPLE]([/color][/b]getvar [color=#2f4f4f]"TEXTSIZE"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 50 tan[b][color=BLUE])[/color][/b]
                          [b][color=BLUE]([/color][/b]cons 1 [b][color=RED]([/color][/b]strcat [b][color=PURPLE]([/color][/b]itoa [b][color=TEAL]([/color][/b]round1 [b][color=OLIVE]([/color][/b]/ d2d 12.[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b] [color=#2f4f4f]"'"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
           [b][color=MAROON]([/color][/b]ssdel en ss[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
  [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

Not well tested. -David

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