yrgui 发表于 2015-8-26 12:02:55

小程序的功能是对框选的数值文本减去指定值后替换原值,好像哪里不对,谁能帮改改

;;;小程序的功能是对框选的数值文本减去指定值后替换原值
;;;很久不用lsp了,忘了。
(defun C:JZ (/ ss)
(vl-load-com)
(princ "\n文本减去指定值(JZ)")
(princ "\n选择要减去指定值的文本:")
(setq ss (ssget '((0 . "*TEXT,ATTDEF"))))
(setq s "")
(setq        n 0
        c 1.20;;指定值暂时固定为1.20
)
(if ss
    (progn
      (repeat
        (setq vo (vlax-ename->vla-object (ssname ss n)))
        (setq
          s (atof
              (vl-string-trim " " (vlax-get-property vo 'TextString))
          )
        )
        (vlax-put-property vo 'TextString (rtos (- s c) 2 3))
        (setq n (1+ n))
      )
      (princ "\n所选文本已经减值: ")
      (princ (rtos c))
      (princ)
    )
)
)

llsheng_73 发表于 2015-8-26 12:02:56

(defun C:JZ (/ ss n c vo s)
   (vl-load-com)
   (princ "\n文本减去指定值(JZ)")
   (princ "\n选择要减去指定值的文本:")
   (setq n 0c 1.20);;指定值暂时固定为1.20
   (if(setq ss(ssget'((0 . "*TEXT,ATTDEF"))))
   (progn
       (repeat(sslength ss)
         (setq vo (vlax-ename->vla-object (ssname ss n))
             n (1+ n)
             s (atof(vl-string-trim " " (vlax-get-property vo 'TextString))))
         (vlax-put-property vo 'TextString(rtos (- s c) 2 3))
       )
       (princ "\n所选文本已经减值: ")
       (princ (rtos c))
       (princ)
   )
   )
)

dingtiedt 发表于 2015-8-26 12:44:48

"repeat"不下去
增加两行(defun C:JZ (/ ss)
(vl-load-com)
(princ "\n文本减去指定值(JZ)")
(princ "\n选择要减去指定值的文本:")
(setq ss (ssget '((0 . "*TEXT,ATTDEF"))))
(setq s "")
(setqn 0
c 1.20
    ;;指定值暂时固定为1.20
)
(setq nn (sslength ss))    ; 增加的一行

(if ss
    (progn
      (repeat nn
;; 增加的一行
(setq vo (vlax-ename->vla-object (ssname ss n)))
(setq
    s (atof
      (vl-string-trim " " (vlax-get-property vo 'TextString))
      )
)
(vlax-put-property vo 'TextString (rtos (- s c) 2 3))
(setq n (1+ n))
      )
      (princ "\n所选文本已经减值: ")
      (princ (rtos c))
      (princ)
    )
)
)

yrgui 发表于 2015-8-26 19:17:56

;;; [名称] yrJianZhi(JZ)
;;; [功能] 对选定的文本减去指定值
;;; [作者] yrgui QQ:860630000

(defun yrJianZhi (/ ss n c vo s)
   (vl-load-com)
   (setq c (getreal "\n文本减去指定值:<1.2>"))
    (if (not c)
    (setq c 1.2)
   )
   (princ "\n选择要减去指定值的文本:")
   (setq n 0)

   (if(setq ss(ssget'((0 . "*TEXT,ATTDEF"))))
   (progn
       (repeat(sslength ss)
         (setq vo (vlax-ename->vla-object (ssname ss n))
               n (1+ n)
               s (atof(vl-string-trim " " (vlax-get-property vo 'TextString))))
         (vlax-put-property vo 'TextString(rtos (- s c) 2 3))
       )
       (princ "\n所选文本已经减值: ")
       (princ (rtos c 2 3))
       (princ)
   )
   )
)

lucas_3333 发表于 2015-8-26 19:32:03

占个楼,看热闹

bai2000 发表于 2018-10-15 20:19:08

占个楼,看热闹
页: [1]
查看完整版本: 小程序的功能是对框选的数值文本减去指定值后替换原值,好像哪里不对,谁能帮改改