扩展数据的ssget筛选器
帮我了解发生了什么事。键入“点”并将点放置在空白图形中。现在键入“pline”并在屏幕上绘制任意长度的多段线。现在键入(regapp“test program”),然后复制/粘贴到这些程序中。(defun c:test1 ( / x pt edata xdata ndata)
(setq x (entsel "Select the point.")
pt (cadr x)
edata (entget (car x))
xdata (list -3 (list "test program" (cons 1000 "point") (cons 1011 pt)))
ndata (append edata (list xdata)))
(entmod ndata)
(entupd (cdr (assoc -1 ndata)))
(princ))
(defun c:test2 ( / x)
(if (setq x (ssget "a" '((-3 ("test program" (1000 . "point"))))))
(setq x (cdr (nth 2 (cadr (assoc -3 (entget (ssname x 0) '("test program"))))))))
x)
(defun c:test3 ( / x)
(if (setq x (ssget "a" '((-3 ("test program")))))
(setq x (cdr (nth 2 (cadr (assoc -3 (entget (ssname x 0) '("test program"))))))))
x)
现在键入“test1”并选择该点。现在输入“test2”,它是否返回NIL?
现在输入“test3”,它是否返回点?
再次键入“test1”并选择多段线。
现在键入“test2”,它是否返回附着到多段线的点?
现在请给我解释一下。为什么ssget不能过滤扩展数据中具有特定1000个字符串的点?但是同一个程序可以过滤附加到多段线的相同扩展数据?我希望答案不在眼前。 我认为您应该在添加数据之前添加regapp名称,这意味着您正在向nil对象添加数据。
其次,扩展数据(cons 1000“点”)没有任何意义,它导致ssget函数无法选择具有该特定regapp名称的目标对象。
这就是扩展数据代码的特点。
页:
[1]