本帖最后由 namezg 于 2013-6-17 21:15 编辑
你原代码太麻烦,我写了一个完整的。
- ;获得标注图元的线性比例
- ;ename -- 标注图元名
- ;(zg-get-dimlfac (setq ename (car (entsel "\n选择标注对象: "))))
- ;方法一
- (defun zg-get-dimlfac (ename / dxf dat lst dimlfac DimstyleName)
- (if (and ename
- (setq dxf (entget ename '("*")))
- (= (cdr (assoc 0 dxf)) "DIMENSION")
- )
- (if (and (setq dat (assoc -3 dxf))
- (setq lst (cadr dat))
- (setq lst (member (cons 1070 144) lst))
- )
- (setq dimlfac (cdadr lst))
- (progn
- (setq DimstyleName (cdr (assoc 3 dxf)))
- (setq lst (tblsearch "dimstyle" DimstyleName))
- (setq dimlfac (cdr (assoc 144 lst)))
- )
- )
- )
- )
- ;|
- ;获得标注图元的线性比例
- ;ename -- 标注图元名
- ;(zg-get-dimlfac (setq ename (car (entsel "\n选择标注对象: "))))
- ;方法二:
- (defun zg-get-dimlfac (ename / dxf obj dimlfac)
- (if (and ename
- (setq dxf (entget ename '("*")))
- (= (cdr (assoc 0 dxf)) "DIMENSION")
- )
- (setq dimlfac (vla-get-LinearScaleFactor (vlax-ename->vla-object ename)))
- )
- )
- |;
- ;选取并亮显线性比例不为1的标注对象
- (defun c:er (/ ss i en ss1)
- (setq ss (ssget "x" '((0 . "dimension"))))
- (setq i 0)
- (setq ss1 (ssadd))
- (repeat (sslength ss)
- (setq en (ssname ss i))
- (if (/= (zg-get-dimlfac en) 1.0)
- (ssadd en ss1)
- )
- (setq i (1+ i))
- )
- (sssetfirst nil ss1)
- )
|