请尝试以下修改的代码:
- (defun c:l2c ( / ent )
- (if (or (and (setq ent (ssget "_I" '((0 . "LINE"))))
- (setq ent (ssname ent 0))
- )
- (setq ent (LM:selectifobject "\nSelect line: " "LINE"))
- )
- (if (LM:copytoclipboard
- (LM:lst->str
- (mapcar 'rtos
- (append
- (cdr (assoc 10 (entget ent)))
- (cdr (assoc 11 (entget ent)))
- )
- )
- "\t"
- )
- )
- (princ "\nLine endpoints copied to clipboard.")
- )
- )
- (princ)
- )
-
- ;; Same method as MP demonstrates here: http://bit.ly/170kacW
- (defun LM:copytoclipboard ( str / clp htm par rtn )
- (if (setq htm (vlax-create-object "htmlfile"))
- (progn
- (setq rtn
- (vl-catch-all-apply
- '(lambda ( )
- (setq par (vlax-get htm 'parentwindow)
- clp (vlax-get par 'clipboarddata)
- )
- (vlax-invoke clp 'setdata "Text" str)
- )
- )
- )
- (foreach obj (list clp par htm)
- (if (= 'vla-object (type obj))
- (vlax-release-object obj)
- )
- )
- (if (not (vl-catch-all-error-p rtn)) str)
- )
- )
- )
- ;; Select if Object - Lee Mac
- ;; Continuously prompts the user for a selection of a specific object type
- (defun LM:selectifobject ( msg typ / ent )
- (while
- (progn (setvar 'errno 0) (setq ent (car (entsel msg)))
- (cond
- ( (= 7 (getvar 'errno))
- (princ "\nMissed, try again.")
- )
- ( (null ent) nil)
- ( (not (wcmatch (cdr (assoc 0 (entget ent))) typ))
- (princ "\nInvalid object selected.")
- )
- )
- )
- )
- ent
- )
- ;; List to String - Lee Mac
- ;; Concatenates each string in a supplied list, separated by a given delimiter
- ;; lst - [lst] List of strings to concatenate
- ;; del - [str] Delimiter string to separate each item
- (defun LM:lst->str ( lst del )
- (if (cdr lst)
- (strcat (car lst) del (LM:lst->str (cdr lst) del))
- (car lst)
- )
- )
- (vl-load-com) (princ)
|