明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 770|回复: 8

[提问] 请问扩展数据xdada

[复制链接]
发表于 2020-4-9 00:31:56 | 显示全部楼层 |阅读模式

请问我想要选择全部 “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)
)

发表于 2020-4-9 08:28:38 | 显示全部楼层
(setq ename (ssname ssh 0))
这个只是一个图元,需要来个循环
发表于 2020-4-9 09:10:58 | 显示全部楼层

  1. (defun c:tt2 (/ i ssh ename vname datatype data)
  2.   (if (setq ssh (ssget  '((0 . "LINE"))))
  3.     (progn
  4.       (setq i 0)
  5.       (repeat (sslength ssh)
  6.         (setq ename (ssname ssh i))
  7.         (setq i (+ 1 i))
  8.         (setq vname (vlax-ename->vla-object ename))
  9.         (setq datatype (vlax-make-safearray vlax-vbInteger '(0 . 1)))
  10.         (vlax-safearray-fill datatype '(1001 1000))
  11.         (setq data (vlax-make-safearray vlax-vbvariant '(0 . 1)))
  12.         (vlax-safearray-fill data '("Bend" "BEND_ANGLE:90"))
  13.         (vla-setxdata vname datatype data)
  14.       )
  15.     )
  16.   )
  17.   (princ)
  18. )
 楼主| 发表于 2020-4-9 18:08:33 | 显示全部楼层

真是太感谢你了,解决我一直想不透的地方,原来只是要再加个偱环
我可以再请问你一下,这个是我另外写的一个程式,
因为角度可能会变化,用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)


)


发表于 2020-4-9 18:32:25 | 显示全部楼层
(entsel)本身就是单选
你要按板凳楼那样改成ssget+repeat
 楼主| 发表于 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)
)
发表于 2020-4-9 22:07:08 | 显示全部楼层
(setq ent1_data(append ent1_data (list xdata)));ent1_data  这个是你前面的选择集 应该为组码值才对
  (entmod ent1_data)这个也应该是更新组码

发表于 2020-4-9 22:22:58 | 显示全部楼层
  1. (defun c:BD ( /  ent1_data i  ename get  xdata)
  2.   (if (setq ent1_data (ssget '((0 . "LINE") )))
  3.     (progn
  4.       (setq i 0)
  5.       (regapp "TC_BEND_DATA");注册写在最前面,避免每个循环都去注册
  6.       (setq ese3 (getstring "\n請輸入角度:" "90"));同理可得,如果是相同的值就应该放循环外面
  7.       (repeat (sslength ent1_data)
  8.         (setq ename (ssname ent1_data i))
  9.         (setq get (entget ename))
  10.         (setq i (+ 1 i))
  11.         (setq st (strcat "TC_BEND_ANGLE:" ese3))
  12.         (setq xdata(list -3 (list "TC_BEND_DATA" (cons 1000 st))))
  13.         (setq get (append get (list xdata)))
  14.         (entmod get)
  15.         )
  16.       )
  17.     )
  18.   (princ)
  19. )


给你写出来了,可以参考下
 楼主| 发表于 2020-4-10 12:39:47 | 显示全部楼层
jun353835273 发表于 2020-4-9 22:22
给你写出来了,可以参考下

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

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

请问你有方向可以指导吗

如下图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-18 07:25 , Processed in 0.144375 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表