明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 310|回复: 6

[提问] 属性块求和

[复制链接]
发表于 7 天前 | 显示全部楼层 |阅读模式
本帖最后由 doounuo 于 2025-1-16 14:09 编辑

有没有选择块,对块内单一属性进行求和的lisp文件,如图,里面包含字母,对长度进行求和
上传了,文件,请大佬看看能不能实现

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 7 天前 | 显示全部楼层
本帖最后由 自贡黄明儒 于 2025-1-15 17:58 编辑

这个可以的。你查每一个块的属性值就可以了。假如块名为b1,(entnext b1)就可以找到。
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
本帖最后由 llsheng_73 于 2025-1-16 09:06 编辑

  1. (defun getatts(blk)
  2.   (if(equal(VL-CATCH-ALL-APPLY'vlax-get-property(list(setq blk(if(=(type blk)'ename)(vlax-ename->vla-object blk)blk))'HasAttributes)):vlax-true)
  3.     (mapcar(function(lambda(x)(list(vlax-get-property x'TagString)(vlax-get-property x'TextString)x)))(vlax-safearray->list(vlax-variant-value(vlax-invoke-method blk'GetAttributes))))))
  4. (defun s2e(s / n lst)(if(=(type s)'pickset)(repeat(setq n(sslength s))(setq n(1- n)lst(cons(ssname s n)lst)))))

(apply'+(mapcar'(lambda(x)(read(VL-STRING-TRANSLATE"m"" "(cadr(assoc"长度"(getatts x))))))(s2e(ssget'((0 . "insert")(2 . "*长度标注"))))))
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
llsheng_73 发表于 2025-1-16 08:48
(apply'+(mapcar'(lambda(x)(read(cadr(assoc"长度"(getatts x)))))(s2e(ssget'((0 . "insert")(2 . "*长 ...

错的,长度带有m,算不了加法
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
本帖最后由 llsheng_73 于 2025-1-16 09:06 编辑
kozmosovia 发表于 2025-1-16 09:01
错的,长度带有m,算不了加法

m是最后的,read后没了,但会丢掉小数,得将它替换成" ",修改了
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
read之后不会变数字

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层
(vl-string-right-trim "Mm" "100m")
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-22 18:44 , Processed in 0.183950 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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