664571221 发表于 2023-9-18 14:45:14

求输入tt,点击图块,把图块的数值型 A 的值 复制到粘贴板

本帖最后由 664571221 于 2023-9-18 14:47 编辑

求输入tt,点击图块,把图块的数值型 A的值 复制到粘贴板

jun353835273 发表于 2023-9-18 14:58:25

http://bbs.mjtd.com/thread-188597-1-1.html
组合下

飞雪神光 发表于 2023-9-18 15:14:52

(Defun lm-get-attribute (ty sx / lstattrs lstvar tagstring textstring vn0)
(setq vn (vlax-ename->vla-object ty))
(setq lstVar (vla-getattributes vn))
(setq lstAttrs (vlax-safeArray->list (vlax-variant-value lstVar)))
(setq TextString nil)
(foreach attr        lstAttrs
    (setq TagString (vla-get-TagString attr))
    (if        (equal TagString sx)        ;此处为你想要的元素
      (setq TextString (vla-get-TextString attr))
    )
)
        TextString
)
(defun set-clip-string (str / html result)
    (and (= (type str) 'str)
         (setq html (vlax-create-object "htmlfile"))
         (setq result (vlax-invoke (vlax-get (vlax-get html 'parentwindow) 'clipboarddata ) 'setdata "text" str))
         (vlax-release-object html)
    )
)
(set-clip-string (lm-get-attribute(car(entsel"\n选择属性块:")) "A"))

llsheng_73 发表于 2023-9-18 17:29:47

飞雪神光 发表于 2023-9-18 15:14


lm-get-attribute 里边 foreach宜用vl-some
(defun getattrib(blk tag)
(if(and(equal(VL-CATCH-ALL-APPLY(function vlax-get-property)
               (list(setq blk(if(=(type blk)'ename)(vlax-ename->vla-object blk)blk))'HasAttributes)):vlax-true)
      (=(type tag)'str)
       (setq tag(strcase tag)))
    (vl-some(function(lambda(a)(if(=(strcase(vlax-get-property a"TagString"))tag)a)))
          (vlax-safearray->list(vlax-variant-value(vlax-invoke-method blk'getattributes))))))

(set-clip-string(VL-CATCH-ALL-APPLY(function vlax-get-property)(list(getattrib(car(entsel""))"A")"TextString")))

飞雪神光 发表于 2023-9-18 19:04:09

llsheng_73 发表于 2023-9-18 17:29
lm-get-attribute 里边 foreach宜用vl-some

这个好 换了之后简洁好多

magicheno 发表于 2023-9-18 22:12:26

感谢大佬分享~

edsion24 发表于 2023-9-19 08:28:23

llsheng_73 发表于 2023-9-18 17:29
lm-get-attribute 里边 foreach宜用vl-some

怎么能把程序变成可以直接运行的程序呢,用一个命令

664571221 发表于 2023-9-19 14:25:32

edsion24 发表于 2023-9-19 08:28
怎么能把程序变成可以直接运行的程序呢,用一个命令

我也不清楚,你问问大佬,你是做啥行业的兄弟

664571221 发表于 2023-9-19 14:26:40

飞雪神光 发表于 2023-9-18 15:14


谢谢大佬分享

664571221 发表于 2023-9-19 14:27:48

llsheng_73 发表于 2023-9-18 17:29
lm-get-attribute 里边 foreach宜用vl-some

谢谢大佬分享
页: [1]
查看完整版本: 求输入tt,点击图块,把图块的数值型 A 的值 复制到粘贴板