明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1060|回复: 5

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

[复制链接]
发表于 2015-8-26 12:02 | 显示全部楼层 |阅读模式
10明经币
;;;小程序的功能是对框选的数值文本减去指定值后替换原值
;;;很久不用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)
    )
  )
)

发表于 2015-8-26 12:02 | 显示全部楼层
  1. (defun C:JZ (/ ss n c vo s)
  2.    (vl-load-com)
  3.    (princ "\n文本减去指定值(JZ)")
  4.    (princ "\n选择要减去指定值的文本:")
  5.    (setq n 0  c 1.20);;指定值暂时固定为1.20
  6.    (if(setq ss(ssget'((0 . "*TEXT,ATTDEF"))))
  7.      (progn
  8.        (repeat(sslength ss)
  9.          (setq vo (vlax-ename->vla-object (ssname ss n))
  10.                n (1+ n)
  11.                s (atof(vl-string-trim " " (vlax-get-property vo 'TextString))))
  12.          (vlax-put-property vo 'TextString(rtos (- s c) 2 3))
  13.        )
  14.        (princ "\n所选文本已经减值: ")
  15.        (princ (rtos c))
  16.        (princ)
  17.      )
  18.    )
  19. )
回复

使用道具 举报

发表于 2015-8-26 12:44 | 显示全部楼层
"repeat"不下去
增加两行
  1. (defun C:JZ (/ ss)
  2.   (vl-load-com)
  3.   (princ "\n文本减去指定值(JZ)")
  4.   (princ "\n选择要减去指定值的文本:")
  5.   (setq ss (ssget '((0 . "*TEXT,ATTDEF"))))
  6.   (setq s "")
  7.   (setq  n 0
  8.   c 1.20
  9.     ;;指定值暂时固定为1.20
  10.   )
  11.   (setq nn (sslength ss))    ; 增加的一行

  12.   (if ss
  13.     (progn
  14.       (repeat nn
  15.   ;; 增加的一行
  16.   (setq vo (vlax-ename->vla-object (ssname ss n)))
  17.   (setq
  18.     s (atof
  19.         (vl-string-trim " " (vlax-get-property vo 'TextString))
  20.       )
  21.   )
  22.   (vlax-put-property vo 'TextString (rtos (- s c) 2 3))
  23.   (setq n (1+ n))
  24.       )
  25.       (princ "\n所选文本已经减值: ")
  26.       (princ (rtos c))
  27.       (princ)
  28.     )
  29.   )
  30. )

评分

参与人数 1明经币 +1 金钱 +10 收起 理由
yrgui + 1 + 10 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-8-26 19:17 | 显示全部楼层
;;; [名称] 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)
     )
   )
)

本帖子中包含更多资源

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

x

点评

(ssget'((0 . "*TEXT,ATTDEF")))这个还需要多一些过滤,不然对“张三”,“王五”之类也减去一个数值有什么意义?  发表于 2015-8-26 19:48
回复

使用道具 举报

发表于 2015-8-26 19:32 | 显示全部楼层
占个楼,看热闹
回复

使用道具 举报

发表于 2018-10-15 20:19 | 显示全部楼层
占个楼,看热闹
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-26 22:54 , Processed in 0.297121 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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