命名块的Bcount lisp
是否有方法将bcount命令合并到lisp中,以仅计算名为“E”的块。在运行bcount命令之前,我需要以某种方式选择所有名为“E”的块。有什么建议吗?谢谢(if (setq ss (ssget "_x" '((2 . "E"))))
(sssetfirst nil ss)
)
此外,内置命令QSELECT和FILTER也可以帮您完成这项工作。 Tharwat I被支持该代码只使用2的一个dxf代码。还有许多其他对象也使用2,是否最好添加仅搜索块(0。“插入”)作为使用ssget的更一般示例。
'((0 . "INSERT")(2 . "E")) 这是可能的,尽管可能性很小。AttDefs(2=标记名)、图案填充(2=图案)、形状(2=形状名称)、维度(2=匿名块名-*D前缀)、表格(2=匿名块名-*T前缀)等在代码2项中可能有类似的内容。不过要确保你的方式更加完整和明确。 或者可能:(它也适用于动态块-使用一些acet函数快速且脏)
(defun c:bcc (/ table dcl lsblk nm ss tol)
;Ketxu 2012
(vl-load-com)
(defun table (s / d r)
(while (setq d (tblnext s (null d)))
(setq r (cons (cdr (assoc 2 d)) r))
)
)
(defun DCL(Title @ ThongTin lstVal / fl ret)
(setq fl (vl-filename-mktemp "mip" nil ".dcl"))
(setqret (open fl "w"))
(mapcar
'(lambda (x) (write-line x ret))
(list
"mip_msg : dialog { "
(strcat "label=\"" title "\"; width = 40;fixed_width = true;");
":popup_list {label = \"Block : \";key=\"kLst\";}"
": column {"
": row {"
" fixed_width = true;"
" alignment = centered;"
":button {label = \"\OK\"; is_cancel = true;fixed_width = true;width = 1;}"
" : spacer { width = 2; }"
":button {label = \"About\";fixed_width = true;width = 1;key = \"kThongTin\";}"
"}"
"}"
" :text_part {alignment=centered;"
(strcat "label=\"" @ "\";")
"}}"
)
) ;_ end of mapcar
(setq ret (close ret))
(if (and (not (minusp (setq dcl_id (load_dialog fl))))
(new_dialog "mip_msg" dcl_id)
) ;_ end of and
(progn
(start_list "kLst" 3)
(mapcar '(lambda(x)(add_list x)) lstVal)
(end_list)
(action_tile "kLst" "(setq ret (nth (atoi $value) lstVal))")
(start_dialog)
) ;_ end of progn
) ;_ end of if
(unload_dialog dcl_id)
(vl-file-delete fl)
ret
)
(setq lstBlk (vl-remove-if '(lambda(x)(wcmatch x "`**"))(acad_strlsort (table "Block"))))
(cond ((setq nm (DCL "Select block :" "@Ketxu" "Count choiced block @Ketxu" lstBlk))
(setqss(ssget (list (cons 0 "INSERT")(cons 2 (strcat nm ",`**"))))
tol (length (setq tmp (vl-remove-if-not '(lambda(x)(= (vla-get-EffectiveName (vlax-ename->vla-object x)) nm)) (acet-ss-to-list ss))))
)
))
(cond ((> tol 0)
(sssetfirst nil (acet-list-to-ss tmp))
(princ (strcat "Number of block " nm " in selection area : " (itoa tol) ))
)(T (princ "Nothing"))
)
(princ)
)
页:
[1]