;; ▓ (ltax:ss->axss ss) ;; [功能] 将 ALISP 选择集转换为 VLA 选择集 ;; [参数] ss---选择集 (defun ltax:ss->axss (ss / ssp axss) (setq ssp (ssget "_p")) (sssetfirst nil ss) (ssget "_I") (setq axss (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (if (cadr (sssetfirst nil ssp)) (ssget "_I")) (sssetfirst) axss ) (Defun c:tt ( / blk bnn bnx data ii scl sn ss ssi str) (princ "\n 请选择图块 <退出>:") (setq ss (ssget '((0 . "INSERT,TEXT")))) (vlax-for BLK (ltax:ss->axss ss) (vlax-for X BLK (if (and (= (vla-get-objectname X) "AcDbAttributeDefinition") (wcmatch (setq str (vla-get-promptstring X)) "标高*" ) ) (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) ) 这样也不行? |