zwq8629 发表于 2023-6-29 21:53:20

求助,加载错误

本帖最后由 zwq8629 于 2023-6-30 08:12 编辑

(defun C:PJ (/ ss n s1)
(prompt "\n选择 : ")
(setq      ss(ssget '((0 . "CIRCLE")))
      rad (getreal "请输入新的半径 : ")
      n   -1
)
(if (/= ss nil)
    (progn
      (repeat (sslength ss)
            (setq s1 (ssname ss (setq n (1+ n))))
            (sub_upd s1 40 rad)
      )
    )
)
(princ)
)
;用新值替换旧值(对象、群码、新值)
(defun sub_upd (ename code newvalue)
(entmod (subst (cons code newvalue) (assoc code (entget ename))(entget ename)))(新半径子列表、原半径子列表、对象属性列表)
(entupd ename)
)

(prompt "\n ***** <PJ> ***** 更新圆半径")
(princ)




能不能改成先输入孔径,然后再改圆大小


andyding 发表于 2023-6-30 11:22:11

zwq8629 发表于 2023-6-30 08:11
能不能改成先输入孔径,然后再改圆大小

(setq   ss(ssget '((0 . "CIRCLE")))
    rad (getreal "请输入新的半径 : ")
    n   -1
)

改成
(setq    rad (getreal "请输入新的半径 : ")
             ss(ssget '((0 . "CIRCLE")))   
    n   -1
)

czb203 发表于 2023-6-29 22:48:38


(defun C:PJ (/ ss n s1)
(prompt "\n选择 : ")
(setq   ss(ssget '((0 . "CIRCLE")))
    rad (getreal "请输入新的半径 : ")
    n   -1
)
(if (/= ss nil)
    (progn
      (repeat (sslength ss)
      (setq s1 (ssname ss (setq n (1+ n))))
      (sub_upd s1 40 rad)
      )
    )
)
(princ)
)
;用新值替换旧值(对象、群码、新值)
(defun sub_upd (ename code newvalue)
(entmod (subst (cons code newvalue) (assoc code (entget ename))(entget ename)));(新半径子列表、原半径子列表、对象属性列表)
(entupd ename)
)

(prompt "\n ***** <PJ> ***** 更新圆半径")
(princ)

zwq8629 发表于 2023-6-30 08:11:40

czb203 发表于 2023-6-29 22:48


能不能改成先输入孔径,然后再改圆大小

水洗可口可乐 发表于 2023-6-30 10:51:23

czb203 发表于 2023-6-29 22:48


修改成直径,要动哪个字符?

andyding 发表于 2023-6-30 11:08:43

水洗可口可乐 发表于 2023-6-30 10:51
修改成直径,要动哪个字符?

前面输直径的话,把下面这行改一下就行。
(sub_upd s1 40 rad)---》(sub_upd s1 40 (* rad 0.5))

水洗可口可乐 发表于 2023-6-30 11:12:48

andyding 发表于 2023-6-30 11:08
前面输直径的话,把下面这行改一下就行。
(sub_upd s1 40 rad)---》(sub_upd s1 40 (* rad 0.5))

修改成了,谢谢你

zwq8629 发表于 2023-6-30 18:13:30

andyding 发表于 2023-6-30 11:22
(setq   ss(ssget '((0 . "CIRCLE")))
    rad (getreal "请输入新的半径 : ")
    n   -1


谢谢

如果要输入直径后,点一个圆改一个圆(不要框选后一起改)要改哪里?

andyding 发表于 2023-6-30 20:41:02

zwq8629 发表于 2023-6-30 18:13
谢谢

如果要输入直径后,点一个圆改一个圆(不要框选后一起改)要改哪里?

(defun C:PJ (/ ss n s1 rad)
(setq rad (getreal "\n请输入新的半径 : "))
(while (setq ss (ssget '((0 . "CIRCLE"))))
    (setq n 0)
    (repeat (sslength ss)
      (setq s1 (ssname ss n))
      (sub_upd s1 40 rad)
      (setq n (1+ n))
    )
)
(princ)
)

;;;用新值替换旧值(对象、群码、新值)
(defun sub_upd (ename code newvalue)
(entmod (subst (cons code newvalue)
               (assoc code (entget ename))
               (entget ename)
          )
);;;(新半径子列表、原半径子列表、对象属性列表)
(entupd ename)
)
(prompt "\n ***** <PJ> ***** 更新圆半径")
(princ)
页: [1]
查看完整版本: 求助,加载错误