找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2229|回复: 12

[求助] [求助]:求助:一个经典lisp,如何在CAD2008 里也能用

[复制链接]
发表于 2009-2-24 21:31:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
请教各位高手:有个经典LISP 可以用于属性块、文字、标注 等互相进行文字替换,命令为T,原来是CT, 可以在2006里用,但是在CAD2008里就无法使用,那位高手可以帮忙 转化下, 多谢!

;;COPY TEXT FROM ONE ENTITIES TO MANY
;;BY ERIC WONG
;;Modified at 05-07-2005 At Table support on Ctext
;;;------------------------------------------------------------------------
(defun C:CTEXT (/      CTEXT1 ENTP   ESEL   ESEL2  ENT          ENTX         SS
                SSM    SSN    SS1    EG1    EG2           CT_HL  ATTLIST
                EP1    EP2    ROWNO  COLNO
               )
  (setq CT_HL (getvar "HIGHLIGHT"))
  (setvar "HIGHLIGHT" 1)
  (while (= NIL ENTP)
    (setq ENTP (entsel "\nSelect Text or Attribute to be copied:"))
  )
  (redraw (setq ENT (car ENTP)) 3)
  (setq ENTX (vlax-ename->vla-object ENT))
  ;;SOURCE TEXT
  (cond
    ((= (cdr (assoc 0 (entget ENT))) "INSERT")
     (vl-load-com)
     (setq ESEL          (car (nentselp (cadr ENTP)))
           CTEXT1 (vla-get-textstring (vlax-ename->vla-object ESEL))
     )
    )
    ((wcmatch (cdr (assoc 0 (entget ENT))) "*TEXT")
     (setq CTEXT1 (cdr (assoc 1 (entget ENT))))
    )
    ((= (cdr (assoc 0 (entget ENT))) "DIMENSION")
     (if (= "" (setq CTEXT1 (vla-get-textoverride ENTX)))
       (cond ((vlax-property-available-p ENTX 'ROUNDDISTANCE)
              (setq CTEXT1 (rtos (ACET-CALC-ROUND
                                   (vla-get-measurement ENTX)
                                   (vla-get-rounddistance ENTX)
                                 )
                                 2
                                 (vla-get-primaryunitsprecision ENTX)
                           )
              )
             )
             ((vlax-property-available-p ENTX 'ANGLEFORMAT)
              (setq CTEXT1 (strcat (rtos (RTD (vla-get-measurement ENTX))
                                         2
                                         (vla-get-textprecision ENTX)
                                   )
                                   "%%d"
                           )
              )
             )
       )
     )
    )
    ((= (cdr (assoc 0 (entget ENT))) "ACAD_TABLE")
     (= EG1 "ACAD_TABLE")
     (setq EG2 (car (nentselp (cadr ENTP))))
     (if (wcmatch (cdr (assoc 0 (entget EG2))) "*TEXT")
       (progn (vla-hittest
                (vlax-ename->vla-object (car ENTP))
                (vlax-3d-point (cadr ENTP))
                (vla-get-direction
                  (vla-get-activeviewport
                    (vla-get-activedocument (vlax-get-acad-object))
                  )
                )
                'ROWNO
                'COLNO
              )
              (setq CTEXT1 (vla-gettext
                             (vlax-ename->vla-object (car ENTP))
                             ROWNO
                             COLNO
                           )
              )
       )
       (progn (princ "\nNo Text Selected in Table.") (exit))
     )
    )
  )
  (if (= NIL CTEXT1)
    (progn (princ "\nNo Text can be copy!") (exit))
  )
  (princ "\nText are copied to :")
  (setq EP1 (entsel))
  ;;DESTINATION TEXT
  (if (/= NIL EP1)
    (while (/= NIL EP1)
      (redraw ENT 4)
      (setq EG1 (cdr (assoc 0 (entget (car EP1)))))
      (cond
        ((wcmatch EG1 "*TEXT")
         (if (= "ARCALIGNEDTEXT" EG1)
           (vlax-put-property
             (vlax-ename->vla-object (car EP1))
             'CONTENTS
             CTEXT1
           )
           (vla-put-textstring
             (vlax-ename->vla-object (car EP1))
             CTEXT1
           )
         )
        )
        ((= EG1 "DIMENSION")
         (entmod (subst        (cons 1 CTEXT1)
                        (assoc 1 (entget (car EP1)))
                        (entget (car EP1))
                 )
         )
        )
        ((= EG1 "INSERT")
         (setq EG2 (car (nentselp (cadr EP1))))
         (if (= (cdr (assoc 0 (entget EG2))) "ATTRIB")
           (vla-put-textstring (vlax-ename->vla-object EG2) CTEXT1)
           (progn (princ "\nNot match Attribute.") (exit))
         )
        )
        ((= EG1 "ACAD_TABLE")
         (setq EG2 (car (nentselp (cadr EP1))))
         (if (wcmatch (cdr (assoc 0 (entget EG2))) "*TEXT")
           (progn (vla-hittest
                    (vlax-ename->vla-object (car EP1))
                    (vlax-3d-point (cadr EP1))
                    (vla-get-direction
                      (vla-get-activeviewport
                        (vla-get-activedocument (vlax-get-acad-object))
                      )
                    )
                    'ROWNO
                    'COLNO
                  )
                  (vla-settext
                    (vlax-ename->vla-object (car EP1))
                    ROWNO
                    COLNO
                    CTEXT1
                  )
                  (vla-recomputetableblock
                    (vlax-ename->vla-object (car EP1))
                    :vlax-true
                  )
           )
           (progn (princ "\nNo Text Selected in Table.") (exit))
         )
        )
      )
      (setq EP1 (entsel))
    )
    (progn
      (setq SS        (ssget '((0 . "TEXT,MTEXT,DIMENSION,INSERT,ARCALIGNEDTEXT"))
                )
            SSM        (sslength SS)
            SSN        0
      )                                        ;SETQ
      (redraw ENT 4)
      (repeat SSM
        (setq SS1      (ssname SS SSN)
              EG1      (cdr (assoc 0 (entget SS1)))
              ATTLIST  NIL
              ATTLIST2 NIL
              SSN      (1+ SSN)
        )
        (cond
          ((wcmatch EG1 "*TEXT")
           (if (= "ARCALIGNEDTEXT" EG1)
             (vlax-put-property
               (vlax-ename->vla-object SS1)
               'CONTENTS
               CTEXT1
             )
             (vla-put-textstring (vlax-ename->vla-object SS1) CTEXT1)
           )
          )
          ((= EG1 "DIMENSION")
           (vla-put-textoverride (vlax-ename->vla-object SS1) CTEXT1)
          )
          ((= EG1 "INSERT")
           (if (/= :vlax-false
                   (vla-get-hasattributes (vlax-ename->vla-object SS1))
               )
             (progn
               (setq ATTLIST (vlax-safearray->list
                               (vlax-variant-value
                                 (vla-getattributes
                                   (vlax-ename->vla-object SS1)
                                 )
                               )
                             )
               )
               (if (= 1 (length ATTLIST))
                 (vla-put-textstring (car ATTLIST) CTEXT1)
                 (progn
                   (if (= NIL ESEL2)
                     (progn (princ "\nPlease Specify Attribute Tag :")
                            (setq ESEL2        (vla-get-tagstring
                                          (vlax-ename->vla-object
                                            (car (nentselp))
                                          )
                                        )
                            )
                     )
                   )
                   (setq ATTLIST2 (vl-remove-if-not
                                    '(lambda (X)
                                       (= ESEL2 (vla-get-tagstring X))
                                     )
                                    ATTLIST
                                  )
                   )
                   (if (= NIL ATTLIST2)
                     (princ "\nNot match Attribute.")
                     (vla-put-textstring (car ATTLIST2) CTEXT1)
                   )
                 )
               )
             )
             (princ "\nBlock has no attributes")
           )
          )
        )
      )                                        ;repeat
    )
  )                                        ;if
  (setvar "HIGHLIGHT" CT_HL)
  (defun ROUND (N) (* (SIGNOF N) (fix (+ (abs N) 0.5))))
  ;; Signof - returns -1 or 1 for sign of number
  (defun SIGNOF        (N)
    (if        (minusp N)
      -1
      1
    )
  )
  (princ)
) ;_ end of DEFUN
;;;------------------------------------------------------------------------
(defun C:CTEXTM        (/            TSS               TSSL          TSSN             SORTD
                 TXTENT            TXTELIST   PTLIST          COMBOLIST  COMBOLISTS
                 TXTLISTS   TSS2       TSS2L          TSS2N             TXTENT2
                 TXTELIST2  PTLIST2    COMBOLIST2 COMBOLIST2S
                 TXTELIST2S
                )
  (princ "\nSelects a column of Text(s) to copy from :")
  (setq        TSS  (ssget '((-4 . "<OR") (0 . "*TEXT") (0 . "DIMENSION") (-4 . "OR>")))
        TSSL (sslength TSS)
        TSSN 0
  )
  (repeat TSSL
    (setq TXTENT   (ssname TSS TSSN)
          TSSN           (1+ TSSN)
          TXTELIST (cons TXTENT TXTELIST)
    )
  )
  (setq PTLIST (mapcar '(lambda (X) (cdr (assoc 10 (entget X)))) TXTELIST))
  (setq COMBOLIST (mapcar 'cons PTLIST TXTELIST))
  (setq        COMBOLISTS
         (vl-sort COMBOLIST '(lambda (1% 2%) (> (cadar 1%) (cadar 2%))))
  )
  ;;sort by Y
  (setq        TXTLISTS
         (mapcar '(lambda (X) (cdr (assoc 1 (entget (cdr X))))) COMBOLISTS)
  )
  (princ "\nNow pls select a column of Text(s) to copy:")
  (setq        TSS2  (ssget '((-4 . "<OR") (0 . "*TEXT") (0 . "DIMENSION") (-4 . "OR>")))
        TSS2L (sslength TSS2)
        TSS2N 0
  )
  (repeat TSS2L
    (setq TXTENT2   (ssname TSS2 TSS2N)
          TSS2N            (1+ TSS2N)
          TXTELIST2 (cons TXTENT2 TXTELIST2)
    )
  )
  (setq PTLIST2 (mapcar '(lambda (X) (cdr (assoc 10 (entget X)))) TXTELIST2))
  (setq COMBOLIST2 (mapcar 'cons PTLIST2 TXTELIST2))
  (setq        COMBOLIST2S
         (vl-sort COMBOLIST2 '(lambda (1% 2%) (> (cadar 1%) (cadar 2%))))
  )
  ;;sort by Y
  (setq TXTELIST2S (mapcar 'cdr COMBOLIST2S))
;;;COPY NOW
  (mapcar '(lambda (1% 2%)
             (entmod (subst (cons 1 1%) (assoc 1 (entget 2%)) (entget 2%)))
           )
          TXTLISTS
          TXTELIST2S
  )
  (princ "\nColumn copy complete.")
  (princ)
)
;;;CTEXTM
;;;----------------------------------------------------------------------
(defun C:CTEXTR        (/            TSS               TSSL          TSSN             SORTD
                 TXTENT            TXTELIST   PTLIST          COMBOLIST  COMBOLISTS
                 TXTLISTS   TSS2       TSS2L          TSS2N             TXTENT2
                 TXTELIST2  PTLIST2    COMBOLIST2 COMBOLIST2S
                 TXTELIST2S
                )
  (princ "\nSelects a rows of Text(s) to copy from :")
  (setq        TSS  (ssget '((-4 . "<OR") (0 . "*TEXT") (0 . "DIMENSION") (-4 . "OR>")))
        TSSL (sslength TSS)
        TSSN 0
  )
  (repeat TSSL
    (setq TXTENT   (ssname TSS TSSN)
          TSSN           (1+ TSSN)
          TXTELIST (cons TXTENT TXTELIST)
    )
  )
  (setq PTLIST (mapcar '(lambda (X) (cdr (assoc 10 (entget X)))) TXTELIST))
  (setq COMBOLIST (mapcar 'cons PTLIST TXTELIST))
  (setq        COMBOLISTS
         (vl-sort COMBOLIST '(lambda (1% 2%) (> (caar 1%) (caar 2%))))
  )
  ;;sort by Y
  (setq        TXTLISTS
         (mapcar '(lambda (X) (cdr (assoc 1 (entget (cdr X))))) COMBOLISTS)
  )
  (princ "\nNow pls select a row of Text(s) to copy:")
  (setq        TSS2  (ssget '((-4 . "<OR") (0 . "*TEXT") (0 . "DIMENSION") (-4 . "OR>")))
        TSS2L (sslength TSS2)
        TSS2N 0
  )
  (repeat TSS2L
    (setq TXTENT2   (ssname TSS2 TSS2N)
          TSS2N            (1+ TSS2N)
          TXTELIST2 (cons TXTENT2 TXTELIST2)
    )
  )
  (setq PTLIST2 (mapcar '(lambda (X) (cdr (assoc 10 (entget X)))) TXTELIST2))
  (setq COMBOLIST2 (mapcar 'cons PTLIST2 TXTELIST2))
  (setq        COMBOLIST2S
         (vl-sort COMBOLIST2 '(lambda (1% 2%) (> (caar 1%) (caar 2%))))
  )
  ;;sort by Y
  (setq TXTELIST2S (mapcar 'cdr COMBOLIST2S))
;;;COPY NOW
  (mapcar '(lambda (1% 2%)
             (entmod (subst (cons 1 1%) (assoc 1 (entget 2%)) (entget 2%)))
           )
          TXTLISTS
          TXTELIST2S
  )
  (princ "\nRow copy complete.")
  (princ)
)
;;;------------------------------------------------------------------------
;;APPEND TEXT FROM ONE ENTITIES TO MANY
;;BY ERIC WONG
(defun C:APTEXT        (/ ATEXT1 ATEXT2 S SS SSM SSN SS1 EG1 EG2 AT_HL)
  (setq AT_HL (getvar "HIGHLIGHT"))
  (setvar "HIGHLIGHT" 1)
  (redraw (setq ENT (car (entsel "\nSelect Text to be copied for Append:")))
          3
  ) ;_ end of REDRAW
  (if (= (cdr (assoc 0 (entget ENT))) "INSERT")
    (setq ATEXT1 (cdr (assoc 2 (entget ENT))))
    (setq ATEXT1 (cdr (assoc 1 (entget ENT))))
  ) ;_ end of IF
  (princ "\nText are Appended to :")
  (setq        SS  (ssget)
        SSM (sslength SS)
        SSN 0
  ) ;SETQ
  (redraw ENT 4)
  (repeat SSM
    (setq SS1         (ssname SS SSN)
          EG1         (entget SS1)
          ATEXT2 (strcat (cdr (assoc 1 EG1)) " \\P" ATEXT1)
          EG2         (subst (cons 1 ATEXT2) (assoc 1 EG1) EG1)
          SSN         (1+ SSN)
    ) ;SETQ
    (entmod EG2)
  ) ;REPEAT
  (setvar "HIGHLIGHT" AT_HL)
  (princ)
) ;_ end of DEFUN

;;;------------------------------------------------------------------------
;;SORT Text
;;By Eric Wong
(defun C:TSORT (/           TSS              TSSL         TSSN            SORTD
                TXTENT           TXTELIST   PTLIST         TXTLIST    COMBOLIST
                COMBOLISTS TXTELISTS
               )
  (setq        TSS  (ssget '((0 . "*TEXT")))
        TSSL (sslength TSS)
        TSSN 0
  )
  (initget 1 "X Y")
  (setq SORTD (getkword "\nSort Direction <X/Y> :"))
  (repeat TSSL
    (setq TXTENT   (ssname TSS TSSN)
          TSSN           (1+ TSSN)
          TXTELIST (cons TXTENT TXTELIST)
    )
  )
  (setq PTLIST (mapcar '(lambda (X) (cdr (assoc 10 (entget X)))) TXTELIST))
  (setq        TXTLIST        (acad_strlsort
                  (mapcar '(lambda (X) (cdr (assoc 1 (entget X)))) TXTELIST)
                )
  )
  (setq COMBOLIST (mapcar 'cons PTLIST TXTELIST))
  (if (= SORTD "X")
    (setq COMBOLISTS
           (vl-sort COMBOLIST '(lambda (1% 2%) (> (caar 1%) (caar 2%))))
    )
    (setq COMBOLISTS
           (vl-sort COMBOLIST '(lambda (1% 2%) (> (cadar 1%) (cadar 2%))))
    )
  )
  (setq TXTELISTS (mapcar 'cdr COMBOLISTS))
  (mapcar '(lambda (1% 2%)
             (entmod (subst (cons 1 1%) (assoc 1 (entget 2%)) (entget 2%)))
           )
          TXTLIST
          TXTELISTS
  )
  (princ "\nSort Txt complete")
  (princ)
)
;;;------------------------------------------------------------------------
;;ATTRIB COUNT
;;FUNCTION LIKE TCOUNT IN EXPRESS
;;BY Eric Wong
(defun C:ATCOUNT (/            TSS              TSSL        TSSN          STIN            SORTD
                  STINN            TXTENT    TXTXENT        ATTXENT          ATTXELIST TXTELIST
                  PTLIST    COMBOLIST COMBOLISTS          ATTXELISTS
                  STLIST    MISS      REV
                 )
  (setq        TSS  (ssget '((0 . "INSERT")))
        TSSL (sslength TSS)
        TSSN 0
  )
  (if (= STIN2 NIL)
    (setq STIN2 "1,1")
  )
  (initget 1 "X Y")
  (setq        SORTD (getkword "Sort selected objects by [X/Y]:")
        STIN  (getstring
                (strcat        "\nSpecify starting number and increment (Start,increment) <"
                        STIN2
                        ">:"
                )
              )
  )
  (initget 1 "Overwrite Prefix Suffix")
  (setq        PLACE (getkword
                "\nPlacement of numbers in text [Overwrite/Prefix/Suffix..] :"
              )
  )
  (if (= STIN "")
    (setq STIN STIN2)
    (setq STIN2 STIN)
  )
  (setq        STINN (vl-string-position (ascii ",") STIN)
        STNO  (substr STIN 1 STINN)
        INNO  (substr STIN (+ STINN 2) (strlen STIN))
        STNO2 (rtos (atoi STNO) 2 0)
  )
  (repeat TSSL
    (setq TXTENT (ssname TSS TSSN)
          TSSN         (1+ TSSN)
    )
    (if
      (= (vla-get-hasattributes (setq TXTXENT (vlax-ename->vla-object TXTENT)))
         :vlax-true
      )
       (if (= "ITEMNO"
              (vla-get-tagstring
                (setq
                  ATTXENT (car (vlax-safearray->list
                                 (vlax-variant-value (vla-getattributes TXTXENT))
                               )
                          )
                )
              )
           )
         (progn        (setq TXTELIST (cons TXTENT TXTELIST))
                (setq ATTXELIST (cons ATTXENT ATTXELIST))
         )
       )
    )
  )
  (repeat (length TXTELIST)
    (if        (> (setq MISS (- (strlen STNO) (strlen STNO2))) 0)
      (repeat MISS (setq STNO2 (strcat "0" STNO2)))
    )
    (setq STLIST (cons STNO2 STLIST))
    (setq STNO2 (rtos (+ (atoi STNO2) (atoi INNO)) 2 0))
  )
  (setq PTLIST (mapcar '(lambda (X) (cdr (assoc 10 (entget X)))) TXTELIST))
  (setq COMBOLIST (mapcar 'cons PTLIST ATTXELIST))
  (if (= SORTD "X")
    (setq COMBOLISTS
           (vl-sort COMBOLIST '(lambda (1% 2%) (> (caar 1%) (caar 2%))))
    )
    (setq COMBOLISTS
           (vl-sort COMBOLIST '(lambda (1% 2%) (< (cadar 1%) (cadar 2%))))
    )
  )
  (setq ATTXELISTS (mapcar 'cdr COMBOLISTS))
  (cond        ((= PLACE "Overwrite")
         (mapcar '(lambda (1% 2%) (vla-put-textstring 2% 1%))
                 STLIST
                 ATTXELISTS
         )
         (initget 0 "Yes No")
         (setq REV (getkword "Need to reverse? [Yes/No] <No> :"))
        )
        ((= PLACE "Prefix")
         (mapcar '(lambda (1% 2%)
                    (vla-put-textstring 2% (strcat 1% (vla-get-textstring 2%)))
                  )
                 STLIST
                 ATTXELISTS
         )
        )
        ((= PLACE "Suffix")
         (mapcar '(lambda (1% 2%)
                    (vla-put-textstring 2% (strcat (vla-get-textstring 2%) 1%))
                  )
                 STLIST
                 ATTXELISTS
         )
        )
  )
  (if (= "Yes" REV)
    (progn (setq ATTXELISTS (reverse ATTXELISTS))
           (mapcar '(lambda (1% 2%) (vla-put-textstring 2% 1%))
                   STLIST
                   ATTXELISTS
           )
    )
  )
  (princ "\nATCOUNT complete.")
  (princ)
)
;;;------------------------------------------------------------------------
;;;Add value to Dimension & keep it's prefix (use for tag drawing)
(defun C:DVAT (/ DOC DMVALA DMSS DMSSM DM DM2 XDM DMVAL DMVALA DMVALNEW DMLIST)
  (vl-load-com)
  (setq DOC (vla-get-activedocument (vlax-get-acad-object)))
  (setq DMVALA (dos_getreal "Dimension Add" "Add Value :" 1))
  (setq        DMSS  (ssget)
        DMSSM 0
  )
  (repeat (sslength DMSS)
    (setq DMLIST (cons (ssname DMSS DMSSM) DMLIST)
          DMSSM         (1+ DMSSM)
    )
  )
  (foreach DM2 DMLIST
    (if        (= "DIMENSION" (cdr (assoc 0 (entget DM2))))
      (setq DM DM2)
    )
    (setq XDM        (vlax-ename->vla-object DM)
          DMVAL        (vla-get-textoverride XDM)
          DMVP        (substr DMVAL 1 3)
          DMVS        (substr DMVAL 4 (strlen DMVAL))
          DMVSL        (strlen DMVS)
          DMVSN        (rtos (+ (atof DMVS) DMVALA) 2 0)
    )
    (if        (> DMVSL (strlen DMVSN))
      (repeat (- DMVSL (strlen DMVSN)) (setq DMVSN (strcat "0" DMVSN)))
    )
    (if        (/= (setq DMVALNEW (strcat DMVP DMVSN)) DMVAL)
      (progn (vla-put-textoverride XDM DMVALNEW) (redraw DM 4))
    )
  )
  (vlax-release-object DOC)
)
;;;------------------------------------------------------------------------
;;;Text Multify by Eric Wong
(defun C:DVMF (/ SS SSM SSN SS1 DDEC2 EG1 DVAL DVAL2 DVALA)
  (setq DVALA (dos_getreal "Multify Value" "Enter Value want to multify"))
  (princ "Select DIMENSION change to process :")
  (if (= DDEC NIL)
    (setq DDEC (getvar "DIMDEC"))
  )
  (setq        SS  (ssget '((-4 . "<OR")
                     (0 . "DIMENSION")
                     (0 . "*TEXT")
                     (0 . "INSERT")
                     (-4 . "OR>")
                    )
            )
        SSM (sslength SS)
        SSN 0
  ) ;SETQ
  (initget)
  ;(setq DDEC2 (getint (strcat "\nDecimal Place: <" (rtos DDEC 2 0) "> ")))
  (setq DDEC 0)
  (command ".UNDO" "BE")
  (repeat SSM
    (setq SS1        (ssname SS SSN)
          EG1        (entget SS1)
          ETYPE        (cdr (assoc 0 EG1))
          SSN        (1+ SSN)
    ) ;SETQ
  ;(IF (> DDEC 1)
    (cond ((= ETYPE "DIMENSION")
           (setq DVAL (atof (cdr (assoc 1 EG1))))
           (if (= DVAL 0.0)
             (setq DVAL2 (ai_rtos (* (cdr (assoc 42 EG1)) DVALA)))
             (setq DVAL2 (ai_rtos (* DVAL DVALA)))
           )
           (if (= (strlen DVAL2) 1)
             (setq DVAL2 (strcat "0" DVAL2))
           )
           (command ".DIM1" "NEW" DVAL2 SS1 "")
          )
          ((or (= ETYPE "TEXT") (= ETYPE "MTEXT"))
           (setq SV_DIMZIN (getvar "DIMZIN"))
           (setvar "DIMZIN" 5)
           (if (= (substr (cdr (assoc 1 EG1)) 1 2) "\\A")
             (setq DVAL
                    (atof (substr (cdr (assoc 1 EG1)) 5 (strlen (cdr (assoc 1 EG1))))
                    )
             )
             (setq DVAL (atof (cdr (assoc 1 EG1))))
           )
           (setq DVAL2 (ai_rtos (* DVAL DVALA)))
           (if (= (strlen DVAL2) 1)
             (setq DVAL2 (strcat "0" DVAL2))
           )
           (if (/= SV_DIMZIN NIL)
             (setvar "DIMZIN" SV_DIMZIN)
           )
           (setq EG2 (subst (cons 1 DVAL2) (assoc 1 EG1) EG1))
           (entmod EG2)
          )
          ((= ETYPE "INSERT")
           (setq XX 1)
           (while XX
             (setq EG1 (entget (entnext (cdr (assoc -1 EG1)))))
             (if (= (cdr (assoc 0 EG1)) "SEQEND")
               (setq XX NIL)
               (progn (setq DVAL  (atof (cdr (assoc 1 EG1)))
                            DVAL2 (ai_rtos (* DVAL DVALA))
                      )
                      (setq EG2 (subst (cons 1 DVAL2) (assoc 1 EG1) EG1))
                      (entmod EG2)
               ) ;progn
             ) ;if
           ) ;while
           (entupd SS1)
          )
    ) ;COND
  ) ;REPEAT
  (command ".UNDO" "END")
  (princ)
)
;;;------------------------------------------------------------------------
;;;Text New by Eric Wong
(defun C:TEXTNEW (/ CTEXT1 SS SSM SSN SS1 EG1 EG2 CT_HL ATTLIST EP1 EP2)
  (setq CT_HL (getvar "HIGHLIGHT"))
  (setvar "HIGHLIGHT" 1)
  (if (= NIL CTEXT)
    (setq CTEXT1 (dos_getstring "Text New" "Enter the new Text :"))
    (setq CTEXT1 (dos_getstring "Text New" "Enter the new Text :" CTEXT))
  )
  (if (/= CTEXT1 NIL)
    (setq CTEXT CTEXT1)
    (setq CTEXT1 CTEXT)
  )
  (princ "\nText is copied to :")
  (setq EP1 (entsel))
  (if (/= NIL EP1)
    (while (/= NIL EP1)
      (setq EG1 (entget (car EP1)))
      (cond ((or (wcmatch (cdr (assoc 0 EG1)) "*TEXT")
                 (= (cdr (assoc 0 EG1)) "DIMENSION")
             )
             (setq EG2 (subst (cons 1 CTEXT1) (assoc 1 EG1) EG1))
             (entmod EG2)
            )
            ((= (cdr (assoc 0 EG1)) "INSERT")
             (setq EG2 (car (nentselp (cadr EP1))))
             (if (= (cdr (assoc 0 (entget EG2))) "ATTRIB")
               (vla-put-textstring (vlax-ename->vla-object EG2) CTEXT1)
               (progn (princ "\nNot match Attribute.") (exit))
             )
            )
      )
      (setq EP1 (entsel))
    )
    (progn
      (setq SS        (ssget)
            SSM        (sslength SS)
            SSN        0
      ) ;SETQ
      (repeat SSM
        (setq SS1      (ssname SS SSN)
              EG1      (entget SS1)
              ATTLIST  NIL
              ATTLIST2 NIL
              SSN      (1+ SSN)
        )
        (cond
          ((or (wcmatch (cdr (assoc 0 EG1)) "*TEXT")
               (= (cdr (assoc 0 EG1)) "DIMENSION")
           )
           (setq EG2 (subst (cons 1 CTEXT1) (assoc 1 EG1) EG1))
           (entmod EG2)
          )
          ((= (cdr (assoc 0 EG1)) "INSERT")
           (setq ATTLIST (vlax-safearray->list
                           (vlax-variant-value
                             (vla-getattributes (vlax-ename->vla-object SS1))
                           )
                         )
           )
           (if (= 1 (length ATTLIST))
             (vla-put-textstring (car ATTLIST) CTEXT1)
             (progn (if        (= NIL ESEL2)
                      (progn (princ "\nPlease Specify Attribute Tag :")
                             (setq ESEL2 (vla-get-tagstring
                                           (vlax-ename->vla-object (car (nentselp)))
                                         )
                             )
                      )
                    )
                    (setq ATTLIST2 (vl-remove-if-not
                                     '(lambda (X) (= ESEL2 (vla-get-tagstring X)))
                                     ATTLIST
                                   )
                    )
                    (if        (= NIL ATTLIST2)
                      (princ "\nNot match Attribute.")
                      (vla-put-textstring (car ATTLIST2) CTEXT1)
                    )
             )
           )
          )
        )
      ) ;repeat
    )
  ) ;if
  (setvar "HIGHLIGHT" CT_HL)
  (princ)
)
(defun c:ct() (c:ctext))
(defun c:ctm() (c:ctextm))
(defun c:ctr() (c:ctextr))
(defun c:tn() (c:textnew))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2009-2-25 15:50:56 | 显示全部楼层
lsp不是不分版本的吗?
是不是其中某些变量的命名与08的冲突了,还是有些系统变量的名字改了?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-2-26 07:49:55 | 显示全部楼层
代码也太长了。
嘿嘿,
CAD不同版本,只要是命令和系统变量有变动。
其它的语法,函数等都没变。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-2-26 11:41:16 | 显示全部楼层
晕死,一个简单的功能写这么长。。。 还是没有解决 mtex->text 的问题。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-26 22:33:42 | 显示全部楼层
难道没人能将它成功应用到CAD2008里去吗?  是什么原因在08里不能用了》
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-2-27 10:11:53 | 显示全部楼层
我试过在我的2008运行上面的程序,使用T,完全正常呀.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-2-28 22:39:23 | 显示全部楼层
版主,你好

我在2008里用的时候是不正常的,请教一下是什么原因! 在我的2008 里是根本不能用的!

我的 情况是这样:

命令: t
Select Text or Attribute to be copied:; 错误: no function definition:
VLAX-ENAME->VLA-OBJECT


请教一下楼主那里是什么情况,以及如何解决上面的问题,多谢! 这个程序我在工作中经常用到,而且现在用CAD2008 比较习惯!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 7224个

财富等级: 富甲天下

发表于 2009-3-1 11:04:07 | 显示全部楼层
如果只是单纯的这个错误讯息
no function definition: VLAX-ENAME->VLA-OBJECT
先Run下 (Vl-Load-Com)
============================
or

(Vl-Load-Com)    ; 加这一列
(defun C:CTEXT (/ CTEXT1....
...
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2009-3-1 12:57:31 | 显示全部楼层
no function definition: VLAX-ENAME->VLA-OBJECT,这个就是没有加载(Vl-Load-Com)的原因!!
VLAX-ENAME->VLA-OBJECT这个是转换函数
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-3-4 15:10:35 | 显示全部楼层
不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-3-4 16:34:18 | 显示全部楼层
不是把 不能下载
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-3-4 22:33:08 | 显示全部楼层
同求答案,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2009-3-13 21:24:51 | 显示全部楼层
那请问出现这个错误是什么原因造成的啊no function definition: xdrx_system_getLogicalDrive
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 10:18 , Processed in 0.370067 second(s), 55 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表