请问扩展数据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)
)
(setq ename (ssname ssh 0))
这个只是一个图元,需要来个循环
(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)
) 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)
)
(entsel)本身就是单选
你要按板凳楼那样改成ssget+repeat 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)
)
(setq ent1_data(append ent1_data (list xdata)));ent1_data这个是你前面的选择集 应该为组码值才对
(entmod ent1_data)这个也应该是更新组码
(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)
)
给你写出来了,可以参考下 jun353835273 发表于 2020-4-9 22:22
给你写出来了,可以参考下
真的是非常感谢你,程序非常完美
接下来我要再把1000 的字符串取出来,并对齐于在线
请问你有方向可以指导吗
如下图
页:
[1]