CTC 发表于 2012-3-19 21:57:41

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

本帖最后由 CTC 于 2012-9-24 19:16 编辑

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

CTC 发表于 2012-3-19 22:04:14

自顶,沉得太快了

langjs 发表于 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)
)

CTC 发表于 2012-3-19 23:01:55

本帖最后由 CTC 于 2012-3-19 23:06 编辑

langjs 发表于 2012-3-19 22:49 http://bbs.mjtd.com/static/image/common/back.gif
文字字体自己修改

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


可以了,,,。。谢谢,。。朗老大。

langjs 发表于 2012-3-19 23:04:08

字体自己修改,我用的字体可能你没有。换成你自己的字体就行了

CTC 发表于 2012-3-23 00:12:12

本帖最后由 CTC 于 2012-3-23 00:39 编辑

langjs 发表于 2012-3-19 23:04 http://bbs.mjtd.com/static/image/common/back.gif
字体自己修改,我用的字体可能你没有。换成你自己的字体就行了

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

langjs 发表于 2012-3-25 23:11:33

CTC 发表于 2012-3-23 00:12 static/image/common/back.gif
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" "" "" "")
      )
    )
)
)

CTC 发表于 2012-3-25 23:43:09

langjs 发表于 2012-3-25 23:11 static/image/common/back.gif
那么多可能性不容易判断我做不出来,不过可以提供一个以前编写的程序
;;; ============================ ...


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


smartstar 发表于 2012-4-29 09:34:18

学习了,谢谢。

start4444 发表于 2016-7-1 18:55:55

高手啊
页: [1]
查看完整版本: 这个程序如何修改呀????