2564277832 发表于 2020-4-9 00:31:56

请问扩展数据xdada


请问我想要选择全部 “R”层的线一起将扩充数据添加数据可是,选取是可以全部选,添加数据总是只有其中一条
求高手
(defun BENDR90 ()       
(setq ssh (ssget "x" '((0 . "LINE")(8 . "R"))))
   (setq ename (ssname ssh 0))
(setq vname (vlax-ename->vla-object ename))
(setq datatype (vlax-make-safearray vlax-vbInteger '(0 . 1)))
(vlax-safearray-fill datatype '(1001 1000))
(setq data (vlax-make-safearray vlax-vbvariant '(0 . 1)))
(vlax-safearray-fill data '("Bend" "BEND_ANGLE:90"))
(vla-setxdata vname datatype data)
(princ)
)

jun353835273 发表于 2020-4-9 08:28:38

(setq ename (ssname ssh 0))
这个只是一个图元,需要来个循环

jun353835273 发表于 2020-4-9 09:10:58


(defun c:tt2 (/ i ssh ename vname datatype data)
(if (setq ssh (ssget'((0 . "LINE"))))
    (progn
      (setq i 0)
      (repeat (sslength ssh)
        (setq ename (ssname ssh i))
        (setq i (+ 1 i))
        (setq vname (vlax-ename->vla-object ename))
        (setq datatype (vlax-make-safearray vlax-vbInteger '(0 . 1)))
        (vlax-safearray-fill datatype '(1001 1000))
        (setq data (vlax-make-safearray vlax-vbvariant '(0 . 1)))
        (vlax-safearray-fill data '("Bend" "BEND_ANGLE:90"))
        (vla-setxdata vname datatype data)
      )
    )
)
(princ)
)

2564277832 发表于 2020-4-9 18:08:33

jun353835273 发表于 2020-4-9 09:10


真是太感谢你了,解决我一直想不透的地方,原来只是要再加个偱环我可以再请问你一下,这个是我另外写的一个程式,因为角度可能会变化,用ENTGET    也只能选一个,能否指导一下,可以增加多选择多条线一起还是可以用你写的程式再多个变数?
(defun BD()(setq ent1_data(entget(car(entsel))))(setq ese3 (getstring "\n角度""90"))(regapp "TC_BEND_DATA")   (setq st (strcat"TC_BEND_ANGLE:" ese3))(setq xdata(list -3 (list"TC_BEND_DATA"(cons 1000 st))))(setq ent1_data(append ent1_data (list xdata)))
(entmod ent1_data)

)

masterlong 发表于 2020-4-9 18:32:25

(entsel)本身就是单选
你要按板凳楼那样改成ssget+repeat

2564277832 发表于 2020-4-9 18:58:07

masterlong 发表于 2020-4-9 18:32
(entsel)本身就是单选
你要按板凳楼那样改成ssget+repeat

请问是我改这样是但执行后
错误: 损坏的自变量类型: listp <Selection set: 2d8c>
不知哪没写好

麻烦请指教

(defun c:BD()
(if (setq ent1_data (ssget   '((0 . "LINE")(8 . "R"))))
(progn
      (setq i 0)
      (repeat (sslength ent1_data)
      (setq ename (ssname ent1_data i))
      (setq i (+ 1 i))   

;(setq ent1_data(entget(car (ssh ))))
(setq ese3 (getstring "\n請輸入角度:" "90"))
(regapp "TC_BEND_DATA")
   (setq st (strcat"TC_BEND_ANGLE:" ese3))
(setq xdata(list -3 (list"TC_BEND_DATA"(cons 1000 st))))

(setq ent1_data(append ent1_data (list xdata)))

(entmod ent1_data)

)
)
)
(princ)
)

jun353835273 发表于 2020-4-9 22:07:08

(setq ent1_data(append ent1_data (list xdata)));ent1_data这个是你前面的选择集 应该为组码值才对
(entmod ent1_data)这个也应该是更新组码

jun353835273 发表于 2020-4-9 22:22:58

(defun c:BD ( /ent1_data iename getxdata)
(if (setq ent1_data (ssget '((0 . "LINE") )))
    (progn
      (setq i 0)
      (regapp "TC_BEND_DATA");注册写在最前面,避免每个循环都去注册
      (setq ese3 (getstring "\n請輸入角度:" "90"));同理可得,如果是相同的值就应该放循环外面
      (repeat (sslength ent1_data)
        (setq ename (ssname ent1_data i))
        (setq get (entget ename))
        (setq i (+ 1 i))
        (setq st (strcat "TC_BEND_ANGLE:" ese3))
        (setq xdata(list -3 (list "TC_BEND_DATA" (cons 1000 st))))
        (setq get (append get (list xdata)))
        (entmod get)
        )
      )
    )
(princ)
)


给你写出来了,可以参考下

2564277832 发表于 2020-4-10 12:39:47

jun353835273 发表于 2020-4-9 22:22
给你写出来了,可以参考下

真的是非常感谢你,程序非常完美

接下来我要再把1000 的字符串取出来,并对齐于在线

请问你有方向可以指导吗

如下图

页: [1]
查看完整版本: 请问扩展数据xdada