本帖最后由 作者 于 2009-5-24 10:31:04 编辑
我有的是CPU酷瑞双核2.5G,内存2G,CAD2007.我这个程序是想对已有的选择集进行处理的。 (Defun c:tt ( / blk bnn bnx data ii scl sn ss ssi str) (princ "\n 请选择图块 <退出>:") (setq ss (ssget '((0 . "INSERT")))) (vlax-for BLK (vla-get-blocks (vla-get-activedocument (vla-get-objectname ss)) );在此如何对已有选择对象SS进行判断呢?这里这样好像不行 (vlax-for ss BLK (if (and (= (vla-get-objectname ss) "AcDbAttributeDefinition") (wcmatch (setq str (vla-get-promptstring ss)) "标高*" ) ) (setq data (cons (cons (vla-get-name BLK) (read (vl-string-subst "" "标高_1:" str ) ) ) data ) ) ) ) ) (foreach blk data (setq bnn (car blk) bnn (if (= (substr bnn 1 1) "*") (strcat "`" bnn) bnn ) ) (if (null bnx) (setq bnx bnn) (setq bnx (strcat bnx "," bnn)) ) ) (if (and (/= nil bnn) (setq ii -1)) (progn (vl-cmdf "select" ss "") (setq ssi (ssget "p" (list (cons 0 "INSERT") (cons 2 bnn)))) (repeat (sslength ssi) (setq sn (ssname ssi (setq ii (1+ ii))) scl (cdr (assoc (cdr (assoc 2 (entget sn))) data)) ) (command "_.Scale" sn "" (cdr (assoc 10 (entget sn))) (/ 50.0 scl) ) ) ) ) (princ) )
|