从特定a中提取值
我刚开始使用AutoLISP,一直在努力自学它的工作原理。通过查看示例,我能够确定发生了什么。然而,我很难更新公司使用的现有LISP例程。创造者最近离开了。我不知道要更改什么,具体在哪里更改,或者如何更改/添加任何内容。这是我的情况。我们当前的LISP例程要求用户选择他们想要包括的标准块。选定的每个块中始终嵌入相同的4个属性标记(值更改)。其中三个属性(“族”、“描述”和“PN”)设置为常数,第四个属性(“SEC_NO”)可以由用户定义。LIPS例程获取这些值并创建一个表,其中标题为“SECTION NO”、“FAMILY”、“DESCRIPTION”和“PN”。这非常有效。
然而,我正在改变块的创建方式,以便更容易地创建和管理它们(将它们转换为动态块)。通过这样做,我在新块中创建了额外的属性。这些额外的属性破坏了我们当前的LISP例程。我想修改这个例程,以便它创建一个从上面列出的相同4个属性(“SEC_NO”、“FAMILY”、“DESCRIPTION”和“PN”)中提取的属性值列表,并忽略其余属性。属性的标记名将始终保持不变。
下面是创建表所用列表的例程部分。任何帮助都将不胜感激。如果有更简单的方法,我洗耳恭听。
-标记
(defun get-all-atts (obj / atts
att_list const_atts const_list ent)
(and
(if (and obj
(vlax-property-available-p
obj 'Hasattributes)
(eq :vlax-true
(vla-get-hasattributes obj))
)
(progn
(if
(not
(vl-catch-all-error-p
(vl-catch-all-apply
(function
(lambda
()
(setq atts (vlax-invoke obj
'Getattributes))
)
)
)
)
)
(setq
(progn
(foreach
att atts
(setq
att_list
(cons (cons
(vla-get-tagstring att)
(vla-get-textstring
att)
)
att_list
)
)
)
)
)
(if
(not
(vl-catch-all-error-p
(vl-catch-all-apply
(function
(lambda
()
(setq
const_atts
(vlax-invoke
obj
'Getconstantattributes
)
)
)
)
)
)
)
(progn
(foreach att
const_atts
(setq
const_list
(cons (cons
(vla-get-tagstring att)
(vla-get-textstring
att)
)
const_list
)
)
)
(setq
att_list (append const_list att_list))
)
)
)
)
)
(reverse att_list)
)
你好,马克,
替换以下代码:
(defun get-all-atts ( obj / lst tag )
(if (and obj (vlax-property-available-p obj 'hasattributes) (= :vlax-true (vla-get-hasattributes obj)))
(foreach att (append (vlax-invoke obj 'getattributes) (vlax-invoke obj 'getconstantattributes))
(if (member (strcase (setq tag (vla-get-tagstring att))) '("FAMILY" "DESCRIPTION" "PN" "SEC_NO"))
(setq lst (cons (cons tag (vla-get-textstring att)) lst))
)
)
)
(reverse lst)
)
您可能还会发现我的属性函数库很有用。
欢迎来到CADTutor 为什么不使用EATTEXT prodromosm,
我曾经考虑过EATTEXT,但不想使用属性提取,以使我们的过程尽可能简单,便于设计师使用。我正在努力减少点击次数,使其成为傻瓜。谢谢你的回复。
李·麦克,
你的代码运行得很好。我有一种感觉,它本可以写得更干净、更简单。此外,我上周也去过你的“属性函数”页面寻求帮助。然而,由于我是LISP新手,我很难决定使用什么以及需要添加/更改什么才能使其适用于我的应用程序。我更熟悉Excel中的VBA。
谢谢你的帮助。我真的很感激! 非常欢迎-如果您不确定如何从程序中调用我的属性函数,请询问。
页:
[1]