请高手帮忙改一下两个都报错“参数太少”,下面的代码,想实lisp CAD 选中指定范围数值的所有文字
都是ai自动生成的。
- (defun c:SelectTextInRange (/ ss value-min value-max ent text-value)
- (setq value-min (getreal "\nEnter the minimum value: "))
- (setq value-max (getreal "\nEnter the maximum value: "))
- (setq ss (ssget '((0 . "TEXT")))) ; 获取所有 TEXT 对象
- (if ss
- (progn
- (setq ss (ssdel ss)) ; 创建一个新的选择集,因为 ssdel 会修改原始选择集
- (repeat (sslength ss)
- (setq ent (ssname ss (setq i 0))) ; 从选择集中获取第一个实体
- (setq text-value (cdr (assoc 1 (entget ent)))) ; 获取文本实体的值
- (setq text-value (atof text-value)) ; 将文本值转换为浮点数
- ; 如果文本值在指定范围内,则将实体添加到新的选择集中
- (if (and (<= value-min text-value) (<= text-value value-max))
- (ssadd ss (entget ent))
- )
- )
- (if (not (ssnull ss)) ; 如果选择集中有实体
- (progn
- (princ "\nSelected texts within range: ")
- (princ value-min)
- (princ " to ")
- (princ value-max)
- (princ "\n")
- (command "_.select" ss "") ; 选择这些实体
- )
- (princ "\nNo texts found within the specified range.")
- )
- )
- (princ "\nNo texts found.")
- )
- (princ)
- )
这个lisp CAD 选中指定数值的所有文字
- (defun c:Se(/ ss value ent text-value)
- (setq value (getreal "\n输入值以选择文本: "))
- (setq ss (ssget '((0 . "TEXT")))) ; 获取所有 TEXT 对象
- (if ss
- (progn
- (setq ss (ssdel ss)) ; 创建一个新的选择集,因为 ssdel 会修改原始选择集
- (repeat (sslength ss)
- (setq ent (ssname ss (setq i 1))) ; 从选择集中获取第一个实体
- (setq text-value (cdr (assoc 1 (entget ent)))) ; 获取文本实体的值
- (if (= (atof text-value) value) ; 如果文本值等于指定数值
- (ssadd ss (entget ent)) ; 将实体添加到新的选择集中
- )
- )
- (if (not (ssnull ss)) ; 如果选择集中有实体
- (progn
- (princ "\nSelected texts with value: ")
- (princ value)
- (princ "\n")
- (command "_.select" ss "") ; 选择这些实体
- )
- )
- )
- )
- (princ)
- )
|