| 给个简单的例子. 
  (defun GetA3Blocks (/ ss i ent blk_info minpt maxpt scale bbox_list)
  ;;; 搜索图中所有名为"A3图框"的图块并返回包围盒信息
  (setq bbox_list '())
  (if (setq ss (ssget "_X" '((0 . "INSERT") (2 . "A3图框"))))
    (progn
      (setq i 0)
      (repeat (sslength ss)
        (setq ent (ssname ss i)
              blk_info (entget ent))
        (setq scale (cdr (assoc 41 blk_info)))  ; 获取X方向比例因子 
        (setq blk_obj (vlax-ename->vla-object ent))
        (vla-getboundingbox blk_obj 'minpt 'maxpt)
        (setq minpt (vlax-safearray->list minpt)
              maxpt (vlax-safearray->list maxpt))
        ; 添加到返回列表: (比例 ((左下点) (右上点)))
        (setq bbox_list (cons (list scale (list minpt maxpt)) bbox_list))
        (setq i (1+ i))
      )
    )
  )
  (reverse bbox_list)  ; 返回结果列表
)
 
(defun PointInBoundingBox (pt minpt maxpt)
  ;;; 判断点是否在包围盒内 
  (and 
    (>= (car pt) (car minpt))
    (>= (cadr pt) (cadr minpt))
    (<= (car pt) (car maxpt))
    (<= (cadr pt) (cadr maxpt))
  )
)
 
(defun c:Dli ( / pt block_list found scale dimstyle oldDimStyle currDimStyle)
  ;;; 主命令函数
  (setq block_list (GetA3Blocks))  ; 获取所有A3图框信息 
  
  (if (null block_list)
    (princ "\n未找到A3图框!")
    (progn 
      (setq pt (getpoint "\n请拾取标注点: "))
      (if pt 
        (progn
          ; 查找包含点的图框 
          (setq found nil)
          (foreach block_info block_list 
            (setq minpt (caadr block_info)
                  maxpt (cadadr block_info))
            (if (PointInBoundingBox pt minpt maxpt)
              (setq found block_info)
            )
          )
          
          (if found
            (progn 
              (setq scale (car found)
                    dimstyle (strcat "dim-" (itoa (fix scale))))
              
              ; 检查标注样式是否存在 
              (if (tblsearch "DIMSTYLE" dimstyle)
                (progn
                  (setq doc(vla-get-activedocument (vlax-get-acad-object)))
                  (setq oldDimStyle(vla-get-activeDimStyle doc))
                  (setq currDimStyle(vla-item (vla-get-dimstyles doc) dimstyle))
                  
                  (vla-put-ActiveDimStyle doc currDimStyle)
                  (princ (strcat "\n切换到标注样式: " dimstyle))
                  
                  ; 绘制标注
                  (command "_.DIMLINEAR" pt pause pause)
                  (vla-put-ActiveDimStyle doc oldDimStyle)
                )
                (princ (strcat "\n标注样式" dimstyle "不存在!"))
              )
            )
            (princ "\n拾取点不在任何A3图框范围内!")
          )
        )
        (princ "\n未拾取点!")
      )
    )
  )
  (princ)
)
 
(princ "\nDli命令已加载,输入Dli启动")
(princ)
 |