明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 271|回复: 5

[源码] lisp CAD 选中指定范围数值的所有文字

[复制链接]
发表于 2024-4-12 19:35 | 显示全部楼层 |阅读模式
请高手帮忙改一下两个都报错“参数太少”,下面的代码,想实lisp CAD 选中指定范围数值的所有文字
都是ai自动生成的。


  1. (defun c:SelectTextInRange (/ ss value-min value-max ent text-value)
  2.   (setq value-min (getreal "\nEnter the minimum value: "))
  3.   (setq value-max (getreal "\nEnter the maximum value: "))
  4.   (setq ss (ssget '((0 . "TEXT")))) ; 获取所有 TEXT 对象
  5.   (if ss
  6.     (progn
  7.       (setq ss (ssdel ss)) ; 创建一个新的选择集,因为 ssdel 会修改原始选择集
  8.       (repeat (sslength ss)
  9.         (setq ent (ssname ss (setq i 0))) ; 从选择集中获取第一个实体
  10.         (setq text-value (cdr (assoc 1 (entget ent)))) ; 获取文本实体的值
  11.         (setq text-value (atof text-value)) ; 将文本值转换为浮点数
  12.         ; 如果文本值在指定范围内,则将实体添加到新的选择集中
  13.         (if (and (<= value-min text-value) (<= text-value value-max))
  14.           (ssadd ss (entget ent))
  15.         )
  16.       )
  17.       (if (not (ssnull ss)) ; 如果选择集中有实体
  18.         (progn
  19.           (princ "\nSelected texts within range: ")
  20.           (princ value-min)
  21.           (princ " to ")
  22.           (princ value-max)
  23.           (princ "\n")
  24.           (command "_.select" ss "") ; 选择这些实体
  25.         )
  26.         (princ "\nNo texts found within the specified range.")
  27.       )
  28.     )
  29.     (princ "\nNo texts found.")
  30.   )
  31.   (princ)
  32. )
这个lisp CAD 选中指定数值的所有文字
  1. (defun c:Se(/ ss value ent text-value)
  2.   (setq value (getreal "\n输入值以选择文本: "))
  3.   (setq ss (ssget '((0 . "TEXT")))) ; 获取所有 TEXT 对象

  4.   (if ss
  5.     (progn
  6.       (setq ss (ssdel ss)) ; 创建一个新的选择集,因为 ssdel 会修改原始选择集
  7.       (repeat (sslength ss)
  8.         (setq ent (ssname ss (setq i 1))) ; 从选择集中获取第一个实体
  9.         (setq text-value (cdr (assoc 1 (entget ent)))) ; 获取文本实体的值
  10.         (if (= (atof text-value) value) ; 如果文本值等于指定数值
  11.           (ssadd ss (entget ent)) ; 将实体添加到新的选择集中
  12.         )
  13.       )
  14.       (if (not (ssnull ss)) ; 如果选择集中有实体
  15.         (progn
  16.           (princ "\nSelected texts with value: ")
  17.           (princ value)
  18.           (princ "\n")
  19.           (command "_.select" ss "") ; 选择这些实体
  20.         )
  21.       )
  22.     )
  23.   )
  24.   (princ)
  25. )



评分

参与人数 1明经币 -2 收起 理由
xyp1964 -2 AI的玩意应该继续去找AI改

查看全部评分

发表于 2024-4-12 20:54 | 显示全部楼层
  1. (defun c:SelectTextInRange (/ ss value-min value-max ent text-value)
  2.   (setq value-min (getreal "\nEnter the minimum value: "))
  3.   (setq value-max (getreal "\nEnter the maximum value: "))
  4.   (setq ss (ssget '((0 . "TEXT")))) ; 获取所有 TEXT 对象
  5.         (setq i 0)
  6.   (if ss
  7.     (progn
  8.                         (setq ss0 (ssadd))
  9.       (repeat (sslength ss)
  10.         (setq ent (ssname ss i)) ; 从选择集中获取第一个实体
  11.         (setq text-value (cdr (assoc 1 (entget ent)))) ; 获取文本实体的值
  12.         (setq text-value (atof text-value)) ; 将文本值转换为浮点数
  13.         ; 如果文本值在指定范围内,则将实体添加到新的选择集中
  14.         (if (<= value-min text-value value-max)
  15.           (ssadd ent ss0)
  16.         )
  17.                                 (setq i (1+ i))
  18.       )
  19.       (if ss0 ; 如果选择集中有实体
  20.         (progn
  21.           (princ "\nSelected texts within range: ")
  22.           (princ value-min)
  23.           (princ " to ")
  24.           (princ value-max)
  25.           (princ "\n")
  26.           (sssetfirst nil ss0) ; 选择这些实体
  27.         )
  28.         (princ "\nNo texts found within the specified range.")
  29.       )
  30.     )
  31.     (princ "\nNo texts found.")
  32.   )
  33.   (princ)
  34. )
回复 支持 1 反对 0

使用道具 举报

发表于 2024-4-12 20:57 | 显示全部楼层
  1. (defun c:Se(/ ss value ent text-value)
  2.   (setq value (getreal "\n输入值以选择文本: "))
  3.   (setq ss (ssget '((0 . "TEXT")))) ; 获取所有 TEXT 对象
  4.         (setq i 0)
  5.   (if ss
  6.     (progn
  7.       (setq ss0 (ssadd)) ; 创建一个新的选择集,因为 ssdel 会修改原始选择集
  8.       (repeat (sslength ss)
  9.         (setq ent (ssname ss i)) ; 从选择集中获取第一个实体
  10.         (setq text-value (cdr (assoc 1 (entget ent)))) ; 获取文本实体的值
  11.         (if (equal (atof text-value) value 1e-5) ; 如果文本值等于指定数值
  12.           (ssadd ent ss0) ; 将实体添加到新的选择集中
  13.         )
  14.                                 (setq i (1+ i))
  15.       )
  16.       (if ss0 ; 如果选择集中有实体
  17.         (progn
  18.           (princ "\nSelected texts with value: ")
  19.           (princ value)
  20.           (princ "\n")
  21.           (sssetfirst nil ss0) ; 选择这些实体
  22.         )
  23.       )
  24.     )
  25.   )
  26.   (princ)
  27. )
回复 支持 1 反对 0

使用道具 举报

发表于 2024-4-12 21:55 | 显示全部楼层
请教下  你们用AI写代码用什么软件写的呀   很是好奇
 楼主| 发表于 2024-4-13 13:06 | 显示全部楼层

太棒了,谢谢你!
 楼主| 发表于 2024-4-13 13:08 | 显示全部楼层
本帖最后由 359321852 于 2024-4-13 13:15 编辑
love1030312 发表于 2024-4-12 21:55
请教下  你们用AI写代码用什么软件写的呀   很是好奇

https://chat18.aichatos.xyz/#/chat/1712984900585






本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
love1030312 + 1 赞一个!谢谢

查看全部评分

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

本版积分规则

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

GMT+8, 2024-5-6 13:47 , Processed in 0.276302 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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