Gu_xl 发表于 2014-11-16 20:50:36

本帖最后由 Gu_xl 于 2014-11-16 20:56 编辑

易云网络 发表于 2014-11-16 20:39 static/image/common/back.gif
炸开后选择圆弧,选择后还原,还原是一定的不需要判断
你都undo了,ss自然为nil了,你需要在undo之前将ss中的arc数据读取保存下来,然后再undo,然后对保存下来的数据进行后续操作!
(defun C:css ()
(setvar "cmdecho" 0)
(setvar "QAFLAGS" 1)
(setqss1 (ssget "x"
       '((-4 . "<OR")
         (0 . "POLYLINE")
         (0 . "LWPOLYLINE")
         (-4 . "OR>")
      )
      )
)

(command "_.undo" "be")
;;
(COMMAND ".EXPLODE" ss1 "")
(setvar "QAFLAGS" 0)

(setqss (ssget "x"
      '((-4 . "<and")
      (0 . "ARC")
      (-4 . ">")
      (40 . 1.)
      (-4 . "and>")
       )
   )
n(sslength ss)
kk n
)
;;保存圆弧数据
(setq data nil)
(repeat n
    (setq data (cons (entget (ssname ss (setq n (1- n)))) data))
)

(command "_.undo" "e")
;;
(command ".undo" 1)
(foreach a data
    (print (entget (entmakex a)))
    ;;创建新的圆弧
)
(princ)
)

易云网络 发表于 2014-11-16 20:58:01

Gu_xl 发表于 2014-11-16 20:50 static/image/common/back.gif
你都undo了,ss自然为nil了,你需要在undo之前将ss中的arc数据读取保存下来,然后再undo,然后对保存下来的 ...

今天能让两个超级版主来回答我的疑惑,真的太感动了。
顺变给个数据保存函数吧

ZZXXQQ 发表于 2014-11-17 08:21:29

易云网络 发表于 2014-11-16 20:31 static/image/common/back.gif
搞不定啊,搞了一天了

不知道是我说的不明确,还是你看不明白。(defun C:css()
(setvar "CMDECHO" 0)
(setq ss1 (ssget "x" '((0 . "*POLYLINE"))))
(command "QAFLAGS" 1 ".EXPLODE" ss1 "" "QAFLAGS" 0)
(setq ss (ssget"x"'((0 . "ARC") (-4 . ">") (40 . 1.)))
          datlst (list))
(repeat (setq i (sslength ss))
(setq datlst (cons (entget(ssname ss (setq i (1- i)))) datlst))
)
(command "u")
;...处理表datlst中的内容。
(setvar "CMDECHO" 1)
(princ)
)

易云网络 发表于 2014-11-17 12:52:46

ZZXXQQ 发表于 2014-11-17 08:21 static/image/common/back.gif
不知道是我说的不明确,还是你看不明白。

不是你说得不明白,主要是我不会保存,谢谢你,现在会了
页: 1 [2]
查看完整版本: 多段线,炸开后图元名问题