明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2566|回复: 9

这个程序如何修改呀????

[复制链接]
发表于 2012-3-19 21:57:41 | 显示全部楼层 |阅读模式
本帖最后由 CTC 于 2012-9-24 19:16 编辑

这个程序如何修改呀????
 楼主| 发表于 2012-3-19 22:04:14 | 显示全部楼层
自顶,沉得太快了
发表于 2012-3-19 22:49:52 | 显示全部楼层
本帖最后由 langjs 于 2012-3-19 22:50 编辑

文字字体自己修改

;;; =================================================================
;;; 轴测图标注
;;; 原作者bdycad,langjs修订
;;; 轴测图标注:zb
;;; =================================================================
(defun c:zb (/ d date one anngle three tow)
  (setvar "cmdecho" 0)
  (vl-load-com)
  (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度的标注样式
    (progn
      (command "DIMTXSTY" "+30")
      (command "dimstyle" "s" "+30")
    )
  )
  (if (not (tblsearch "dimstyle" "-30")) ; 创建倾斜-30度的标注样式
    (progn
      (command "DIMTXSTY" "-30")
      (command "dimstyle" "s" "-30")
    )
  )
  (command "dimaligned" pause pause pause)
  (setq d (entlast)
        date (entget d)
        one (cdr (assoc 13 date))
        tow (cdr (assoc 14 date))
        three (cdr (assoc 10 date))
        anngle (angtos (angle one tow))
  )
  (cond
    ((= anngle "210")
      (command "dimedit" "o" d "" "-30")
      (vla-put-textstyle (vlax-ename->vla-object d) "-30")
    )
    ((= anngle "30")
      (command "dimedit" "o" d "" "-30")
      (vla-put-textstyle (vlax-ename->vla-object d) "-30")
    )
    ((= anngle "330")
      (command "dimedit" "o" d "" "30")
      (vla-put-textstyle (vlax-ename->vla-object d) "+30")
    )
    ((= anngle "150")
      (command "dimedit" "o" d "" "30")
      (vla-put-textstyle (vlax-ename->vla-object d) "+30")
    )
    ((or
       (= anngle "270")
       (= anngle "90")
     )
      (if (> (car three) (car one))
        (progn
          (command "dimedit" "o" d "" "-30")
          (vla-put-textstyle (vlax-ename->vla-object d) "+30")
        )
        (progn
          (command "dimedit" "o" d "" "30")
          (vla-put-textstyle (vlax-ename->vla-object d) "-30")
        )
      )
    )
  )
  (princ)
)
 楼主| 发表于 2012-3-19 23:01:55 | 显示全部楼层
本帖最后由 CTC 于 2012-3-19 23:06 编辑
langjs 发表于 2012-3-19 22:49
文字字体自己修改

;;; =================================================================


可以了,,,。。谢谢,。。朗老大。
发表于 2012-3-19 23:04:08 | 显示全部楼层
字体自己修改,我用的字体可能你没有。换成你自己的字体就行了

点评

langjs 老大,程序不错,画简单的图实用,等老大过来再完美一点。。。。  发表于 2012-3-25 21:05

评分

参与人数 1明经币 +1 收起 理由
CTC + 1 很给力!

查看全部评分

 楼主| 发表于 2012-3-23 00:12:12 | 显示全部楼层
本帖最后由 CTC 于 2012-3-23 00:39 编辑
langjs 发表于 2012-3-19 23:04
字体自己修改,我用的字体可能你没有。换成你自己的字体就行了


langjs大师,我想把图1那种“X”尺寸标法也加回去行吗?
其实我感觉应该还好几种可能,图1图2那些方向未表达出来的。像图1那样,本不应该去除这种可能的。
应该是
如XY平面,可以标注长,宽,可以标注在线的里面外面。(可以在长的里外,宽的里外,这就共有4种了),再加上其它两个平面的,那么就有12种标法。请问朗大哥,程序可以完美到这个地步吗?

发表于 2012-3-25 23:11:33 | 显示全部楼层
CTC 发表于 2012-3-23 00:12
langjs大师,我想把图1那种“X”尺寸标法也加回去行吗?
其实我感觉应该还好几种可能,图1图2那些方向 ...

那么多可能性不容易判断我做不出来,不过可以提供一个以前编写的程序
;;; =================================================================
;;; 作者:langjs       命令:tx        日期2009年12月24日
;;; =================================================================
(defun c:tx ( / acaddocument acadobject ent mspace name snap)               ;
  (setvar "cmdecho" 0)                       ; 关闭命令响应
  (setq snap (getvar "osmode"))
  (setvar "osmode" 0)
  (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")
    )
  )
  (if (not (tblsearch "dimstyle" "TH_GBDIM")) ; 判断是否存标注样式"-30"倾斜-30度的标注样式,无则创
                                       ; 建
    (progn
      (command "dimstyle" "s" "TH_GBDIM")
    )
  )
  (vl-load-com)
  (setq acadobject (vlax-get-acad-object)
        acaddocument (vla-get-activedocument acadobject)
        mspace (vla-get-modelspace acaddocument)
  )
  (while (setq name (car (entsel "\n选择标注或文字:")))
    (command ".UNDO" "BE")
    (setq ent (entget name))
    (cond
      ((= (cdr (assoc 0 ent)) "DIMENSION")
        (tx001 name)
      )
      ((= (cdr (assoc 0 ent)) "TEXT")
        (tx002 name)
      )
      ((= (cdr (assoc 0 ent)) "MTEXT")
        (tx002 name)
      )
      (t
        (princ)
      )
    )
    (command ".UNDO" "E")
  )                                       ; while
  (if (not (tblsearch "dimstyle" "TH_GBDIM")) ; 判断是否存标注样式"th_gbdim"标注样式,有则设置当前
    (command "dimstyle" "s" "TH_GBDIM")
    (command "dimstyle" "r" "TH_GBDIM")
  )
  (setvar "osmode" snap)
  (princ)
)
;;; 子程序
;;; =================================================================
;;;
(defun tx001 (name / ent nnp10 np10 p10 p10x p10y p11 p11x p11y p13 p13x p13y p14 p14x p14y) ;
  (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 (car p10)
        p10y (cadr p10)
        p14x (car p14)
        p14y (cadr p14)
        p11x (car p11)
        p11y (cadr p11)
        p13x (car p13)
        p13y (cadr p13)
  )                                       ; 判断关键点坐标并赋予不同的标注样式
  (cond
    ((and
       (> (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (> (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq tstyle "-30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 90) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq np10 (list p14x (+ p14y (distance p10 p14)) 0.0))
        (setq ent (subst
                    (cons 10 np10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (= (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (> (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
       (or
         (and
           (< (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (> (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
         (and
           (> (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (< (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
       )
     )                                       ; 位置在右上尺寸。
      (progn
        (setq nnp10 (list (- p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (- p14y
                                                                                       (*
                                                                                          (distance p10 p14)
                                                                                          (sin
                                                                                               (* pi
                                                                                                  (/ 30 180.0)
                                                                                               )
                                                                                          )
                                                                                       )
                                                                                    ) 0.0
                    )
        )
        (setq np10 (list (- p14x (* (distance p10 p14) (cos (* pi (/ 60 180.0))))) (- p14y
                                                                                      (*
                                                                                         (distance p10 p14)
                                                                                         (sin
                                                                                              (* pi
                                                                                                 (/ 60 180.0)
                                                                                              )
                                                                                         )
                                                                                      )
                                                                                   ) 0.0
                   )
        )
        (command "erase" name "")
        (command "dimaligned" p13 p14 np10)
        (setq name (entlast))
        (setq tstyle "+30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 30) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq ent (entget (entlast)))
        (setq ent (subst
                    (cons 10 nnp10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (< (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (< (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq tstyle "-30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 90) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq np10 (list p14x (- p14y (distance p10 p14)) 0.0))
        (setq ent (subst
                    (cons 10 np10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (= (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (< (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
       (or
         (and
           (< (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (> (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
         (and
           (> (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (< (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
       )
     )                                       ; 位置在右上尺寸。
      (progn
        (setq nnp10 (list (+ p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (+ p14y
                                                                                       (*
                                                                                          (distance p10 p14)
                                                                                          (sin
                                                                                               (* pi
                                                                                                  (/ 30 180.0)
                                                                                               )
                                                                                          )
                                                                                       )
                                                                                    ) 0.0
                    )
        )
        (setq np10 (list (+ p14x (* (distance p10 p14) (cos (* pi (/ 60 180.0))))) (+ p14y
                                                                                      (*
                                                                                         (distance p10 p14)
                                                                                         (sin
                                                                                              (* pi
                                                                                                 (/ 60 180.0)
                                                                                              )
                                                                                         )
                                                                                      )
                                                                                   ) 0.0
                   )
        )
        (command "erase" name "")
        (command "dimaligned" p13 p14 np10)
        (setq name (entlast))
        (setq tstyle "+30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 30) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq ent (entget (entlast)))
        (setq ent (subst
                    (cons 10 nnp10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (< (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (> (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq tstyle "+30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 90) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq np10 (list p14x (+ p14y (distance p10 p14)) 0.0))
        (setq ent (subst
                    (cons 10 np10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (= (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (> (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
       (or
         (and
           (< (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (< (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
         (and
           (> (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (> (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
       )
     )                                       ; 位置在右上尺寸。
      (progn
        (setq nnp10 (list (+ p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (- p14y
                                                                                       (*
                                                                                          (distance p10 p14)
                                                                                          (sin
                                                                                               (* pi
                                                                                                  (/ 30 180.0)
                                                                                               )
                                                                                          )
                                                                                       )
                                                                                    ) 0.0
                    )
        )
        (setq np10 (list (- p14x (* (distance p10 p14) (cos (* pi (/ 60 180.0))))) (- p14y
                                                                                      (*
                                                                                         (distance p10 p14)
                                                                                         (sin
                                                                                              (* pi
                                                                                                 (/ 60 180.0)
                                                                                              )
                                                                                         )
                                                                                      )
                                                                                   ) 0.0
                   )
        )
        (command "erase" name "")
        (command "dimaligned" p13 p14 np10)
        (setq name (entlast))
        (setq tstyle "-30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" -30) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq ent (entget (entlast)))
        (setq ent (subst
                    (cons 10 nnp10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (> (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (< (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq tstyle "+30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 90) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq np10 (list p14x (- p14y (distance p10 p14)) 0.0))
        (setq ent (subst
                    (cons 10 np10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (= (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (< (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (/= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
       (or
         (and
           (< (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (< (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
         (and
           (> (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
           (> (fix (+ 0.5 p13y)) (fix (+ 0.5 p14y)))
         )
       )
     )                                       ; 位置在右上尺寸。
      (progn
        (setq nnp10 (list (- p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (+ p14y
                                                                                       (*
                                                                                          (distance p10 p14)
                                                                                          (sin
                                                                                               (* pi
                                                                                                  (/ 30 180.0)
                                                                                               )
                                                                                          )
                                                                                       )
                                                                                    ) 0.0
                    )
        )
        (setq np10 (list (- p14x (* (distance p10 p14) (cos (* pi (/ 60 180.0))))) (+ p14y
                                                                                      (*
                                                                                         (distance p10 p14)
                                                                                         (sin
                                                                                              (* pi
                                                                                                 (/ 60 180.0)
                                                                                              )
                                                                                         )
                                                                                      )
                                                                                   ) 0.0
                   )
        )
        (command "erase" name "")
        (command "dimaligned" p13 p14 np10)
        (setq name (entlast))
        (setq tstyle "-30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 150) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq ent (entget (entlast)))
        (setq ent (subst
                    (cons 10 nnp10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (> (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (= (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq nnp10 (list (+ p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (+ p14y
                                                                                       (*
                                                                                          (distance p10 p14)
                                                                                          (sin
                                                                                               (* pi
                                                                                                  (/ 30 180.0)
                                                                                               )
                                                                                          )
                                                                                       )
                                                                                    ) 0.0
                    )
        )
        (setq tstyle "-30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" +30) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq ent (entget (entlast)))
        (setq ent (subst
                    (cons 10 nnp10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (> (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (> (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq np10 (list (- p14x (distance p10 p14)) p14y 0.0))
        (command "erase" name "")
        (command "dimlinear" p13 p14 np10)
        (setq name (entlast))
        (setq tstyle "TH_GBDIM")       ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" 0) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
      )
    )
    ((and
       (< (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (= (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq np10 (list (+ p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (- p14y
                                                                                      (*
                                                                                         (distance p10 p14)
                                                                                         (cos
                                                                                              (* pi
                                                                                                 (/ 30 180.0)
                                                                                              )
                                                                                         )
                                                                                      )
                                                                                   ) 0.0
                   )
        )
        (command "erase" name "")
        (command "dimlinear" p13 p14 np10)
        (setq name (entlast))
        (setq tstyle "+30")               ; 赋予文字样式为倾斜30度。
        (setq ss_vla (vlax-ename->vla-object name))
        (vla-put-textstyle ss_vla tstyle)
        (command "dimedit" "o" name "" -30) ; 尺寸倾斜30度。
        (vla-regen acaddocument acallviewports)
        (setq ent (entget (entlast)))
        (setq ent (subst
                    (cons 10 np10)
                    (assoc 10 ent)
                    ent
                  )
        )
        (entmod ent)
      )
    )
    ((and
       (> (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (< (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq np10 (list (+ p14x (distance p10 p14)) p14y 0.0))
        (command "erase" name "")
        (command "dimlinear" p13 p14 np10)
      )
    )
    ((and
       (< (fix (+ 0.5 p10x)) (fix (+ 0.5 p14x)))
       (/= (fix (+ 0.5 p10y)) (fix (+ 0.5 p14y)))
       (= (fix (+ 0.5 p13x)) (fix (+ 0.5 p14x)))
     )                                       ; 位置在右上尺寸。
      (progn
        (setq np10 (list (+ p14x (* (distance p10 p14) (cos (* pi (/ 30 180.0))))) (- p14y
                                                                                      (*
                                                                                         (distance p10 p14)
                                                                                         (cos
                                                                                              (* pi
                                                                                                 (/ 30 180.0)
                                                                                              )
                                                                                         )
                                                                                      )
                                                                                   ) 0.0
                   )
        )
        (command "erase" name "")
        (command "dimlinear" p13 p14 np10)
      )
    )
    (t
      (princ)
    )
  )
  (princ)
)
;;; 子程序
;;; =================================================================
;;;
(defun tx002 (name / ang ent ent1)
  (setq ent1 name)
  (setq ent (entget ent1))
  (if (= "MTEXT" (cdr (assoc 0 ent)))  ; 如选多行文本,则转化为单行文本
    (progn
      (command ".EXPLODE" ent1)
      (setq ent1 (entlast))
      (setq ent (entget 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 (/ 0 180.0)))
        (setq ent (subst
                    (cons 50 ang)
                    (assoc 50 ent)
                    ent
                  )
        )
        (entmod ent)
        (if (not (tblsearch "dimstyle" "TH_GBDIM")) ; 判断是否存标注样式"th_gbdim"标注样式,有则设
                                       ; 置当前
          (command "dimstyle" "s" "TH_GBDIM")
          (command "dimstyle" "r" "TH_GBDIM")
        )
        (command ".change" ent1 "" "" "" "TH_GBDIM" "" "" "")
      )
    )
    ((and
       (or
         (= (* pi (/ 270 180.0)) (cdr (assoc 50 ent)))
         (= (* pi (/ 90 180.0)) (cdr (assoc 50 ent)))
       )
       (= "+30" (cdr (assoc 7 ent)))
     )
      (progn
        (command ".change" ent1 "" "" "" "-30" "" "" "")
      )
    )
    ((and
       (or
         (= (* pi (/ 270 180.0)) (cdr (assoc 50 ent)))
         (= (* pi (/ 90 180.0)) (cdr (assoc 50 ent)))
       )
       (= "-30" (cdr (assoc 7 ent)))
     )
      (if (not (tblsearch "dimstyle" "TH_GBDIM")) ; 判断是否存标注样式"th_gbdim"标注样式,有则设置
                                       ; 当前
        (command "dimstyle" "s" "TH_GBDIM")
        (command "dimstyle" "r" "TH_GBDIM")
      )
      (command ".change" ent1 "" "" "" "TH_GBDIM" "" "" "")
    )
    ((and
       (or
         (= (* pi (/ 270 180.0)) (cdr (assoc 50 ent)))
         (= (* pi (/ 90 180.0)) (cdr (assoc 50 ent)))
       )
       (/= "-30" (cdr (assoc 7 ent)))
       (/= "+30" (cdr (assoc 7 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" "" "" "")
      )
    )
  )
)
 楼主| 发表于 2012-3-25 23:43:09 | 显示全部楼层
langjs 发表于 2012-3-25 23:11
那么多可能性不容易判断我做不出来,不过可以提供一个以前编写的程序
;;; ============================ ...


好像这种情况有点问题
命令:
TX
选择标注或文字:正在重生成模型。
命令:
选择标注或文字:
选择标注或文字:正在重生成模型。
命令:
选择标注或文字:; 错误: Automation 错误。 未找到主键


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2012-4-29 09:34:18 来自手机 | 显示全部楼层
学习了,谢谢。
发表于 2016-7-1 18:55:55 | 显示全部楼层
高手啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 08:27 , Processed in 0.228926 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表