Jump to content

Recommended Posts

Posted (edited)

Hello everybody,

My lisp experience is very low. I made the next lisp, and i want to improve it to use it this way: to continue to select other points and draw "pipe" continuously - something with while... then to select next point... please help me!

 

;;;tevi florin

(defun C:pipe (/ stp ep ds d1 d2 d3 d4 ang old_err old_hcosmode)

(defun DTR (deg) (* deg (/ PI 180)))

(setq old_err *error*

*error* hc_err)

(setvar "CMDECHO" 0)

(setvar "BLIPMODE" 0)

(setq old_hcosmode(getvar "Osmode"))

(setvar "Osmode" 0)

(setq dia (getreal "\ndiametru:" ))

(if (= dia 50)

(setq di 60.3))

(if (= dia 80)

(setq di 88.9))

(if (= dia 100)

(setq di 114.3))

(if (= dia 150)

(setq di 168.3))

(if (= dia 200)

(setq di 219.0))

(if (= dia 250)

(setq di 273))

(if (= dia 300)

(setq di 323.9))

(if (= dia 350)

(setq di 355.6))

(if (= dia 400)

(setq di 406.4))

(if (= dia 450)

(setq di 457.2))

(if (= dia 500)

(setq di 508 ))

(if (= dia 600)

(setq di 609.6))

(if (= dia 700)

(setq di 710))

(if (= dia 800)

(setq di 813))

(if (= dia 900)

(setq di 914))

 

(setq stp(getpoint "\nPunct insertie:"))

(if(/= stp NIL)

(progn

(setq ep (getpoint "\nVarf:" stp))

 

(setq ds (distance stp ep) ang (angle stp ep))

)

(princ "\n?")

)

(if(and stp ep)

(progn

(setq d1(polar stp (+ ang (dtr 90)) (/ di 2) )

d2(polar ep (+ ang (dtr 90)) (/ di 2) )

d3(polar ep (- ang (dtr 90)) (/ di 2) )

d4(polar stp (- ang (dtr 90)) (/ di 2) )

 

)

 

 

;(command "_.PLINE" d1 "W" "0" "0"

; d2 d3 d4 d1""

 

(command "LINE" d1 d2 ""

"_.CHPROP" "L" "" "la" "contur" "lt" "bylayer" "c" "bylayer" ""

"LINE" d3 d4 ""

"_.CHPROP" "L" "" "la" "contur" "lt" "bylayer" "c" "bylayer" ""

"line" stp ep ""

"_.CHPROP" "L" "" "la" "axe" "lt" "bylayer" "c" "bylayer" "")

)

 

);end if.

(setvar "Osmode" old_hcosmode)

(setq *error* old_err)

(princ)

)

Edited by flopo
Posted

While I don't quite understand the final product, I'd start with something like this:

 

[color=#8b4513];;;tevi florin[/color]
[b][color=BLACK]([/color][/b]defun C:pipe [b][color=FUCHSIA]([/color][/b]/ stp ep ds d1 d2 d3 d4 ang old_err old_hcosmode
                data di dia[b][color=FUCHSIA])[/color][/b]

[color=#8b4513];[b][color=FUCHSIA]([/color][/b]setq old_err *error*[/color]
[color=#8b4513];     *error* hc_err[b][color=FUCHSIA])[/color][/b][/color]

[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 0[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"BLIPMODE"[/color] 0[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq old_hcosmode[b][color=NAVY]([/color][/b]getvar [color=#2f4f4f]"Osmode"[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"Osmode"[/color] 0[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CECOLOR"[/color] [color=#2f4f4f]"BYLAYER"[/color][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"CELTYPE"[/color] [color=#2f4f4f]"BYLAYER"[/color][b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"PLINEWID"[/color] 0.0[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setq data '[b][color=NAVY]([/color][/b][b][color=MAROON]([/color][/b]50  . 60.3[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]80  . 88.9[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]100 . 114.3[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]150 . 168.3[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]200 . 219.0[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]250 . 273.0[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]300 . 323.9[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]350 . 355.6[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]400 . 406.4[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]450 . 457.2[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]500 . 508.0[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]600 . 609.6[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]700 . 710.0[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]800 . 813.0[b][color=MAROON])[/color][/b]
            [b][color=MAROON]([/color][/b]900 . 914.0[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]assoc dia data[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]initget 7[b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]setq dia [b][color=MAROON]([/color][/b]getreal [color=#2f4f4f]"\nDiametru:   "[/color] [b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setq di [b][color=NAVY]([/color][/b]cdr [b][color=MAROON]([/color][/b]assoc dia data[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]initget 1[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq stp [b][color=NAVY]([/color][/b]getpoint [color=#2f4f4f]"\nPunct Insertie:   "[/color][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]while [b][color=NAVY]([/color][/b]setq ep [b][color=MAROON]([/color][/b]getpoint stp [color=#2f4f4f]"\nVarf:   "[/color][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]

      [b][color=NAVY]([/color][/b]setq ds [b][color=MAROON]([/color][/b]distance stp ep[b][color=MAROON])[/color][/b]
           ang [b][color=MAROON]([/color][/b]angle stp ep[b][color=MAROON])[/color][/b]
            d1 [b][color=MAROON]([/color][/b]polar stp [b][color=GREEN]([/color][/b]+ ang [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]/ di 2.[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
            d2 [b][color=MAROON]([/color][/b]polar ep  [b][color=GREEN]([/color][/b]+ ang [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]/ di 2.[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
            d3 [b][color=MAROON]([/color][/b]polar ep  [b][color=GREEN]([/color][/b]- ang [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]/ di 2.[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
            d4 [b][color=MAROON]([/color][/b]polar stp [b][color=GREEN]([/color][/b]- ang [b][color=BLUE]([/color][/b]* pi 0.5[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]/ di 2.[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]

      [color=#8b4513];[b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.PLINE"[/color] d1 d2 d3 d4 d1 [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b][/color]

      [b][color=NAVY]([/color][/b]command [color=#2f4f4f]"_.LINE"[/color] d1 d2 [color=#2f4f4f]""[/color]
               [color=#2f4f4f]"_.LINE"[/color] d3 d4 [color=#2f4f4f]""[/color]
               [color=#2f4f4f]"_.LINE"[/color] stp ep [color=#2f4f4f]""[/color][b][color=NAVY])[/color][/b]
      [b][color=NAVY]([/color][/b]setq stp ep[b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]setvar [color=#2f4f4f]"Osmode"[/color] old_hcosmode[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]setq *error* old_err[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b]

 

 

Are possibly trying to make a custom MLINE?

 

-David

Posted

Nice one David obviously plastic or steel pipes as concrete 300 would be 362. But pipe type could be added pretty simply to your code to make a bigger library.

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