flopo Posted June 5, 2011 Posted June 5, 2011 (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 June 5, 2011 by flopo Quote
Tharwat Posted June 5, 2011 Posted June 5, 2011 Please use [ CODE POSTING ] for posting codes . http://www.cadtutor.net/forum/showthread.php?9184-Code-posting-guidelines Quote
David Bethel Posted June 5, 2011 Posted June 5, 2011 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 Quote
BIGAL Posted June 6, 2011 Posted June 6, 2011 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. Quote
David Bethel Posted June 6, 2011 Posted June 6, 2011 Thanks! If it is a MILNE replacement, this should be very useful: http://www.cadtutor.net/forum/showthread.php?52810-Looking-for-a-LISP-routine-Multiple-Polyline-Offset/page2&highlight=mline -David 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.