乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 83|回复: 9

[编程交流] 可被整除的筛选文本值

[复制链接]

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 22:50:51 | 显示全部楼层 |阅读模式
请帮我过滤所有可以被5整除的文本。
 
提前感谢:)
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:00:11 | 显示全部楼层
请帮我编辑我写的代码
  1. (defun c:div ()
  2. (setq divi (getdist "Enter divisibility:"))
  3. (setq layer (strcat "div_"(rtos divi 2 2)))
  4. (if (setq ss (ssget "_X" '((0 . "TEXT"))))
  5. (repeat (setq i (sslength ss))
  6. (setq num (getreal (assoc 1 (entget (setq e (ssname ss (setq i (1- i))))))))
  7. )
  8. )
  9. (command "-layer" "m" layer "")
  10. (if
  11. (= (rem num divi ) 0)
  12. (command "_.chprop" e "" "_layer" layer "")
  13. )
  14. (princ)
  15. )
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:09:29 | 显示全部楼层
 
你好,rrulep,
getreal通常为用户提示。
但我注意到它在一个重复循环中
我使用2007,以下是我的常规做法:
(setq num(atof(cdr(assoc 1(entget…))))))
 
 
回复

使用道具 举报

8

主题

34

帖子

26

银币

初来乍到

Rank: 1

铜币
40
发表于 2022-7-5 23:14:16 | 显示全部楼层
我已经换了,但还是没用。
可能有什么错误?
你能试试吗?如果有效,请将其发回。
 
提前感谢
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:23:52 | 显示全部楼层
嗨,我没有更改任何内容,只是移动(命令“layer”…)在重复循环中。
  1. (defun c:div  (/ divi layer ss num i e dxf)
  2. (setq divi (getreal "Enter divisibility: ");
  3.         layer (strcat "div_" (rtos divi 2 2))
  4.        dxf  '((_e _i _val / _en)
  5.         (setq _en (entget _e))
  6.         (if (assoc _i _en)
  7.            (entmod (subst (cons _i _val) (assoc _i _en) _en))
  8.            (entmod (append _en (list (cons _i _val))))
  9.            ) ; if
  10.         (princ))
  11.        )
  12. (if (setq ss (ssget "_X" '((0 . "TEXT"))))
  13.    (repeat (setq i (sslength ss))
  14.      (setq num (atof (cdr (assoc 1 (entget (setq e (ssname ss (setq i (1- i)))))))))
  15.      (command "-layer" "m" layer "")
  16.      (if (= (rem num divi) 0)
  17. ;;;(command "_.chprop" e "" "_layer" layer "");
  18.        (dxf e 8 layer))));  *dxf code 8 is for Layer
  19. (princ))

 
*在代码中使用(命令“-layer”)不是一个好做法,所以我替换entmod可能更快
 
;这只是您的简单代码,您可以添加错误处理程序、其他ssget过滤器等。。
祝你好运
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-5 23:24:47 | 显示全部楼层
  1. (defun C:test (/ n i   s ss lay )
  2. (if
  3.    (setq n (getint "\nEnter divisibility:")
  4.          ss (ssget "_X" '((0 . "TEXT")))
  5.          lay (itoa n)
  6.    )
  7.    (progn
  8.      (if
  9.        (not (tblsearch "layer" (strcat "Div_" lay)))
  10.          (entmake
  11.            (list
  12.              '(0 . "LAYER")
  13.              '(100 . "AcDbSymbolTableRecord")
  14.              '(100 . "AcDbLayerTableRecord")                                                                                                                      
  15.               (cons 70 0)
  16.               (cons 2 (strcat "Div_" lay))
  17.            )
  18.          )
  19.      )
  20.   (setq lay (strcat "Div_" lay))
  21.      (repeat (setq i (sslength ss))
  22.        (if
  23.          (multipleof (atof (cdr (assoc 1 (entget (setq s (ssname ss (setq i (1- i)))))))) n)
  24.          (vla-put-layer (vlax-ename->vla-object s) lay)
  25.         )
  26.      )
  27. )
  28. )
  29. (princ)
  30. )
  31. (defun multipleof (n x)
  32. (while (> n x) (setq n (- n x)))
  33. (if (= n x) t nil)
  34. )
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 23:35:19 | 显示全部楼层
一个简单的除数检查是余数必须是。0 35/5=5.0 36/5=5.2只需使用修复来检查是否。0
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 23:39:13 | 显示全部楼层
过滤可被5整除的文本:
  1. (ssget '((0 . "TEXT") (1 . "*[05]")))

可以选择“a5”,并且不能被5整除。。。所以你可以添加过滤器,比如图层、样式、高度等等。
此外,如果要选择的数字在特定范围内,例如小于1000,则过滤器可能为:(1。“##[05]、#[05]、#[05]、[05]”)
回复

使用道具 举报

5

主题

956

帖子

963

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 23:46:29 | 显示全部楼层
你好,好主意,斯特凡。我在想(numberp(read str))如果使用(atof str),就可以去掉返回零的字母字符串
 
我认为零也可以忽略,因为它总是可以整除的?
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 23:54:50 | 显示全部楼层
@hanhphuc公司
方括号匹配所包含的任何单个字符。
例如,##[05]表示##0或##5。
换句话说,它意味着“任何正好包含3个字符的字符串,以任意2个数字字符开头,以0或5结尾”
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 03:15 , Processed in 0.579191 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表