lisp提取多点assoc_如何用lisp程序提取选择的属性块中的length属性,并加合,最后给出结果...

这是一个LISP程序,用于从指定的属性块中提取名为'length'的属性值,将这些值转换为数值并进行加总,最终输出结果。程序包括两个子函数,一个用于获取属性值列表,另一个对列表中的值进行求和操作。
摘要由CSDN通过智能技术生成

满意答案

dcebd7a0de6265b6ccae5ead692f1eab.png

sadagfasdad

推荐于 2016.01.11

(Defun C:T911 (/ lstText i sum textA tmp)

;;子函数:返回列表4102("52" "36" "48")

(Defun GetAttsFromBlk(/ lstSS ss i lstText en vn lstAttrs TagString)

(setq lstSS '((0 . "INSERT") (2 . "wdx_new_00")))

(setq ss (vl-catch-all-apply 'ssget (list lstSS)))

(cond ((or (null ss) (vl-catch-all-error-p ss)) (vl-exit-with-value 0)))

(setq i 0)

(setq lstText '())

(repeat (sslength ss)

(setq en (ssname ss i)

i (1+ i)

vn (vlax-ename->vla-object en)

lstAttrs (vlax-safeArray->list (vlax-variant-value (vla-getattributes vn)))

)

(foreach attr lstAttrs

(setq TagStr

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Lisp(LISt Processing)是一种编程语言,常被用于自动化CAD软件的开发与扩展。对于提取CAD的所有属性,可以使用Lisp编写程序来完成。 在CAD软件(Block)是一种重要的元素,它可以将多个实体对象组合成一个整体,并赋予其唯一的标识符和属性可以包含属性,这些属性可以用于进一步描述和标识。 要提取CAD的所有属性,可以按照以下步骤进行操作: 1. 在Lisp,使用`(ssget)`函数选择所有的对象,将其保存在一个选择。 2. 遍历选择集,使用`(entget)`函数逐个获取每个对象的详细信息。 3. 对于每个对象,使用`(entget)`函数获取其属性列表。 4. 遍历属性列表,使用`(cdr)`函数逐个提取每个属性的键值对。 5. 将提取到的属性信息进行处理和保存,可以输出到控制台或者写入文件。 下面是一个简单的示例代码,用于在AutoCAD软件提取CAD的所有属性: ```lisp (defun extract-block-attributes () (setq block-ss (ssget "X" '((0 . "INSERT")))) (setq block-count (sslength block-ss)) (setq attribute-list '()) (repeat block-count (setq block (ssname block-ss (setq i (1+ i)))) (setq attribute-ss (ssget "X" (list '(0 . "ATTRIB") (cons 2 (cdr (assoc 2 (entget block))))))) (setq attribute-count (sslength attribute-ss)) (setq j 0) (repeat attribute-count (setq attribute (ssname attribute-ss (setq j (1+ j)))) (setq attribute-data (entget attribute)) (setq attribute-list (append attribute-list (list attribute-data))) ) ) (setq attribute-count (length attribute-list)) (repeat attribute-count (setq attribute-data (nth (setq i (1+ i)) attribute-list)) (princ (cdr (assoc 2 attribute-data))) ; 输出属性名称 (princ ": ") (princ (cdr (assoc 1 attribute-data))) ; 输出属性值 (princ) ; 换行 ) ) ``` 上述代码通过`(ssget)`函数选择所有对象,然后使用`(ssget)`函数再次选择对应的属性对象。通过遍历属性列表,再分别提取属性的键名和键值,并逐个输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值