求一次处理表格中带负数的数字为零的LSP程序002
本帖最后由 品茗新秀 于 2012-9-8 00:02 编辑求一次处理表格中带负数的数字为零和删除括号前面的1及括号的LSP程序002
原图
达到效果
注:改为0的数与原负值为同图层、同样式、同大小,即除了数值改为0,其它均应与原图一样。
还有后面仅删除括号前面的1及括号,其它不能改变
(Defun C:test ()
(for-sset
(ssget "X" '((1 . "*-#*-*")))
-#-*
)
(for-sset
(ssget "X" '((1 . "*(#*x#*)")))
#X#
)
)
这个不需要LISP,CAD中查找替换就可以搞定的,套哥,多学学CAD基础知识,再研究编程吧。 Try:
(defun -#-* (a / b c d e)
(setq b (entget a)
c (assoc 1 b)
d (cdr c)
e (vl-string->list d)
e (member 45 (cdr (member 45 e)))
e (cons 48 e)
)
(repeat (1- (vl-string-position (ascii "-") d nil T))
(setq e (cons 32 e))
)
(entmod (subst (cons 1 (vl-list->string e)) c b))
)
(defun #X# (a / b c d e)
(setq b (entget a)
c (assoc 1 b)
d (cdr c)
e (vl-string->list d)
e (cdr (member 40 e))
e (reverse (cdr (member 41 (reverse e))))
)
(entmod (subst (cons 1 (vl-list->string e)) c b))
)
;;; (for-sset ss entdel)
;;; Vladimir Nesterovsky
;; (defun for-sset (sset fun / n)
;; (if (= 'PICKSET (type sset))
;; (repeat (setq n (fix (sslength sset)))
;; (fun (ssname sset (setq n (1- n))))
;; ) )
;; )
(defun for-sset (sset func / n ename)
(and (= 'pickset (type sset))
(setq n -1)
(while (setq ename (ssname sset (setq n (1+ n))))
(func ename)
)
)
)
(Defun C:test ()
(for-sset
(ssget "X" '((1 . "*-#*")))
-#-*
)
(for-sset
(ssget "X" '((1 . "*(#*x#*)")))
#X#
)
)
你一共才39个明经币,300个可怎么出啊? 上一悬赏贴楼主赖账 本帖最后由 品茗新秀 于 2012-9-8 18:13 编辑
非常强大,太好了,建议再改进一下,见下图测试
又想赖账了…一直改进最后说不满意 本帖最后由 品茗新秀 于 2012-9-8 20:05 编辑
十分强大,非常不错,
对了一下,不知异在何处,两个代码好象差不多,楼主能不能告诉我
页:
[1]