注册 登录
明经CAD社区 返回首页

用NX软件,同时做一个NX的人 http://www.mjtd.com/?7309567 [收藏] [复制] [分享] [RSS] 问世间情为何物!如果你對現在不滿意...否則你就好好學,因爲你還只是菜鳥...

日志

收藏无痕的改标注高度 希望日后可以加入单多行文字高度一起修改

热度 1已有 585 次阅读2015-7-21 16:49 |系统分类:应用

  1. ;| dmth = 改变标注文字高度.  by lxx.2008.4
  2. 说明:1.标注文字高度受到文本style影响,如果style默认高度不为0,直接put-TextHeight无效.
  3.    2.本程序考虑了不同标注类型的文本及全局比例,统一按指定高度改变.
  4.    3.公差可同比缩放.
  5. |;
  6. (defun c:dmth (/ h ss i e o st sts)
  7.   (vl-load-com)
  8.   (command ".undo" "be")
  9.   (setq h (getdist "\n 指定标注文字高度:"))
  10.   (setq ss (ssget '((0 . "DIMENSION")))
  11.  i  -1
  12.   )
  13.   (while (setq e(ssname ss (setq i (1+ i))))
  14.     (setq o (vlax-ename->vla-object e))
  15.     (setq st (vlax-ename->vla-object (tblobjname "style" (vla-get-TextStyle o)))
  16.    sth (vla-get-height st))
  17.     (if (/= 0. sth)
  18.       (progn
  19.  (setq sts (cons (list st sth) sts))
  20.  (vla-put-height st 0.)     
  21.       )
  22.     )
  23.     (vla-put-TextHeight o (/ h (vla-get-ScaleFactor o)))
  24.   )
  25.   (if sts (mapcar '(lambda(x)(vla-put-height (car x)(cadr x)))sts))
  26.   (command ".undo" "e")
  27.   (princ)
  28. )
  29.  
  30.  
  31.  
  32.  

如果上下两个程序能合并就完美了!可以一键统一字高的问题

统一字高度和文字样式
;;统一字高
(defun C:w2 (/ E EN N NAME OBJ SCL SS STY TEXTH)
  (cond   
    ((and (princ "\n 选择源:")
          (setq e (ssget "_+.:E:S" '((0 . "*TEXT,*DIMENSION"))))
     )
     (setq e (ssname e 0))
     (setq en (entget e))
     (setq Name (cdr (assoc 0 en)))
     (cond ((equal Name "DIMENSION")
            (setq obj (vlax-ename->vla-object e))
            (setq sty (vlax-get obj 'TextStyle))
            (setq scl (vlax-get obj 'ScaleFactor))
            (setq TextH (vlax-get obj 'TextHeight))
           )
           ((wcmatch Name "*TEXT")
            (setq TextH (cdr (assoc 40 en)))
            (setq sty (cdr (assoc 7 en)))
            (setq scl 1)
           )
     )    
     (while (and(princ "\n 选择目标:")(setq ss (ssget ":S" '((0 . "*TEXT,*DIMENSION")))))
       (repeat (setq n (sslength ss))
         (setq e (ssname ss (setq n (1- n))))
         (setq en(entget e))
         (setq Name (cdr (assoc 0 en)))
         (cond ((equal Name "DIMENSION")
                (setq obj (vlax-ename->vla-object e))
                (vlax-put obj 'TextStyle sty)
        
                (vlax-put obj 'ScaleFactor scl)
               )
               ((wcmatch Name "*TEXT")
                (setq en(entget e))
                (setq en (subst (cons 7 sty) (assoc 7 en) en))
                (entmod (subst (cons 40 (* TextH scl)) (assoc 40 en) en))
               )
         )
       )
     )
    )
  )
  (princ)
)
 


路过

雷人

握手

鲜花
1

鸡蛋

刚表态过的朋友 (1 人)

评论 (0 个评论)

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-10 04:39 , Processed in 0.078389 second(s), 15 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部