明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wuwubaibai

[提问] 尾数.00字串去除(已解决多谢飞雪神光大大帮忙及各位大大的解答)

[复制链接]
发表于 2023-12-29 12:01:58 | 显示全部楼层
为什么不直接通过(1 . "*.00*")过滤出来?
 楼主| 发表于 2023-12-30 02:32:09 | 显示全部楼层
成仔 发表于 2023-12-29 09:57
论坛上有选择集相减这个函数,选择后过滤一次就可以了吧

大大~我是完全部会LISP的门外汉~代码全是拼凑的~所以您说的可以相减的函数我真的不知道
 楼主| 发表于 2023-12-30 02:33:40 | 显示全部楼层
llsheng_73 发表于 2023-12-29 12:01
为什么不直接通过(1 . "*.00*")过滤出来?

请问这个过滤出来后还是得去0呀!前面的数字我还要
 楼主| 发表于 2023-12-30 02:38:50 | 显示全部楼层
飞雪神光 发表于 2023-12-29 10:23
"(ssget  "X" '((0 . "TEXT,MTEXT")(-4 . "")))

加了以后完全选不到东西了~还在研究中
defun c:de3 (/ ss str wz wz0 wz1 wz2 wz3)
(setvar "cmdecho" 0)
(CClay "bend" 211 "2_正折")  
  (setq a (ssget "X" '((8 . "2_正折"))))
  (if (and (/= nil a) (/= 0 (sslength a)))
   (command "chprop" a "" "c" "bylayer" "La" "bend" "lt" "bylayer" "s" "1" "")   
  )
        (setq ss (ssget '((0 . "*TEXT") (1 . "上DOWN*,下DOWN*"))))
        (foreach ty (vl-remove-if-not '(lambda (x) (= (type x) 'ENAME)) (mapcar 'cadr (ssnamex ss)))
                (setq str (vla-get-TextString (vlax-ename->vla-object ty)))
                (vl-string-right-trim ".00" str)
                (vl-string-right-trim "." (vl-string-right-trim "0" str))
                (setq wz (vl-string-search "." str))
                (if wz
                        (progn
                                (setq wz0 (substr str (+ wz 1) 3))
                                (if (= wz0 ".00")
                                        (progn
                                                (setq wz1 (substr str 1 wz))
                                                (setq wz2 (substr str (+ wz 4)))
                                                (setq wz3 (strcat wz1 wz2))
                                                (vla-put-TextString (vlax-ename->vla-object ty) wz3)
                                        )
                                )
                        )
                )
        )

command "ERASE"(ssget  "X" '((0 . "TEXT,MTEXT")(-4 . "<NOT")(1 . "*上*UP*,*上*up*,*下*down*,*下*DOWN*")(-4 . "NOT>")))
(setvar "CmdEcho" 1)
        (princ)
)

(defun CClay (layname cc sObjTyp) ;;;  layname
(if (= nil (tblsearch "layer" layname))
(command "-layer" "n" layname "c" cc layname "")
)
(setq SS  (ssget "x" (list (cons 0 sObjTyp) (cons 410 "Model"))))
(if (and (/= nil ss) (/= 0 (sslength SS)))
(command "chprop" SS "" "la" layname "")
)

(princ)
)
发表于 2023-12-30 13:20:14 | 显示全部楼层
wuwubaibai 发表于 2023-12-30 02:38
加了以后完全选不到东西了~还在研究中
defun c:de3 (/ ss str wz wz0 wz1 wz2 wz3)
(setvar "cm ...

defun 前边少个 (  下边 command "ERASE"(ssget  "X" '((0 . "TEXT,MTEXT")(-4 . "<NOT")(1 . "*上*UP*,*上*up*,*下*down*,*下*DOWN*")(-4 . "NOT>"))) 这一行 少一对() CClay 里的 (cons 0 sObjTyp)这个就看不懂了 这个 CClay 就是没有实际做用的一段代码
发表于 2023-12-30 13:47:38 | 显示全部楼层
本帖最后由 llsheng_73 于 2023-12-31 09:13 编辑
wuwubaibai 发表于 2023-12-30 02:33
请问这个过滤出来后还是得去0呀!前面的数字我还要

  1. (defun delstr(str chars)
  2.   (while(vl-string-search chars str)
  3.     (setq str(VL-STRING-SUBST""chars str)))
  4.   str)
  5. (defun c:tt(/ e s)
  6.   (if(setq s(ssget'((0 . "text")(1 . "*.00*"))))
  7.     (while(setq e(ssname s 0))
  8.       (ssdel e s)
  9.       (entmod(list(cons -1 e)(cons 1(delstr(cdr(assoc 1(entget e)))".00"))(cons 8 "bend"))))
  10.     ))
回复 支持 1 反对 0

使用道具 举报

发表于 2023-12-30 14:18:43 | 显示全部楼层
  1. (defun c:tt ()
  2.   (setq i -1)
  3.   (if (setq ss (ssget '((0 . "text") (1 . "*.00*"))))
  4.     (while (setq s1 (ssname ss (setq i (1+ i))))
  5.       (xyp-SubUpd s1 1 (xyp-StrSubst "" ".00" (xyp-DXF 1 s1)))
  6.     )
  7.   )
  8.   (princ)
  9. )
 楼主| 发表于 2023-12-31 00:27:36 | 显示全部楼层
飞雪神光 发表于 2023-12-30 13:20
defun 前边少个 (  下边 command "ERASE"(ssget  "X" '((0 . "TEXT,MTEXT")(-4 . ""))) 这一行 少一对()  ...

下面的代码不敢删除是因为参考的代码有写上这段(如下)~让我以为没了这段那我就不能变更图层了~所以不敢删除

;;************CClay(用户请勿修改副程式)********************
(defun CClay (layname cc sObjTyp) ;;;layname 是图层名称,CC 是指修改图层颜色,sObjtype 是物品类别群码索引值为 0)
(if(= nil(tblsearch「层」layname))
(指令「-layer」「n」layname「c」cclayname「」)

(setq SS(ssget“x”(列表(cons 0 sObjTyp)(cons 410“模型”)))
(if (and (/= nil ss) (/= 0 (sslength SS)))
(指令“chprop”SS“”“la”layname“”)


-----------------
依照大大您的已经可以了~~但选择后都会出现以下代码错误~不知道为什么
非常感谢大大您



本帖子中包含更多资源

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

x
 楼主| 发表于 2023-12-31 00:29:28 | 显示全部楼层

小弟不才~使用大大的代码乱套一通
因为还要变更图层
结果套不出来~惭愧
defun delstr(str chars)
  (while(vl-string-search chars str)
    (setq str(VL-STRING-SUBST""chars str)))
  str)
(DEFUN C:test(/ e s)
(setvar "cmdecho" 0)
(CClay "bend" 211 "2_正折")  
  (setq a (ssget "X" '((8 . "2_正折"))))
  (if (and (/= nil a) (/= 0 (sslength a)))
   (command "chprop" a "" "c" "bylayer" "La" "bend" "lt" "bylayer" "s" "1" "")   
  )
  (if(setq s(ssget'((0 . "text")(1 . "*.00*"))))
    (while(setq e(ssname s 0))
      (ssdel e s)
      (entmod(list(cons -1 e)(cons 1(delstr(cdr(assoc 1(entget e)))".00")))))
    ))
(setvar "CmdEcho" 1)
  (princ)
)
 楼主| 发表于 2023-12-31 00:33:41 | 显示全部楼层

翻遍论坛里院长您的函数
只找到了xyp-SubUpd   xyp-DXF
这两个代码
xyp-StrSubst是新的找不到
所以无法使用~也无法用我土法炼钢的乱套了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-26 02:49 , Processed in 0.171497 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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