乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 158|回复: 5

原创分享:透视图尺寸及文字美化,画管路透视图可能方便些

[复制链接]

72

主题

325

帖子

13

银币

中流砥柱

Rank: 25

铜币
608
发表于 2010-12-25 02:09:00 | 显示全部楼层 |阅读模式
;;; =================================================================
;;; 透视图尺寸美化
;;; 作者:langjs       命令:TC        日期2010年12月24日
;;; =================================================================
;;;
(defun c:TC (/ ent i mspace name p10 p10x p10y p11 p11x p11y p13 p13x p13y p14 p14x p14y ss)
  (setvar "cmdecho" 0)         ; 关闭命令响应
  (COMMAND ".UNDO" "BE")
  (if (tblsearch "style" "+30")        ; 判断是否存文字样式"+30"倾斜30度字体,有则设为当前,无则创建
    (princ)
    (command "_style" "+30" "txt.shx,hztxts.shx" 0 0.8 30 "N" "N")
  )
  (if (tblsearch "style" "-30")        ; 判断是否存在文字样式"-30"倾斜-30度字体,无则创建
    (princ)
    (command "_style" "-30" "txt.shx,hztxts.shx" 0 0.8 -30 "N" "N")
  )
  (if (not (tblsearch "dimstyle" "+30")) ; 判断是否存标注样式"+30"倾斜30度的标注样式,无则创建
    (progn
      (command "DIMTXSTY" "+30")
      (command "dimstyle" "s" "+30")
    )
  )
  (if (not (tblsearch "dimstyle" "-30")) ; 判断是否存标注样式"-30"倾斜-30度的标注样式,无则创建
    (progn
      (command "DIMTXSTY" "-30")
      (command "dimstyle" "s" "-30")
    )
  )
  (VL-LOAD-COM)
  (setq AcadObject (vlax-get-acad-object)
AcadDocument (vla-get-ActiveDocument Acadobject)
mSpace (vla-get-ModelSpace Acaddocument)
  )
  (setq ss (ssget '((0 . "DIMENSION")))) ; 选择标注尺寸。
  (setq i 0)
  (REPEAT (SSLENGTH ss)         ; 循环逐个判断尺寸的情况后,赋予不同的标注样式
    (SETQ name (SSNAME ss i))
    (setq ent (entget name))        ; 取得标注尺寸各关键坐标点值
    (setq p10 (cdr (assoc 10 ent))
   p14 (cdr (assoc 14 ent))
   p11 (cdr (assoc 11 ent))
   p13 (cdr (assoc 13 ent))
    )
    (setq p10x (FIX (+ 0.5 (car p10)))
   p10y (FIX (+ 0.5 (cadr p10)))
   p14x (FIX (+ 0.5 (car p14)))
   p14y (FIX (+ 0.5 (cadr p14)))
   p11x (car p11)
   p11y (cadr p11)
   p13x (car p13)
   p13y (cadr p13)
    )           ; 判断关键点坐标并赋予不同的标注样式
    (cond
      ((or
  (and
    ( p10x p14x)
    (> p10y p14y)
  )
       )          ; 位置在右上和左下的尺寸。
(progn
   (setq tstyle "+30")        ; 赋予文字样式为倾斜30度。
   (SETQ ss_VLA (vlax-ename->vla-object (SSNAME ss i)))
   (vla-put-TextStyle ss_VLA TSTYLE)
   (command "dimedit" "o" name "" 30) ; 尺寸倾斜30度。
   (vla-Regen AcadDocument acAllViewports)
)
      )
      ((or
  (and
    (> p10x p14x)
    ( p10y p14y)
  )
       )          ; 位置在左上和右下的尺寸。
(progn
   (setq tstyle "-30")        ; 赋予文字样式为倾斜-30度。
   (SETQ ss_VLA (vlax-ename->vla-object (SSNAME ss i)))
   (vla-put-TextStyle ss_VLA TSTYLE)
   (command "dimedit" "o" name "" -30) ; 尺寸倾斜-30度。
   (vla-Regen AcadDocument acAllViewports)
)
      )
      (t
(princ)
      )           ; 其他位置水平和竖直的尺寸不变。
    )
    (setq i (1+ i))
  )           ; 循环结束。
  (COMMAND ".UNDO" "E")
  (princ)
)
;;; =================================================================
;;; 透视图文字美化
;;; 作者:langjs       命令:TW        日期2010年12月24日
;;; =================================================================
;;;
(defun c:TW (/ ang ent ent1)
  (setvar "cmdecho" 0)         ; 关闭命令响应
  (COMMAND ".UNDO" "BE")
  (if (tblsearch "style" "+30")        ; 判断是否存文字样式"+30"倾斜30度字体,有则设为当前,无则创建
    (princ)
    (command "_style" "+30" "txt.shx,hztxts.shx" 0 0.8 30 "N" "N")
  )
  (if (tblsearch "style" "-30")        ; 判断是否存在文字样式"-30"倾斜-30度字体,无则创建
    (princ)
    (command "_style" "-30" "txt.shx,hztxts.shx" 0 0.8 -30 "N" "N")
  )
  (while (setq ent1 (car (entsel "\n选择文字:"))
        ent ent1
  )
    (setq ent (entget ent))
    (if (= "MTEXT" (cdr (assoc 0 ent))) ; 如选多行文本,则转化为单行文本
      (COMMAND ".EXPLODE" ent1 "")
      (princ)
    )
    (COMMAND ".UNDO" "BE")
    (cond
      ((and
  (= (* pi (/ 30 180.0)) (cdr (assoc 50 ent)))
  (= "-30" (cdr (assoc 7 ent)))
       )          ; 更新单行文本的旋转角度。
(progn
   (setq ang (* pi (/ 30 180.0)))
   (setq ent (subst
        (cons 50 ang)
        (assoc 50 ent)
        ent
      )
   )
   (entmod ent)
   (command ".change" ent1 "" "" "" "+30" "" "" "") ; 更新单行文本的文字样式。
)
      )
      ((and
  (= (* pi (/ 30 180.0)) (cdr (assoc 50 ent)))
  (= "+30" (cdr (assoc 7 ent)))
       )
(progn
   (setq ang (* pi (/ -30 180.0)))
   (setq ent (subst
        (cons 50 ang)
        (assoc 50 ent)
        ent
      )
   )
   (entmod ent)
   (command ".change" ent1 "" "" "" "-30" "" "" "")
)
      )
      ((and
  (= (* pi (/ 330 180.0)) (cdr (assoc 50 ent)))
  (= "-30" (cdr (assoc 7 ent)))
       )
(progn
   (setq ang (* pi (/ -30 180.0)))
   (setq ent (subst
        (cons 50 ang)
        (assoc 50 ent)
        ent
      )
   )
   (entmod ent)
   (command ".change" ent1 "" "" "" "+30" "" "" "")
)
      )
      ((and
  (= (* pi (/ 330 180.0)) (cdr (assoc 50 ent)))
  (= "+30" (cdr (assoc 7 ent)))
       )
(progn
   (setq ang (* pi (/ 30 180.0)))
   (setq ent (subst
        (cons 50 ang)
        (assoc 50 ent)
        ent
      )
   )
   (entmod ent)
   (command ".change" ent1 "" "" "" "-30" "" "" "")
)
      )
      (t
(progn
   (setq ang (* pi (/ 30 180.0)))
   (setq ent (subst
        (cons 50 ang)
        (assoc 50 ent)
        ent
      )
   )
   (entmod ent)
   (command ".change" ent1 "" "" "" "-30" "" "" "")
)
      )
    )
    (COMMAND ".UNDO" "E")
  )
  (princ)
)
回复

使用道具 举报

72

主题

325

帖子

13

银币

中流砥柱

Rank: 25

铜币
608
发表于 2010-12-25 02:10:00 | 显示全部楼层
看看效果图片

25uw5oxvarc.jpg

25uw5oxvarc.jpg

回复

使用道具 举报

33

主题

134

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
266
发表于 2012-8-26 18:02:00 | 显示全部楼层

狼大侠,程序运行提示如下,用不了怎么回事?
命令: tc hztxts.shx 是常规字体,不是大字体。0
0.800000
回复

使用道具 举报

31

主题

116

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2013-5-6 12:01:00 | 显示全部楼层
这个看起来不错,虽然用不上
回复

使用道具 举报

31

主题

116

帖子

8

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
238
发表于 2013-5-7 16:27:00 | 显示全部楼层

怎么样修改成水平与垂直的均改成倾斜的

0jsp1zhaabh.jpg

0jsp1zhaabh.jpg

回复

使用道具 举报

0

主题

3

帖子

3

银币

初来乍到

Rank: 1

铜币
3
发表于 2022-7-31 14:05:00 | 显示全部楼层
这个看起来不错
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-4 01:30 , Processed in 0.324161 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表