AutoCad has a way to pick a line if it is exactly on top ( or underneath as the case may be )another line. You can hold down the control key and then keep clicking on the line until the one you want is ghosted. Then by hitting the return key the line is selected.
Can something similar be done in IC ??
#2
BJ,
Though not as elegant as the Autocad method, here is a Lisp program that does something similar. See if it works for you. This program has not been extensively tested, as I wrote it last night.
; csd.lsp - Cyclical selection display. Cycles through a user-selected
; set of entities. The last highlighted entity is stored as a
; selection. May be retrieved in subsequent commands with "P".
;
; 6-26-07
(defun csd_error (msg)
(setq *error* sys_error)
(command ".SELECT" refname "")
(setvar "cmdecho" 1)
(setq sset nil)
(princ)
)
(defun c:csd (/ sslen obnames p)
(setq sys_error *error*)
(setq *error* csd_error)
(setvar "cmdecho" 0)
(princ "\nSequential display ...")
(setq sset (ssget))
(if sset
(progn
(setq sslen (sslength sset))
(setq sslen (- sslen 1))
(while (not (minusp sslen))
(setq refname (ssname sset sslen))
(setq obnames (cons refname obnames))
(setq sslen (- sslen 1))
)
(while T
(redraw)
(setq refname (car obnames))
(setq obnames (cdr obnames))
(setq obnames (reverse obnames))
(setq obnames (cons refname obnames))
(setq obnames (reverse obnames))
(redraw refname 3)
(setq p (getstring " Hit <Space> or <Enter> for next entity. <Esc> to select."))
(terpri)(terpri)
)
) ; progn
) ; if sset
(setvar "cmdecho" 1)
(setq sset nil)
(setq *error* sys_error)
(princ)
)
Though not as elegant as the Autocad method, here is a Lisp program that does something similar. See if it works for you. This program has not been extensively tested, as I wrote it last night.
; csd.lsp - Cyclical selection display. Cycles through a user-selected
; set of entities. The last highlighted entity is stored as a
; selection. May be retrieved in subsequent commands with "P".
;
; 6-26-07
(defun csd_error (msg)
(setq *error* sys_error)
(command ".SELECT" refname "")
(setvar "cmdecho" 1)
(setq sset nil)
(princ)
)
(defun c:csd (/ sslen obnames p)
(setq sys_error *error*)
(setq *error* csd_error)
(setvar "cmdecho" 0)
(princ "\nSequential display ...")
(setq sset (ssget))
(if sset
(progn
(setq sslen (sslength sset))
(setq sslen (- sslen 1))
(while (not (minusp sslen))
(setq refname (ssname sset sslen))
(setq obnames (cons refname obnames))
(setq sslen (- sslen 1))
)
(while T
(redraw)
(setq refname (car obnames))
(setq obnames (cdr obnames))
(setq obnames (reverse obnames))
(setq obnames (cons refname obnames))
(setq obnames (reverse obnames))
(redraw refname 3)
(setq p (getstring " Hit <Space> or <Enter> for next entity. <Esc> to select."))
(terpri)(terpri)
)
) ; progn
) ; if sset
(setvar "cmdecho" 1)
(setq sset nil)
(setq *error* sys_error)
(princ)
)
Updated CDS program
#4BJ, I don't know if you ever used the CSD program, but here is an updated version with some improvements. If you used it often, you could assign it to a function key.
; csd.lsp - Cyclical selection display. Cycles through a user-selected
; set of entities until stopped with <Esc>. Entities may be
; preselected (if pickfirst sysvar is ON) or selected during the
; function. The last highlighted entity is selected and gripped.
; If you intend to delete the selection, you can save a keystroke
; by pressing the Delete key within CSD, which will force CSD to
; exit and the selected entity will be deleted.
;
; 6-26-07 First working.
; 7-02-07 Added sequence repeat message.
; 11-04-07 Changed error trap to set grips on the selected entity.
(defun csd_error (msg / refsel)
(setq *error* sys_error)
(setq refsel (ssadd refname))
(sssetfirst refsel refsel)
(setq refsel nil)
(setq sset nil)
(princ)
)
(defun c:csd (/ firstcycle sslen obnames firstname p)
(setq sys_error *error*)
(setq *error* csd_error)
(setq firstcycle T)
(princ "\nSequential display ...")
(setq sset (ssget))
(if sset
(progn
(setq sslen (sslength sset))
(setq firstname (ssname sset 0))
(setq sslen (- sslen 1))
(while (not (minusp sslen))
(setq refname (ssname sset sslen))
(setq obnames (cons refname obnames))
(setq sslen (- sslen 1))
)
(while T
(redraw)
(setq refname (car obnames))
(setq obnames (cdr obnames))
(setq obnames (reverse obnames))
(setq obnames (cons refname obnames))
(setq obnames (reverse obnames))
(if (not firstcycle)
(if (eq refname firstname) (princ "\nRepeating sequence ...")
)
)
(setq firstcycle nil)
(redraw refname 3)
(setq p (getstring " Hit <Space> or <Enter> for next entity. <Esc> to select."))
(terpri)(terpri)
)
) ; progn
) ; if sset
(setvar "cmdecho" 1)
(setq sset nil)
(setq *error* sys_error)
(princ)
)
; csd.lsp - Cyclical selection display. Cycles through a user-selected
; set of entities until stopped with <Esc>. Entities may be
; preselected (if pickfirst sysvar is ON) or selected during the
; function. The last highlighted entity is selected and gripped.
; If you intend to delete the selection, you can save a keystroke
; by pressing the Delete key within CSD, which will force CSD to
; exit and the selected entity will be deleted.
;
; 6-26-07 First working.
; 7-02-07 Added sequence repeat message.
; 11-04-07 Changed error trap to set grips on the selected entity.
(defun csd_error (msg / refsel)
(setq *error* sys_error)
(setq refsel (ssadd refname))
(sssetfirst refsel refsel)
(setq refsel nil)
(setq sset nil)
(princ)
)
(defun c:csd (/ firstcycle sslen obnames firstname p)
(setq sys_error *error*)
(setq *error* csd_error)
(setq firstcycle T)
(princ "\nSequential display ...")
(setq sset (ssget))
(if sset
(progn
(setq sslen (sslength sset))
(setq firstname (ssname sset 0))
(setq sslen (- sslen 1))
(while (not (minusp sslen))
(setq refname (ssname sset sslen))
(setq obnames (cons refname obnames))
(setq sslen (- sslen 1))
)
(while T
(redraw)
(setq refname (car obnames))
(setq obnames (cdr obnames))
(setq obnames (reverse obnames))
(setq obnames (cons refname obnames))
(setq obnames (reverse obnames))
(if (not firstcycle)
(if (eq refname firstname) (princ "\nRepeating sequence ...")
)
)
(setq firstcycle nil)
(redraw refname 3)
(setq p (getstring " Hit <Space> or <Enter> for next entity. <Esc> to select."))
(terpri)(terpri)
)
) ; progn
) ; if sset
(setvar "cmdecho" 1)
(setq sset nil)
(setq *error* sys_error)
(princ)
)