It has more issues than Time magazine. Probably better rewriting something from scratch.
I fixed the first 2 issues that came up, then there were more after that and I ran out of spare time to work on it.
;; This global list will store the clean names for selection
(defun-q *block_name_list*)
Was the error you mentioned.
Once fixed more came up.
Yes - replace the following section of your code with my replacement.
REPLACE THIS
(action_tile "highlight"
"(progn
(setq selected_index (atoi (get_tile \"block_tree\")))
(setq selected_block (nth selected_index *block_name_list*))
(princ (strcat \"\nHighlighting all instances of: \" selected_block))
(sssetfirst nil nil) ; Clear any previous selection grips
(setq ss (ssget \"_X\" (list (cons 0 \"INSERT\") (cons 2 selected_block) (cons 410 (getvar 'ctab)))))
(if ss (sssetfirst nil ss)) ; Highlight all found instances in current space
)"
)
WITH THIS
(action_tile "highlight"
(strcat
"(progn"
" (setq selected_index (atoi (get_tile \"block_tree\")))"
" (setq selected_block (nth selected_index *block_name_list*))"
" (princ (strcat \"\nHighlighting all instances of: \" selected_block))"
" (sssetfirst nil nil)" ; Clear any previous selection grips
" (setq ss (ssget \"_X\" (list (cons 0 \"INSERT\") (cons 2 selected_block) (cons 410 (getvar 'ctab)))))"
" (if ss (sssetfirst nil ss))" ; Highlight all found instances in current space
")"
)
)
The DCL and the LISP file must both be in an AutoCAD support path.
I got it now, very fast double extend now.
Current settings: Projection=UCS, Edge=None, Mode=Standard then Fence option.
If I recall you used to be able to double extend with crossing as well.
If I get time I'll dig a little deeper.
You have to be careful any extra crossings will send the extend through the closed shapes.
The selection method used by that program can be boiled down to the following in its simplest terms:
(defun c:test ( / sel )
(initget "Settings Exit")
(setq sel (entsel "\nSelect an object [Settings/Exit]: "))
)
From there, simply test the result type and branch accordingly:
(defun c:test ( / sel )
(initget "Settings Exit")
(setq sel (entsel "\nSelect an object [Settings/Exit]: "))
(cond
( (or (null sel) (= "Exit" sel))
(princ "\nUser exited.")
)
( (= "Settings" sel)
(princ "\nUser selected Settings.")
)
( (princ "\nUser selected a(n) ")
(princ (cdr (assoc 0 (entget (car sel)))))
)
)
(princ)
)