好的,这样可以:
- (defun c:pljoin (/ *error* varLst oldVars oLst plnum ss)
- ;; --- Error Trap ---
- (defun *error* (msg)
- (mapcar 'setvar varLst oldVars)
- (if (= msg "")
- (princ "\nFunction Complete.")
- (princ (strcat "\n" (strcase msg)))
- ) ;_ end if
- (princ)
- ) ; end of *error*
- (setq varLst (list "CMDECHO" "PEDITACCEPT")
- oldVars (mapcar 'getvar varLst)
- ) ; end setq
- ;; --- Error Trap ---
- (vl-load-com)
- (vlax-for l
- (vla-get-Layers
- (vla-get-ActiveDocument
- (vlax-get-acad-object)
- ) ;_ end vla-get-ActiveDocument
- ) ;_ end vla-get-Layers
- (setq oLst
- (cons (vla-get-Name l) oLst)
- ) ; end setq
- ) ; end vlax-for
- (setq oLst (reverse oLst))
- (setvar "cmdecho" 0)
- (setvar "PEDITACCEPT" 0)
- (setq plnum 0)
- (foreach lay oLst
- (if
- (setq ss (ssget "X"
- (list (cons 0 "LINE")
- (cons 410 (getvar "ctab"))
- (cons 8 lay)
- ) ;_ end list
- ) ;_ end ssget
- ) ;_ end setq
- (progn
- (command "_pedit" "M" ss "" "Y" "J" "0.0" "")
- (setq plnum (+ (sslength ss) plnum))
- ) ;_ end progn
- ) ;_ end if
- ) ;_ end foreach
- (*error* "")
- (alert (strcat (rtos plnum 2 0) " Polylines Created/Joined."))
- (princ)
- ) ;_ end defun
|