happybaby 发表于 3 天前

删除动态块下的可见性状态,加载成功,执行失败,求助

(defun c:sckjx ()
(defun delete-blocks-with-visibility (block-name visibility-states)
    (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 block-name))))
    (if ss
      (progn
      (setq success nil)
      (setq count 0)
      (repeat (sslength ss)
          (setq ent (ssname ss count))
          (setq ent-data (entget ent))
          (setq visibility-state (cdr (assoc 290 ent-data)))
          (if (member visibility-state visibility-states)
            (progn
            (command "_erase" ent "")
            (setq ss (ssdel ent ss))
            (setq success T)
            )
          )
          (setq count (1+ count))
      )
      success
      )
      nil
    )
)

(defun main ()
    (setq block-name "0-直通阀")
    (setq visibility-states '(
      "气动常闭隔膜阀(带限位)" "气动常开隔膜阀(带限位)" "气动常开隔膜阀(带控制)" "气动常开隔膜阀(带关反馈)" "气动常开隔膜阀(带开反馈)" "气动常开隔膜阀(带双反馈)"
      "气动常闭蝶阀(带限位)" "气动常闭蝶阀(带控制)" "气动常闭蝶阀(带开反馈)" "气动常闭蝶阀(带关反馈)" "气动常闭蝶阀(带双反馈)" "气动常开蝶阀(带限位)" "气动常开蝶阀(带控制)" "气动常开蝶阀(带开反馈)" "气动常开蝶阀(带关反馈)" "气动常开蝶阀(带双反馈)"
      "气动常闭球阀(带限位)" "气动常闭球阀(带控制)" "气动常闭球阀(带开反馈)" "气动常闭球阀(带关反馈)" "气动常闭球阀(带双反馈)" "气动常开球阀(带限位)" "气动常开球阀(带控制)" "气动常开球阀(带开反馈)" "气动常开球阀(带关反馈)" "气动常开球阀(带双反馈)"
      "手动柱塞阀" "气动角座阀(带限位)" "气动角座阀(带开反馈)" "气动角座阀(带关反馈)" "气动角座阀(带双反馈)" "αβ阀" "倒吊桶式疏水阀" "热动力式疏水阀"
      "电动常闭隔膜阀" "电动常开隔膜阀" "电动常闭蝶阀" "电动常开蝶阀" "电动常闭球阀" "电动常开球阀" "电动角座阀" "常闭电磁阀" "常开电磁阀" "RTP阀" "SART系统"
    ))

    (if (delete-blocks-with-visibility block-name visibility-states)
      (princ "\n操作成功!")
      (princ "\n操作失败!")
    )
)

(main)
(princ)
)
=========================================================================================
哪里错误了?

happybaby 发表于 3 天前

函数用错了么?好像错在没有找到块,在找可见性状态时。

happybaby 发表于 3 天前

发现我把动态块换个名字,试着删除动态块,函数也找不到,奇怪

你有种再说一遍 发表于 3 天前

不要发错地方了,先点进去lisp版本再发帖

飞雪神光 发表于 3 天前

动态块的可见性状态能删除?组码290是什么鬼?你这代码AI写的吧 删可见性 炸了重做或者直接再做一次块就行了

happybaby 发表于 3 天前

我不会,所以不懂,哪位大神可以帮忙写一个吗?我出钱吧!这实在没帮忙了,私聊发我联系方式我加您!我需要用到!

chslwj521 发表于 昨天 10:53

(setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 block-name)))) 这个错了哈。这样是选不到的。block-name这个是变量吧,改(setq ss (ssget "X" (list ‘(cons 0 "INSERT") (cons 2 block-name))))这样应该可以选到SS
页: [1]
查看完整版本: 删除动态块下的可见性状态,加载成功,执行失败,求助