Jump to content

Lisp For Select Less than specified Length Lines


pvsvprasad

Recommended Posts

Dear Masters,

 

i need select the less than specified length lines and open poly lines. example i need less than 1500mm lines or open poly lines by selecting cross window.

 

Thanks in advance,

Best regards.

Link to comment
Share on other sites

  • Replies 36
  • Created
  • Last Reply

Top Posters In This Topic

  • Grrr

    9

  • Tharwat

    8

  • Roy_043

    6

  • marko_ribar

    5

(defun c:Test ( / sad sel )
 ;; Tharwat - 24.09.16 ;;
 (if (setq sad (ssadd) sel (ssget "_:L" '((0 . "LINE,*POLYLINE"))))
   ((lambda (x / e )
      (while (setq e (ssname sel (setq x (1+ x))))
        (if (< (vlax-curve-getdistatparam e (vlax-curve-getendparam e)) 1500.)
          (ssadd e sad))
        )
      ) -1
        )
   )
 (sssetfirst nil sad)
 (princ)
 ) (vl-load-com)

Link to comment
Share on other sites

An alternative is to remove the undesired objects from the original set; however, note that this is only applicable when iterating over the selection set with a decrementing index:

(defun c:mysel ( / e i s )
   (if (setq s (ssget '((-4 . "<OR") (0 . "LINE") (-4 . "<AND") (0 . "LWPOLYLINE") (-4 . "<NOT") (-4 . "&=") (70 . 1) (-4 . "NOT>") (-4 . "AND>") (-4 . "OR>"))))
       (repeat (setq i (sslength s))
           (setq e (ssname s (setq i (1- i))))
           (if (<= 1500 (vlax-curve-getdistatparam e (vlax-curve-getendparam e))) (ssdel e s))
       )
   )
   (sssetfirst nil s)
   (princ)
)
(vl-load-com) (princ)

Link to comment
Share on other sites

Dear Tharwat & Lee Mac,

 

Thank you for providing great code. my actual request is at command prompt should be asked for "specify less than length", then i enter manually required less than length of lines.

 

1500 mm is only for example purpose. kindly make a modification in lisp.

 

Thanking you,

Best regads.

Link to comment
Share on other sites

Give this a shot;

(defun c:Test ( / len sad sel )
 ;; Tharwat - 24.09.16 ;;
 (if (and (setq len (getdist "\nSpecify Minimum length :"))
          (princ "\nSelect Lines & Polylines :")
          (setq sad (ssadd) sel (ssget "_:L" '((0 . "LINE,*POLYLINE"))))
          )
   ((lambda (x / e )
      (while (setq e (ssname sel (setq x (1+ x))))
        (if (< (vlax-curve-getdistatparam e (vlax-curve-getendparam e)) len)
          (ssadd e sad))
        )
      ) -1
        )
   )
 (sssetfirst nil sad)
 (princ)
 ) (vl-load-com)

Link to comment
Share on other sites

Hi Tharwat,

May I ask how do you determine which variables to localise inside (lambda) and which inside the main (defun) ?

 

Hi Grrr,

 

Sure you can ask with all pleasure.

 

When you localise variables into lambda function that means they won't be available outside this function and as in my previous codes the variable 'e' would be equal to nil and also I could have brought it to top inside defun's local variables side so no restrictions in this case.

 

But with defun also localising variables is really very important step unless you need any variable to be Global and most of users prefer naming global variables with asterisks as a prefix & suffix. eg: *MyVariable*.

 

If the above description did not help, just ask and I would be more than happy to break down the codes into pieces. :)

Link to comment
Share on other sites

Thank you, Tharwat!

I was just exploring more deeply how (lambda) works, and I think this was my only question about it.

I didn't knew about that global *MyVariable* naming preference.. so I learned something new, to be aware of. :)

After reading some old threads, with good explanations (from LM), I ended up with this conclusion:

; main lambda structure (anonymous function):
(
(lambda ( [arguments] [/ variables] )
	<expressions> ;(do stuff)
); lambda
[values for the arguments] ;<- I think it may be a single value or a list of values
)	

So you could also write it like this:

(defun ... ( / )
(
	(lambda ( len SS / i e nSS )
		(if (and len SS)
			(progn
				(setq nSS (ssadd))
				(repeat (setq i (sslength SS))
					(setq e (ssname SS (setq i (1- i))))
					(if (< (vlax-curve-getdistatparam e (vlax-curve-getendparam e)) len)
						(ssadd e nSS)
					)
				); repeat
				(sssetfirst nil nSS)
			); progn
		); if
	); lambda
	(getdist "\nSpecify Minimum length :") (ssget "_:L" '((0 . "LINE,*POLYLINE")))
)
(princ)
)

Ofcourse I think the performance would be the same as your code above, (without intention of modifying/stealing your code).

I just think that it would be nice to practice/repractice different approaches for such "easy requests" (atleast I try to do so... because its been a while when I memorized that standard SS iteration, like LM posted (no offence, Lee)).

EDIT:

Well now I saw that I actually did the same iteration approach, but I hope you know what do I mean.

Link to comment
Share on other sites

EDIT:

Well now I saw that I actually did the same iteration approach, but I hope you know what do I mean.

It doesn't matter the iteration as long as you have known how to deal lambda in the correct manner as shown into your posted codes.

Link to comment
Share on other sites

That is a very good practice and it seems that you are doing just fine with lambda function. :thumbsup:

Keep it up.

 

Thanks,

Infact my curiosity about this non-mapcar (lambda) thing was invoked after seeing some similar code of yours from some older thread. But back then I couldn't find that same thread to ask you there about this, so I was just remembering fragments of:

(
(lambda (x)
	...
)
-1
)

I was researching and asking myself "how did he used (lambda) without (mapcar/apply...) / without any list" "and what does -1 standed for". Until I've found these very good explanations: http://www.cadtutor.net/forum/showthread.php?52127-Mapcar-lambda-Description

I think that my questions are becomming more complex.. but I am happy that you are able to answer. :)

Link to comment
Share on other sites

I think that my questions are becomming more complex.. but I am happy that you are able to answer. :)

 

I think you have the intention to underestimate / insult me as you have insisted to repeat that here and THERE

 

So be sure that there won't be any direct reply from me to you at all from now on.

Link to comment
Share on other sites

I think you have the intention to underestimate / insult me as you have insisted to repeat that here and THERE

 

So be sure that there won't be any direct reply from me to you at all from now on.

 

You misunderstood me... what I've meant is that the very few answers I get from my lastest questions are from you and (maybe) someone else... which could mean that not anyone could be able to answer.

Link to comment
Share on other sites

IMO using (lambda) as in Tharwat's post #2 should be avoided for two reasons:

1.

It adds an unnecessary level of complexity to the program. In the example it only seems to be introduced to avoid a (progn) and a (setq).

2.

It will make the program much slower because every time the code runs the lambda function is redefined.

 

Let's not forget the KISS principle.

 

Grrr's code in post #8 could be simplified to:

(defun c:Test ( / len SS i e nSS)
 (if
   (and
     (setq SS (ssget "_:L" '((0 . "LINE,*POLYLINE"))))
     (setq len (getdist "\nSpecify Minimum length :"))
   )
   (progn
     (setq nSS (ssadd))
     (repeat (setq i (sslength SS))
       (setq e (ssname SS (setq i (1- i))))
       (if (< (vlax-curve-getdistatparam e (vlax-curve-getendparam e)) len)
         (ssadd e nSS)
       )
     )
     (sssetfirst nil nSS)
   )
 )
 (princ)
)

Link to comment
Share on other sites

The (ssget) filter can be improved:

(ssget
 "_:L"
 '(
   (-4 . "<OR") 
     (0 . "LINE")
     (0 . "LWPOLYLINE")
     (-4 . "<AND") 
       (0 . "POLYLINE")
       (-4 . "<NOT")
         (-4 . "&") (70 . 80) ; Exclude AcDbPolygonMesh (70 . 16) and AcDbPolyFaceMesh (70 . 64).
       (-4 . "NOT>")
     (-4 . "AND>")
   (-4 . "OR>")
 )
)

Link to comment
Share on other sites

Okay following the KSS principle, and an attempt to write something that would be more globally used:

[b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / SortAssocLstByNth SS oprec i ln e Lst ChsnItms nSS [b][color=FUCHSIA])[/color][/b]
[color=#8b4513];| Credits to: Lee Mac, Tharwat |;[/color]
[b][color=FUCHSIA]([/color][/b]defun SortAssocLstByNth [b][color=NAVY]([/color][/b] Lst Num / [b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]mapcar [b][color=MAROON]([/color][/b]function [b][color=GREEN]([/color][/b]lambda [b][color=BLUE]([/color][/b]x[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]nth x Lst[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
	[b][color=MAROON]([/color][/b]vl-sort-i Lst [b][color=GREEN]([/color][/b]function [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]nth Num a[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]nth Num b[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]setq SS [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"_I"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"LINE,*POLYLINE,SPLINE,ARC"[/color][b][color=RED])[/color][/b][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]progn [b][color=MAROON]([/color][/b]prompt [color=#2f4f4f]"\nSelect open curves to filter by their length: "[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setq SS [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"_:L"[/color] [b][color=BLUE]([/color][/b]list [b][color=RED]([/color][/b]cons 0 [color=#2f4f4f]"LINE,*POLYLINE,SPLINE,ARC"[/color][b][color=RED])[/color][/b][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]sssetfirst nil nil[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if SS
	[b][color=NAVY]([/color][/b]progn 
		[b][color=MAROON]([/color][/b]setq oprec [b][color=GREEN]([/color][/b]getvar 'luprec[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setvar 'luprec 1[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]sssetfirst nil nil[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]repeat [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]sslength SS[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq e [b][color=BLUE]([/color][/b]ssname SS [b][color=RED]([/color][/b]setq i [b][color=PURPLE]([/color][/b]1- i[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq ln [b][color=BLUE]([/color][/b]vlax-curve-getDistAtPoint e [b][color=RED]([/color][/b]vlax-curve-getEndPoint e[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]/= 0. ln [b][color=BLUE])[/color][/b] [color=#8b4513]; this means that the curve is closed[/color]
				[b][color=BLUE]([/color][/b]setq Lst [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]list e ln[b][color=PURPLE])[/color][/b] Lst[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]if Lst 
			[b][color=GREEN]([/color][/b]progn
				[b][color=BLUE]([/color][/b]setq Lst [b][color=RED]([/color][/b]SortAssocLstByNth Lst 1[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [color=#8b4513]; retain dupes[/color]
				[b][color=BLUE]([/color][/b]setq Lst [color=#8b4513]; convert to strings[/color]
					[b][color=RED]([/color][/b]mapcar '[b][color=PURPLE]([/color][/b]lambda [b][color=TEAL]([/color][/b]a b[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]list a [b][color=OLIVE]([/color][/b]rtos b [b][color=GRAY]([/color][/b]getvar 'lunits[b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]getvar 'luprec[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
					[b][color=PURPLE]([/color][/b]mapcar 'car Lst[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]mapcar 'cadr Lst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
				[b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]setq ChsnItms [b][color=PURPLE]([/color][/b]LM:FiltListBox [color=#2f4f4f]"Choose lengths to filter"[/color] [b][color=TEAL]([/color][/b]vl-sort [b][color=OLIVE]([/color][/b]mapcar 'cadr Lst[b][color=OLIVE])[/color][/b] '<[b][color=TEAL])[/color][/b] T[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [color=#8b4513]; remove dupes[/color]
					[b][color=RED]([/color][/b]progn 
						[b][color=PURPLE]([/color][/b]setq nSS [b][color=TEAL]([/color][/b]ssadd[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
						[b][color=PURPLE]([/color][/b]mapcar '[b][color=TEAL]([/color][/b]lambda [b][color=OLIVE]([/color][/b]x[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]ssadd x nSS[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
							[b][color=TEAL]([/color][/b]mapcar 'car [b][color=OLIVE]([/color][/b]vl-remove-if-not '[b][color=GRAY]([/color][/b]lambda [b][color=AQUA]([/color][/b]x[b][color=AQUA])[/color][/b] [b][color=AQUA]([/color][/b]member [b][color=LIME]([/color][/b]cadr x[b][color=LIME])[/color][/b] ChsnItms[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b] Lst[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
						[b][color=PURPLE])[/color][/b]
						[b][color=PURPLE]([/color][/b]sssetfirst nil nSS[b][color=PURPLE])[/color][/b]
					[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]setvar 'luprec oprec[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b][color=#8b4513]; if SS[/color]

[b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
[b][color=BLACK])[/color][/b][color=#8b4513];| defun |; [b][color=BLACK]([/color][/b]vl-load-com[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b][/color]



[color=#8b4513];;------------------=={ Filtered List Box }==-----------------;;[/color]
[color=#8b4513];;                                                            ;;[/color]
[color=#8b4513];;  Displays a list box interface from which the user may     ;;[/color]
[color=#8b4513];;  select one or more items. Includes an edit box filter     ;;[/color]
[color=#8b4513];;  to enable the user to filter the displayed list of items. ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]
[color=#8b4513];;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]
[color=#8b4513];;  Arguments:                                                ;;[/color]
[color=#8b4513];;  msg - List box dialog title                               ;;[/color]
[color=#8b4513];;  lst - List of strings to display in the list box          ;;[/color]
[color=#8b4513];;  mtp - Boolean flag to determine whether the user may      ;;[/color]
[color=#8b4513];;        select multiple items [b][color=BLACK]([/color][/b]T=Allow Multiple[b][color=BLACK])[/color][/b]            ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]
[color=#8b4513];;  Returns:  List of selected items, else nil.               ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]

[b][color=BLACK]([/color][/b]defun LM:FiltListBox [b][color=FUCHSIA]([/color][/b] msg lst mtp / _addlist dch dcl des rtn tmp [b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]defun _addlist [b][color=NAVY]([/color][/b] key lst [b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]start_list key[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]foreach x lst [b][color=MAROON]([/color][/b]add_list x[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]end_list[b][color=NAVY])[/color][/b]
	lst
[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if
	[b][color=NAVY]([/color][/b]and
		[b][color=MAROON]([/color][/b]setq dcl [b][color=GREEN]([/color][/b]vl-filename-mktemp nil nil [color=#2f4f4f]".dcl"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setq des [b][color=GREEN]([/color][/b]open dcl [color=#2f4f4f]"w"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]write-line
			[b][color=GREEN]([/color][/b]strcat
				[color=#2f4f4f]"filtlistbox : dialog { label = \"[/color][color=#2f4f4f]" msg "[/color]\[color=#2f4f4f]"; spacer;"[/color]
				[color=#2f4f4f]": list_box { key = \"[/color]lst\[color=#2f4f4f]"; width = 50; fixed_width = true; height = 15; fixed_height = true; allow_accept = true; "[/color]
				[color=#2f4f4f]"multiple_select = "[/color] [b][color=BLUE]([/color][/b]if mtp [color=#2f4f4f]"true"[/color] [color=#2f4f4f]"false"[/color][b][color=BLUE])[/color][/b] [color=#2f4f4f]"; }"[/color]
				[color=#2f4f4f]": edit_box { key = \"[/color]flt\[color=#2f4f4f]"; width = 50; fixed_width = true; label = \"[/color]Filter:\[color=#2f4f4f]"; }"[/color]
				[color=#2f4f4f]"spacer; ok_cancel; }"[/color]
			[b][color=GREEN])[/color][/b]
			des
		[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]close des[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]< 0 [b][color=GREEN]([/color][/b]setq dch [b][color=BLUE]([/color][/b]load_dialog dcl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]new_dialog [color=#2f4f4f]"filtlistbox"[/color] dch[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]progn
		[b][color=MAROON]([/color][/b]_addlist [color=#2f4f4f]"lst"[/color] [b][color=GREEN]([/color][/b]setq tmp lst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]set_tile [color=#2f4f4f]"lst"[/color] [b][color=GREEN]([/color][/b]setq rtn [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]set_tile [color=#2f4f4f]"flt"[/color] [color=#2f4f4f]"*"[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"lst"[/color] [color=#2f4f4f]"[b][color=GREEN]([/color][/b]setq rtn $value[b][color=GREEN])[/color][/b]"[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"flt"[/color]
			[b][color=GREEN]([/color][/b]vl-prin1-to-string
				'[b][color=BLUE]([/color][/b]progn
					[b][color=RED]([/color][/b]setq flt [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"*"[/color] [b][color=TEAL]([/color][/b]strcase $value[b][color=TEAL])[/color][/b] [color=#2f4f4f]"*"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
					[b][color=RED]([/color][/b]_addlist [color=#2f4f4f]"lst"[/color] [b][color=PURPLE]([/color][/b]setq tmp [b][color=TEAL]([/color][/b]vl-remove-if-not '[b][color=OLIVE]([/color][/b]lambda [b][color=GRAY]([/color][/b] x [b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]wcmatch [b][color=AQUA]([/color][/b]strcase x[b][color=AQUA])[/color][/b] flt[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] lst[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
					[b][color=RED]([/color][/b]set_tile [color=#2f4f4f]"lst"[/color] [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]< [b][color=OLIVE]([/color][/b]atoi rtn[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]length tmp[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] rtn [b][color=TEAL]([/color][/b]setq rtn [color=#2f4f4f]"0"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][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]setq rtn
			[b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]= 1 [b][color=RED]([/color][/b]start_dialog[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]mapcar '[b][color=RED]([/color][/b]lambda [b][color=PURPLE]([/color][/b] x [b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]nth x tmp[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]read [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"[b][color=TEAL]([/color][/b]"[/color] rtn [color=#2f4f4f]"[b][color=TEAL])[/color][/b]"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
			[b][color=GREEN])[/color][/b]
		[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]< 0 dch[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]setq dch [b][color=MAROON]([/color][/b]unload_dialog dch[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]= 'str [b][color=GREEN]([/color][/b]type dcl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]findfile dcl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]vl-file-delete dcl[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
rtn
[b][color=BLACK])[/color][/b]

Though, It still has sorting issue in the ListBox.

Link to comment
Share on other sites

@ Grrr:

 

  1. (ssget "_I" ..) will also select entities on locked layers.
  2. Regarding the sorting issue: See your own contribution here.
  3. Why do you use (SortAssocLstByNth)?
  4. (LM:FiltListBox) is not really suited for dealing with numerical values.
  5. You can also ssget-filter for open polylines, see code below.

(ssget
 "_:L"
 '(
   (-4 . "<OR")
     (0 . "ARC")
     (0 . "LINE")
     (0 . "SPLINE")
     (-4 . "<AND") 
       (0 . "*POLYLINE")
       (-4 . "<NOT")
         (-4 . "&") (70 . 81) ; Exclude closed polylines (70 . 1), AcDbPolygonMesh (70 . 16) and AcDbPolyFaceMesh (70 . 64).
       (-4 . "NOT>")
     (-4 . "AND>")
   (-4 . "OR>")
 )
)

Link to comment
Share on other sites

Hi Roy,

Thanks for the constructive criticism, however I was aware of steps 1,2,3,4 you mentioned,

To answer #3 - I used it, because I thought that (vl-sort) would remove duplicate elements from my list which were represented as (ename . lengthProp), but I've just tested that and it did not happen - so went back using (vl-sort).

The issue I had is that I wanted to display unique lengths in the LBox, say that there was a selection of 100 lines with length 60.0. In the listbox it would be enough to display the unique value, but in the same time I wanted all the enames in my assoc list (so upon choosing 60 all the 100 lines would be selected).

I tried, but in the end I gave up and just used LM's (LM:UniqueFuzz). Fixed the problems you mentioned:

[b][color=BLACK]([/color][/b]defun C:test [b][color=FUCHSIA]([/color][/b] / LayFtLst LM:UniqueFuzz SS oprec i ln e Lst ChsnItms nSS [b][color=FUCHSIA])[/color][/b]
[color=#8b4513];| Credits to: Lee Mac, Tharwat, Roy |;[/color]

[b][color=FUCHSIA]([/color][/b]setq LayFtLst
	'[b][color=NAVY]([/color][/b] [b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"<OR"[/color][b][color=MAROON])[/color][/b] 
		[b][color=MAROON]([/color][/b]0 . [color=#2f4f4f]"ARC"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]0 . [color=#2f4f4f]"LINE"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]0 . [color=#2f4f4f]"SPLINE"[/color][b][color=MAROON])[/color][/b] 
		[b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"<AND"[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]0 . [color=#2f4f4f]"*POLYLINE"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"<NOT"[/color][b][color=MAROON])[/color][/b][b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"&"[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]70 . 81[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"NOT>"[/color][b][color=MAROON])[/color][/b][color=#8b4513]; [b][color=MAROON]([/color][/b]70 .81[b][color=MAROON])[/color][/b] Excludes closed polylines [b][color=MAROON]([/color][/b]70 . 1[b][color=MAROON])[/color][/b], AcDbPolygonMesh [b][color=MAROON]([/color][/b]70 . 16[b][color=MAROON])[/color][/b] and AcDbPolyFaceMesh [b][color=MAROON]([/color][/b]70 . 64[b][color=MAROON])[/color][/b].[/color]
		[b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"AND>"[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]-4 . [color=#2f4f4f]"OR>"[/color][b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b][color=#8b4513]; setq[/color]

[color=#8b4513];; Unique with Fuzz  -  Lee Mac[/color]
[color=#8b4513];; Returns a list with all elements considered duplicate to[/color]
[color=#8b4513];; a given tolerance removed.[/color]

[b][color=FUCHSIA]([/color][/b]defun LM:UniqueFuzz [b][color=NAVY]([/color][/b] l f / x r [b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]while l
		[b][color=MAROON]([/color][/b]setq x [b][color=GREEN]([/color][/b]car l[b][color=GREEN])[/color][/b]
			l [b][color=GREEN]([/color][/b]vl-remove-if [b][color=BLUE]([/color][/b]function [b][color=RED]([/color][/b]lambda [b][color=PURPLE]([/color][/b] y [b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]equal x y f[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]cdr l[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			r [b][color=GREEN]([/color][/b]cons x r[b][color=GREEN])[/color][/b]
		[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]reverse r[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]not [b][color=MAROON]([/color][/b]setq SS [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]":L-I"[/color] LayFtLst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [color=#8b4513];<- shotouts to 'dbroad' [b][color=NAVY]([/color][/b]This is undocumented[b][color=NAVY])[/color][/b].[/color]
	[b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]prompt [color=#2f4f4f]"\nSelect open curves to filter by their length: "[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setq SS [b][color=GREEN]([/color][/b]ssget [color=#2f4f4f]"_:L"[/color] LayFtLst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]sssetfirst nil nil[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if SS
	[b][color=NAVY]([/color][/b]progn 
		[b][color=MAROON]([/color][/b]setq oprec [b][color=GREEN]([/color][/b]getvar 'luprec[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setvar 'luprec 1[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]sssetfirst nil nil[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]repeat [b][color=GREEN]([/color][/b]setq i [b][color=BLUE]([/color][/b]sslength SS[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq e [b][color=BLUE]([/color][/b]ssname SS [b][color=RED]([/color][/b]setq i [b][color=PURPLE]([/color][/b]1- i[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[b][color=GREEN]([/color][/b]setq ln [b][color=BLUE]([/color][/b]vlax-curve-getDistAtPoint e [b][color=RED]([/color][/b]vlax-curve-getEndPoint e[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b]
			[color=#8b4513]; [b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]/= 0. ln [b][color=BLUE])[/color][/b] ; this means that the curve is closed [b][color=BLUE]([/color][/b]now useless when I added [color=#2f4f4f]"LayFtLst"[/color][b][color=BLUE])[/color][/b][/color]
				[b][color=BLUE]([/color][/b]setq Lst [b][color=RED]([/color][/b]cons [b][color=PURPLE]([/color][/b]list e ln[b][color=PURPLE])[/color][/b] Lst[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
			[color=#8b4513]; [b][color=GREEN])[/color][/b][/color]
		[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]if Lst 
			[b][color=GREEN]([/color][/b]progn
				[b][color=BLUE]([/color][/b]setq Lst [b][color=RED]([/color][/b]vl-sort Lst [b][color=PURPLE]([/color][/b]function [b][color=TEAL]([/color][/b]lambda [b][color=OLIVE]([/color][/b]a b[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]< [b][color=GRAY]([/color][/b]cadr a[b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]cadr b[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]setq Lst [color=#8b4513]; convert to strings[/color]
					[b][color=RED]([/color][/b]mapcar '[b][color=PURPLE]([/color][/b]lambda [b][color=TEAL]([/color][/b]a b[b][color=TEAL])[/color][/b] [b][color=TEAL]([/color][/b]list a [b][color=OLIVE]([/color][/b]rtos b [b][color=GRAY]([/color][/b]getvar 'lunits[b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]getvar 'luprec[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
					[b][color=PURPLE]([/color][/b]mapcar 'car Lst[b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]mapcar 'cadr Lst[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
				[b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]setq ChsnItms [b][color=PURPLE]([/color][/b]LM:FiltListBox [color=#2f4f4f]"Choose lengths to filter"[/color] [b][color=TEAL]([/color][/b]LM:UniqueFuzz [b][color=OLIVE]([/color][/b]mapcar 'cadr Lst[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]getvar 'luprec[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] T[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [color=#8b4513]; remove dupes[/color]
					[b][color=RED]([/color][/b]progn 
						[b][color=PURPLE]([/color][/b]setq nSS [b][color=TEAL]([/color][/b]ssadd[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b]
						[b][color=PURPLE]([/color][/b]mapcar '[b][color=TEAL]([/color][/b]lambda [b][color=OLIVE]([/color][/b]x[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]ssadd x nSS[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
							[b][color=TEAL]([/color][/b]mapcar 'car [b][color=OLIVE]([/color][/b]vl-remove-if-not '[b][color=GRAY]([/color][/b]lambda [b][color=AQUA]([/color][/b]x[b][color=AQUA])[/color][/b] [b][color=AQUA]([/color][/b]member [b][color=LIME]([/color][/b]cadr x[b][color=LIME])[/color][/b] ChsnItms[b][color=AQUA])[/color][/b][b][color=GRAY])[/color][/b] Lst[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b]
						[b][color=PURPLE])[/color][/b]
						[b][color=PURPLE]([/color][/b]sssetfirst nil nSS[b][color=PURPLE])[/color][/b]
						[b][color=PURPLE]([/color][/b]vla-Regen [b][color=TEAL]([/color][/b]vla-get-ActiveDocument [b][color=OLIVE]([/color][/b]vlax-get-acad-object[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] acActiveViewport[b][color=PURPLE])[/color][/b]
					[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]setvar 'luprec oprec[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b][color=#8b4513]; if SS[/color]

[b][color=FUCHSIA]([/color][/b]princ[b][color=FUCHSIA])[/color][/b]
[b][color=BLACK])[/color][/b][color=#8b4513];| defun |; [b][color=BLACK]([/color][/b]vl-load-com[b][color=BLACK])[/color][/b] [b][color=BLACK]([/color][/b]princ[b][color=BLACK])[/color][/b][/color]



[color=#8b4513];;------------------=={ Filtered List Box }==-----------------;;[/color]
[color=#8b4513];;                                                            ;;[/color]
[color=#8b4513];;  Displays a list box interface from which the user may     ;;[/color]
[color=#8b4513];;  select one or more items. Includes an edit box filter     ;;[/color]
[color=#8b4513];;  to enable the user to filter the displayed list of items. ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]
[color=#8b4513];;  Author: Lee Mac, Copyright © 2013 - www.lee-mac.com       ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]
[color=#8b4513];;  Arguments:                                                ;;[/color]
[color=#8b4513];;  msg - List box dialog title                               ;;[/color]
[color=#8b4513];;  lst - List of strings to display in the list box          ;;[/color]
[color=#8b4513];;  mtp - Boolean flag to determine whether the user may      ;;[/color]
[color=#8b4513];;        select multiple items [b][color=BLACK]([/color][/b]T=Allow Multiple[b][color=BLACK])[/color][/b]            ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]
[color=#8b4513];;  Returns:  List of selected items, else nil.               ;;[/color]
[color=#8b4513];;------------------------------------------------------------;;[/color]

[b][color=BLACK]([/color][/b]defun LM:FiltListBox [b][color=FUCHSIA]([/color][/b] msg lst mtp / _addlist dch dcl des rtn tmp [b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]defun _addlist [b][color=NAVY]([/color][/b] key lst [b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]start_list key[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]foreach x lst [b][color=MAROON]([/color][/b]add_list x[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]end_list[b][color=NAVY])[/color][/b]
	lst
[b][color=FUCHSIA])[/color][/b]

[b][color=FUCHSIA]([/color][/b]if
	[b][color=NAVY]([/color][/b]and
		[b][color=MAROON]([/color][/b]setq dcl [b][color=GREEN]([/color][/b]vl-filename-mktemp nil nil [color=#2f4f4f]".dcl"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]setq des [b][color=GREEN]([/color][/b]open dcl [color=#2f4f4f]"w"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]write-line
			[b][color=GREEN]([/color][/b]strcat
				[color=#2f4f4f]"filtlistbox : dialog { label = \"[/color][color=#2f4f4f]" msg "[/color]\[color=#2f4f4f]"; spacer;"[/color]
				[color=#2f4f4f]": list_box { key = \"[/color]lst\[color=#2f4f4f]"; width = 50; fixed_width = true; height = 15; fixed_height = true; allow_accept = true; "[/color]
				[color=#2f4f4f]"multiple_select = "[/color] [b][color=BLUE]([/color][/b]if mtp [color=#2f4f4f]"true"[/color] [color=#2f4f4f]"false"[/color][b][color=BLUE])[/color][/b] [color=#2f4f4f]"; }"[/color]
				[color=#2f4f4f]": edit_box { key = \"[/color]flt\[color=#2f4f4f]"; width = 50; fixed_width = true; label = \"[/color]Filter:\[color=#2f4f4f]"; }"[/color]
				[color=#2f4f4f]"spacer; ok_cancel; }"[/color]
			[b][color=GREEN])[/color][/b]
			des
		[b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]not [b][color=GREEN]([/color][/b]close des[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]< 0 [b][color=GREEN]([/color][/b]setq dch [b][color=BLUE]([/color][/b]load_dialog dcl[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]new_dialog [color=#2f4f4f]"filtlistbox"[/color] dch[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]progn
		[b][color=MAROON]([/color][/b]_addlist [color=#2f4f4f]"lst"[/color] [b][color=GREEN]([/color][/b]setq tmp lst[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]set_tile [color=#2f4f4f]"lst"[/color] [b][color=GREEN]([/color][/b]setq rtn [color=#2f4f4f]"0"[/color][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]set_tile [color=#2f4f4f]"flt"[/color] [color=#2f4f4f]"*"[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"lst"[/color] [color=#2f4f4f]"[b][color=GREEN]([/color][/b]setq rtn $value[b][color=GREEN])[/color][/b]"[/color][b][color=MAROON])[/color][/b]
		[b][color=MAROON]([/color][/b]action_tile [color=#2f4f4f]"flt"[/color]
			[b][color=GREEN]([/color][/b]vl-prin1-to-string
				'[b][color=BLUE]([/color][/b]progn
					[b][color=RED]([/color][/b]setq flt [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"*"[/color] [b][color=TEAL]([/color][/b]strcase $value[b][color=TEAL])[/color][/b] [color=#2f4f4f]"*"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
					[b][color=RED]([/color][/b]_addlist [color=#2f4f4f]"lst"[/color] [b][color=PURPLE]([/color][/b]setq tmp [b][color=TEAL]([/color][/b]vl-remove-if-not '[b][color=OLIVE]([/color][/b]lambda [b][color=GRAY]([/color][/b] x [b][color=GRAY])[/color][/b] [b][color=GRAY]([/color][/b]wcmatch [b][color=AQUA]([/color][/b]strcase x[b][color=AQUA])[/color][/b] flt[b][color=GRAY])[/color][/b][b][color=OLIVE])[/color][/b] lst[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b]
					[b][color=RED]([/color][/b]set_tile [color=#2f4f4f]"lst"[/color] [b][color=PURPLE]([/color][/b]if [b][color=TEAL]([/color][/b]< [b][color=OLIVE]([/color][/b]atoi rtn[b][color=OLIVE])[/color][/b] [b][color=OLIVE]([/color][/b]length tmp[b][color=OLIVE])[/color][/b][b][color=TEAL])[/color][/b] rtn [b][color=TEAL]([/color][/b]setq rtn [color=#2f4f4f]"0"[/color][b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][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]setq rtn
			[b][color=GREEN]([/color][/b]if [b][color=BLUE]([/color][/b]= 1 [b][color=RED]([/color][/b]start_dialog[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
				[b][color=BLUE]([/color][/b]mapcar '[b][color=RED]([/color][/b]lambda [b][color=PURPLE]([/color][/b] x [b][color=PURPLE])[/color][/b] [b][color=PURPLE]([/color][/b]nth x tmp[b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b] [b][color=RED]([/color][/b]read [b][color=PURPLE]([/color][/b]strcat [color=#2f4f4f]"[b][color=TEAL]([/color][/b]"[/color] rtn [color=#2f4f4f]"[b][color=TEAL])[/color][/b]"[/color][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b]
			[b][color=GREEN])[/color][/b]
		[b][color=MAROON])[/color][/b]
	[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]< 0 dch[b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]setq dch [b][color=MAROON]([/color][/b]unload_dialog dch[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
[b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]and [b][color=MAROON]([/color][/b]= 'str [b][color=GREEN]([/color][/b]type dcl[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]findfile dcl[b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b]
	[b][color=NAVY]([/color][/b]vl-file-delete dcl[b][color=NAVY])[/color][/b]
[b][color=FUCHSIA])[/color][/b]
rtn
[b][color=BLACK])[/color][/b]

Also I incorporated your suggested ssget filter, and your name in the code, if that matters.

Btw I like your critics. :)

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