woodman78 Posted April 21, 2011 Posted April 21, 2011 How do I select a pline in a lisp to pass to a selection set? Quote
Tharwat Posted April 21, 2011 Posted April 21, 2011 This would filter for LWpolyline and Polyline as well. (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE")))) Quote
Tharwat Posted April 21, 2011 Posted April 21, 2011 What do you mean by that ? Is it singular selection ? Quote
woodman78 Posted April 21, 2011 Author Posted April 21, 2011 Sorry if i didn't explain properly. I want the lisp to ask the user to select a pline. Thanks Quote
Tharwat Posted April 21, 2011 Posted April 21, 2011 All right . Check this out ... This .. (progn (princ "\n Select POLYLINE(S) only please :") (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE")))) ) Or this .. (setq free (getvar 'nomutt)) (setvar 'nomutt 1) (progn (princ "\n Select POLYLINE(S) only please :") (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE")))) ) (setvar 'nomutt free) TharwaT Quote
woodman78 Posted April 21, 2011 Author Posted April 21, 2011 This is what i have so far. I don't think i integrated your part right cause I get an error about selection sets. (defun C:yellow_lines (/ *error* ang col clr coords dwo elist midp offsetted ofpt osm p1 p2 p3 pline a b c SUCE SUOM SUSM SUAB SUAD SUCL SUCR) (setq SUCE (getvar "cmdecho")) (setq SUOM (getvar "orthomode")) (setq SUSM (getvar "osmode")) (setq SUAB (getvar "angbase")) (setq SUAD (getvar "angdir")) (setq SUCL (getvar "clayer")) (setq SUCR (getvar "cecolor")) (command "_.-layer" "_N" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "_C" "2" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "" ) (setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines") (progn (princ "\n Select POLYLINE(S) only please :") (setq pline (ssget '((0 . "LWPOLYLINE,POLYLINE")))) elist (entget pline) ) ;(setq pline (entlast) ;elist (entget pline) ;(setq elist (entmod (subst (cons 70 1)(assoc 70 elist)elist)));<--close pline (entmod (subst (cons 43 0)(assoc 43 elist)elist));<--set line width to zero (setvar "draworderctl" 3) (command "_.draworder" pline "" "_F");<--set pline's draw order to front (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p3 (caddr coords) p1 (car coords) ang (angle p1 p3) ofpt (polar p3 ang 1.0) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "._offset" 0.1 pline ofpt "") (setq offsetted (entlast) elist (entget offsetted) ) (if (assoc 62 elist) (setq elist (subst (cons 62 1)(assoc 62 elist) elist )) (setq elist (append elist (list '(62 . 1)))) ) (entmod elist) (command "._pedit" offsetted "_W" 1.0 "") (command "_.draworder" offsetted "" "_B");<--set pline's draw order to back (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_.chprop" offsetted "LA" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "._offset" 0.3 offsetted ofpt "") (setq offsetted1 (entlast) elist (entget offsetted1) ) (if (assoc 62 elist) (setq elist (subst (cons 62 1)(assoc 62 elist) elist )) (setq elist (append elist (list '(62 . 1)))) ) (entmod elist) (command "._pedit" offsetted1 "_W" 1.0 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) ;(command "_.chprop" offsetted "LA" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "_.mleader") (setvar "cmdecho" SUCE) (setvar "orthomode" SUOM) (setvar "osmode" SUSM) (setvar "angbase" SUAB) (setvar "angdir" SUAD) (setvar "clayer" SUCL) (setvar "cecolor" SUCR) (princ) ) Can you take a look please? Quote
woodman78 Posted April 26, 2011 Author Posted April 26, 2011 Hi, I have changed my tack on this one. Now the user draws a line as part of the routine that is deleted when it is completed. My problem is the the offset side in controlled. How do I integrate a call to choose a side to offset to? (defun C:yellow_lines (/ ang coords elist midp offsetted offsetted1 ofpt p1 p2 p3 pline SUCE SUOM SUSM SUAB SUAD SUCL SUCR) (setq SUCE (getvar "cmdecho")) (setq SUOM (getvar "orthomode")) (setq SUSM (getvar "osmode")) (setq SUAB (getvar "angbase")) (setq SUAD (getvar "angdir")) (setq SUCL (getvar "clayer")) (setq SUCR (getvar "cecolor")) (command "_.-layer" "_N" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "_C" "2" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "" ) (setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines") (setvar "cecolor" "1") (command "._pline") (while (= 1 (logand 1 (getvar "cmdactive"))) (command pause)) (setq pline (entlast) elist (entget pline) ) (setvar "cecolor" "Bylayer") (command "_.draworder" pline "" "_F");<--set pline's draw order to front (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p3 (caddr coords) p1 (car coords) ang (angle p1 p3) ofpt (polar p3 ang 1.0) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "._offset" 0.2 pline ofpt "") (setq offsetted (entlast) elist (entget offsetted) ) (entmod elist) (command "._pedit" offsetted "_W" 0.1 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_change" offsetted "" "p" "color" "2" "") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "._offset" 0.4 pline ofpt "") (setq offsetted1 (entlast) elist (entget offsetted1) ) (entmod elist) (command "._pedit" offsetted1 "_W" 0.1 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_change" offsetted1 "" "p" "color" "2" "") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "_erase" pline "" ) (setvar "cmdecho" SUCE) (setvar "orthomode" SUOM) (setvar "osmode" SUSM) (setvar "angbase" SUAB) (setvar "angdir" SUAD) (setvar "clayer" SUCL) (setvar "cecolor" SUCR) (princ) ) Quote
Tharwat Posted April 26, 2011 Posted April 26, 2011 You can start from this link to get what you want with offset codes by Lee. Doff Routines Quote
woodman78 Posted April 26, 2011 Author Posted April 26, 2011 Thanks for the hint. That sorted it alright. Quote
woodman78 Posted April 26, 2011 Author Posted April 26, 2011 I have moved this on a bit and have put in an option that will allow the user to choose whether to create offset the lines from an existing line or to draw a new line that would be offset. I have tried to introduce a cond to choose which sub-routine to call. I'm stuck though and can't find an obvious answer online. Can some help with the missing part? Thanks. (defun C:double_yellow_lines (/ ang coords elist midp offsetted offsetted1 ofpt p1 p2 p3 pline side SUCE SUOM SUSM SUAB SUAD SUCL SUCR) (setq SUCE (getvar "cmdecho")) (setq SUOM (getvar "orthomode")) (setq SUSM (getvar "osmode")) (setq SUAB (getvar "angbase")) (setq SUAD (getvar "angdir")) (setq SUCL (getvar "clayer")) (setq SUCR (getvar "cecolor")) (command "_.-layer" "_N" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "_C" "2" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "" ) (setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines") (setvar "cecolor" "1") [color=red](setq option(XXXX "\n:Choose draw line or select line method: (D/S) ") (cond ((= option "D")(yellow_draw)) ((= option "S")(yellow_select)) )[/color] ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun yellow_select () (setq pline(entsel "\nSelect a kerb line: ")) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun yellow_draw () (command "._pline") (while (= 1 (logand 1 (getvar "cmdactive"))) (command pause)) (setq pline (entlast) elist (entget pline) ) (setvar "cecolor" "Bylayer") (command "_.draworder" pline "" "_F");<--set pline's draw order to front (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p3 (caddr coords) p1 (car coords) ang (angle p1 p3) ) ;(command "_erase" pline "" ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (setq side(getpoint "\nPick an offset side: ")) (command "._offset" 0.3 pline side "") (setq offsetted (entlast) elist (entget offsetted) ) (entmod elist) (command "._pedit" offsetted "_W" 0.1 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_change" offsetted "" "p" "color" "2" "") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "._offset" 0.5 plinesel side "") (setq offsetted1 (entlast) elist (entget offsetted1) ) (entmod elist) (command "._pedit" offsetted1 "_W" 0.1 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_change" offsetted1 "" "p" "color" "2" "") (setvar "cmdecho" SUCE) (setvar "orthomode" SUOM) (setvar "osmode" SUSM) (setvar "angbase" SUAB) (setvar "angdir" SUAD) (setvar "clayer" SUCL) (setvar "cecolor" SUCR) (princ) ) Quote
alanjt Posted April 26, 2011 Posted April 26, 2011 getkword with initget eg. (initget "Yes No") (getkword "\nDo you understand? [Yes/No]: ") Quote
woodman78 Posted April 26, 2011 Author Posted April 26, 2011 Thanks Alanjt, I tried to integrate that but now it stops when I select my method. Would be able to have a look and spot the problem? (defun C:dyl (/ ang coords elist midp offsetted offsetted1 ofpt p1 p2 p3 pline side SUCE SUOM SUSM SUAB SUAD SUCL SUCR) (setq SUCE (getvar "cmdecho")) (setq SUOM (getvar "orthomode")) (setq SUSM (getvar "osmode")) (setq SUAB (getvar "angbase")) (setq SUAD (getvar "angdir")) (setq SUCL (getvar "clayer")) (setq SUCR (getvar "cecolor")) (command "_.-layer" "_N" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "_C" "2" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines" "" ) (setvar "clayer" "CCC_LAYOUT_Proposed_Road_Lining_Yellow_Lines") (setvar "cecolor" "1") (initget "D S") (getkword "\nChoose Draw line or Select line method: [D/S]: ") (cond ((= option "D")(yellow_draw)) ((= option "S")(yellow_select)) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun yellow_select () (setq pline(entsel "\nSelect a kerb line: ")) (yellow_resume) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun yellow_draw () (command "._pline") (while (= 1 (logand 1 (getvar "cmdactive"))) (command pause)) (setq pline (entlast) elist (entget pline) ) (setvar "cecolor" "Bylayer") (command "_.draworder" pline "" "_F");<--set pline's draw order to front (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p3 (caddr coords) p1 (car coords) ang (angle p1 p3) ) ;(command "_erase" pline "" ) (yellow_resume) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun yellow_resume () (setq side(getpoint "\nPick an offset side: ")) (command "._offset" 0.3 pline side "") (setq offsetted (entlast) elist (entget offsetted) ) (entmod elist) (command "._pedit" offsetted "_W" 0.1 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_change" offsetted "" "p" "color" "2" "") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (command "._offset" 0.5 plinesel side "") (setq offsetted1 (entlast) elist (entget offsetted1) ) (entmod elist) (command "._pedit" offsetted1 "_W" 0.1 "") (setq coords (vl-remove-if (function not) (mapcar (function (lambda (x) (if (= 10 (car x))(cdr x)))) elist)) ) (setq p2 (car coords) midp (mapcar (function (lambda( a b)(/ (+ a b) 2))) p1 p2) ) (command "_change" offsetted1 "" "p" "color" "2" "") (setvar "cmdecho" SUCE) (setvar "orthomode" SUOM) (setvar "osmode" SUSM) (setvar "angbase" SUAB) (setvar "angdir" SUAD) (setvar "clayer" SUCL) (setvar "cecolor" SUCR) (princ) ) Thanks. Quote
alanjt Posted April 26, 2011 Posted April 26, 2011 You are checking against a 'option' variable but you are NOT defining the variable with your getkword statement. Quote
woodman78 Posted April 26, 2011 Author Posted April 26, 2011 Yeah, that was it. Thanks for the bailout again. 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.