明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 640|回复: 4

[提问] 标注飞出去,,问题通常出在哪里?

[复制链接]
发表于 2016-10-25 01:11 | 显示全部楼层 |阅读模式


(DEFUN C:auor (/ p01_midx_l p01_midx_r p01_midx_u p01_midx_d new_1 p01_middle cdat
   p1 p1x p1y p2 p2x p2y Xmid0 Xmid1 Xmid2 pax pay pbx pby pa pb edit_dim
   base_13x13y ss sslen ssno ent name p0 p01 p01x p01y py p01_midx p01_midy
   base_13y13x ymid0 ymid1 ymid2 PX edit_y edit_x yes_ok map_list po_list)
(setq cdat (atoi (rtos (getvar "cdate"))))
(if (> cdat 20000430)
    (progn
(setvar "cmdecho" 0)
(setvar "dimzin" 8)
(prompt "\n Thank you!
  \n Thank you!
  \n Thank you!
  \n Thank you!")
(setq dcl_id (load_dialog "auor.dcl"))
(if (not (new_dialog "auor" dcl_id)) (exit))
(set_tile "fx" "fx2")
(set_tile "fy" "fy2")
(if (null edit_x) (setq edit_x 15))
(if (null edit_y) (setq edit_y 15))
(if (null edit_dim) (setq edit_dim (getvar "dimtxt")))
(set_tile "edit_x" (rtos edit_x))
(set_tile "edit_y" (rtos edit_y))
(set_tile "edit_dim" (rtos edit_dim))
(if (null yes_ok) (setq yes_ok 1))
(set_tile "yes_ok" (rtos yes_ok))
(action_tile "edit_dim" "(setq edit_dim (check $key))")
(action_tile "edit_x" "(setq edit_x (check $key))")
(action_tile "edit_y" "(setq edit_y (check $key))")
(action_tile "accept" "(setq valuex (get_tile \"fx\"))
    (setq yes_ok (distof (get_tile \"yes_ok\")))
    (setq valuey (get_tile \"fy\"))(done_dialog 1)"
)
(setq do_what (start_dialog))
(unload_dialog dcl_id)
   (if (= 1 do_what)
     (progn
(cond ((= valuex "fx2") (setq fx 2))
  ((= valuex "fx2.5") (setq fx 2.5))
  ((= valuex "fx3") (setq fx 3))
  ((= valuex "fx3.5") (setq fx 3.5))
  ((= valuex "fx4") (setq fx 4))
  ((= valuex "fx5") (setq fx 5))
  ((= valuex "fx7") (setq fx 7))
  ((= valuex "fx10") (setq fx 10))
)
(cond ((= valuey "fy2") (setq fy 2))
  ((= valuey "fy2.5") (setq fy 2.5))
  ((= valuey "fy3") (setq fy 3))
  ((= valuey "fy3.5") (setq fy 3.5))
  ((= valuey "fy4") (setq fy 4))
  ((= valuey "fy5") (setq fy 5))
  ((= valuey "fy7") (setq fy 7))
  ((= valuey "fy10") (setq fy 10))
)
  ;;;;;
  (if  (not (tblsearch "style" "iso-25"))
      (command "style" "iso-25" "gbcbig" "" "0.7" "" "" "" "")
  )
  ;;;;;
  (setvar "dimtxt" edit_dim)
  (setvar "dimasz" (/ edit_dim 3))
  (setvar "dimexo" (/ edit_dim 4))
  (setvar "dimtxsty" "iso-25")
  ;;;;;
  (setq pick (getvar "pickbox"))
  (SETVAR "pickbox" 10)
  (SETVAR "OSMODE" 183)
  (SETQ PTOR (GETPOINT "\n 请选择坐标原点"))
  (COMMAND "_UCS" "O" PTOR)
  (COMMAND "_UCSICON" "OR")
  (SETVAR "CMDECHO" 0)
  (setq   txt (getvar "dimtxt")
          txt0 (/ txt 5)
          txt1 (+ txt txt0)
   txt2 (- 0 txt1)
  )
;;;;;;;
  (SETQ   P1   (GETPOINT "\n 请选择左下角点")
   P1X  (CAR P1)
   P1Y  (CADR P1)
   P2   (GETCORNER P1 "\n 请选择右上角点")
   P2X  (CAR P2)
   P2Y  (CADR P2)
   Xmid0 (abs (/ (- p2x p1x) fx))
   Xmid1 (+ p1x Xmid0)
   Xmid2 (- p2x Xmid0)
   Ymid0 (abs (/ (- p2Y p1Y) fy))
   Ymid1 (+ p1Y Ymid0)
   Ymid2 (- p2Y Ymid0)
   PAX  (- P1X 13)
   PAY  (- P1Y 13)
   PBX  (+ P2X 13)
   PBY  (+ P2Y 13)
   PA   (LIST PAX PAY)
   PB   (LIST PBX PBY)
   po_left (+ p1x 40)
   po_down (+ p1y 40)
   po_right (- p2x 40)
   po_up (- p2y 40)
  )
  (SETVAR "OSMODE" 0)
;;111111111111
  (SETQ SS (SSGET "c" P1 P2 (list (cons -4 "<or")(cons 0 "CIRCLE") (cons 0 "INSERT")
   (cons 0 "POINT") (cons -4 "<and")(cons 0 "ARC")(cons -4 ">")(cons 40 2.5)
   (cons -4 "<")(cons 40 15)(cons -4 "and>")(cons -4 "or>")))
  )
  (if (null ss) (setq ss (ssadd)))
  (setq   SSLEN  (SSLENGTH   SS)
                     SSNO  -1)
  (REPEAT SSLEN
   (SETQ SSNO (1+ SSNO))
                (SETQ ENT (SSNAME SS SSNO))
                        (SETQ P0 (CDR (ASSOC 10 (ENTGET ENT
                        )        )    )         )
                        (SETQ P01 (TRANS P0 0 1)
    map_list (append map_list (list p01))
   )
  )
  (setq   po_o (list p2x p1y)
   po_list (list p1 p2 po_o)
   map_list (append map_list po_list)
   SSNO -1
   )
  (REPEAT (length map_list)
   (SETQ SSNO (1+ SSNO))
                (SETQ P01 (nth SSNO map_list)
                              P01X (CAR P01)
                              P01Y (CADR P01)
                        )
   (if (and (>= P01X Xmid2)(null (member p01 p01_midx_r)))
       (setq p01_midx_r (append p01_midx_r (list p01)))
   )
   (if (and (<= P01X Xmid1)(null (member p01 p01_midx_l))
    (null (member p01 p01_midx_r)))
       (setq p01_midx_l (append p01_midx_l (list p01)))
   )
   (if (and (<= P01Y ymid1)(null (member p01 p01_midx_d)))
       (setq p01_midx_d (append p01_midx_d (list p01)))
   )
   (if (and (>= P01Y ymid2)(null (member p01 p01_midx_u))
    (null (member p01 p01_midx_d)))
       (setq p01_midx_u (append p01_midx_u (list p01)))
   )
   (if (and (< Xmid1 P01X Xmid2)(null (member p01 p01_midx)))
       (setq p01_midx (append p01_midx (list p01)))
   )
   (if (and (< ymid1 P01Y ymid2)(null (member p01 p01_midy)))
       (setq p01_midy (append p01_midy (list p01)))
   )
       )
  (setq p01_middle p01_midx_r
      new (list)
         add_del <
         pbx_pax pbx
         sin_cos cos
  )
  (p01_mid)
  (pyord)
  (setq p01_middle p01_midx_l
      new (list)
         add_del >
         pbx_pax pax
         sin_cos cos
  )
  (p01_mid)
  (pyord)
  (setq p01_middle p01_midx_d
      new (list)
         add_del >
         pbx_pax pay
         sin_cos sin
  )
  (p01_mid)
  (pxord)
  (setq p01_middle p01_midx_u
      new (list)
         add_del <
         pbx_pax pby
         sin_cos sin
  )
  (p01_mid)
  (pxord)
;;********
  (setq ssno -1)
  (repeat (length p01_midx)
   (setq   ssno (1+ ssno)
    p01 (nth ssno p01_midx)
    P01X  (atof (rtos (CAR P01) 2 3))
                                P01Y  (atof (rtos (CADR P01) 2 3))
   )
   (PYNIL)
  )
;;;;;;;;;;
  (setq ssno -1)
  (repeat (length p01_midy)
   (setq   ssno (1+ ssno)
    p01 (nth ssno p01_midy)
    P01X  (atof (rtos (CAR P01) 2 3))
                                P01Y  (atof (rtos (CADR P01) 2 3))
   )
   (PxNIL)
  )
  (princ)
  (SETVAR "OSMODE" 183)
  (setvar "pickbox" pick)
    );;do_what=1
   )
  )
  (prompt "对不起!试用期巳过,请安装正版!")
)
)
;;;;;;;@@@@@@@@
;;;;;;;@@@@@@@@
(defun p01_mid (/ p01)
(while (> (length p01_middle) 0)
  (setq   no -1
   dist_o -2
  )
  (repeat (length p01_middle)
   (SETQ   no (1+ no)
    P01 (nth no p01_middle)
    angl_p01 (angle po_o P01)
    dist_p01 (distance po_o P01)
    dist_all (* dist_p01 (sin_cos (- angl_p01 (/ pi 2))))
   )
   (if (> dist_all dist_o)
      (progn
    (setq   dist_o dist_all
     p0_all P01
    )
      )
   )
  )
  (while (/= (distance po_o (car p01_middle))(distance po_o p0_all))
   (setq   new_1 (cons (car p01_middle) new_1)
    p01_middle (cdr p01_middle)
   )
  )
  (setq p01_middle (append (cdr p01_middle) new_1)
   new (cons p0_all new)
   new_1 nil
  )
)
)
;;;;;;;
(defun pyord (/ p01)
        (SETVAR "OSMODE" 0)
(SETVAR "pickbox" 10)
(setq base_y (- p1y 20)
       base_13x (atof (rtos (- p1y 20) 2 3))
       base_13y (atof (rtos (- p1y 20) 2 3))
    no -1
)
(repeat (length new)
  (setq   no (1+ no)
   p01 (nth no new)
   p01x (atof (rtos (car p01) 2 3))
   p01y (atof (rtos (cadr p01) 2 3))
  )
  (if (= p01y base_13y)
     (progn
   (if (add_del base_13x p01x)
      (progn
    (entdel (entlast))
    (COMMAND "_DIMORDINATE" P01 p01_14)
    (setq   base_y (cadr p01_14)
           base_13x (atof (rtos p01x 2 3))
                  base_13y (atof (rtos p01y 2 3))
    )
      )
   )
     )
     (progn
   (if (> (- p01y base_y) txt1)
    (setq p01_14 (list pbx_pax p01y))
    (setq p01_14 (list pbx_pax (+ txt1 base_y)))
   )
   (COMMAND "_DIMORDINATE" P01 p01_14)
   (setq   base_y (cadr p01_14)
          base_13x (atof (rtos p01x 2 3))
                 base_13y (atof (rtos p01y 2 3))
   )
     )
  )
  (if (null (member base_13y base_13x13y))
   (setq base_13x13y (cons base_13y base_13x13y)))
)
)
;;;;;;
(defun pxord (/ p01)
        (SETVAR "OSMODE" 0)
(SETVAR "pickbox" 10)
(setq base_y (+ p2x 20)
       base_13x (atof (rtos (+ p2x 20) 2 3))
       base_13y (atof (rtos (+ p2x 20) 2 3))
    no -1
)
(repeat (length new)
  (setq   no (1+ no)
   p01 (nth no new)
   p01x (atof (rtos (car p01) 2 3))
   p01y (atof (rtos (cadr p01) 2 3))
  )
  (if (= p01x base_13x)
     (progn
   (if (add_del base_13y p01y)
      (progn
    (entdel (entlast))
    (COMMAND "_DIMORDINATE" P01 p01_14)
    (setq   base_y (car p01_14)
           base_13x (atof (rtos p01x 2 3))
                  base_13y (atof (rtos p01y 2 3))
    )
      )
   )
     )
     (progn
   (if (< (- p01x base_y) txt2)
    (setq p01_14 (list p01x pbx_pax))
    (setq p01_14 (list (+ base_y txt2) pbx_pax))
   )
   (COMMAND "_DIMORDINATE" P01 p01_14)
   (setq   base_y (car p01_14)
          base_13x (atof (rtos p01x 2 3))
                 base_13y (atof (rtos p01y 2 3))
   )
     )
  )
  (if (null (member base_13x base_13y13x))
   (setq base_13y13x (cons base_13x base_13y13x)))
)
)
;;;;******PYNIL
(DEFUN PYNIL (/ list_right1 list_left1 p01_right p01_right1 p01_left1 p01_right2 p01_left2
   p01_left list_right list_left list_right2 list_left2 list_all
   noadd noadd_dist list_qty addangl list_no ok_p01 pot_angl noadd_whil)
    (SETVAR "OSMODE" 0)
    (if (= 1 yes_ok)
  (setq   ssget_py1 nil)
  (setq   ssget_py1 (member p01y base_13x13y))
    )
    (if (or (< p01y po_down) (> p01y po_up))
  (setq   ssget_py1 (member p01y base_13x13y))
    )
    (IF (null ssget_py1)
      (PROGN
     (SETQ   len_P01Y (strlen (RTOS P01Y 2 2))
   texthigh (getvar "dimtxt")
   texthigh_half (/ texthigh 2)
    textwid (* (* len_P01Y texthigh) 0.6)
   aszwid (getvar "dimasz")
   noadd 0
   list_left1 (list)
   list_all (list)
   list_qty (list)
  )
  (while (< noadd edit_x)
   (setq   noadd (+ 2 noadd)
    noadd_dist (+ noadd (* 2 aszwid))
    list_qty (cons noadd_dist list_qty)
   )
  )
  (setq qty_max (nth 0 list_qty))
  (setq list_qty (reverse list_qty))
  (setq pot_left (polar p01 2.6 (+ qty_max textwid)))
  (setq pot_right (polar p01 5.7 (+ qty_max textwid)))
  (setq ch_ss (ssget "C" pot_left pot_right (list (cons 0 "DIMENSION"))))
  (setq ch_no -1
        ch_ok nil
  )
  (if (not (null ch_ss))
      (repeat (sslength ch_ss)
   (setq   ch_no (1+ ch_no)
    ch_name (ssname ch_ss ch_no)
   )
                        (SETQ ch_13 (TRANS (CDR (ASSOC 13 (entget ch_name))) 0 1))
   (SETQ ch_14 (TRANS (CDR (ASSOC 14 (entget ch_name))) 0 1))
   (setq ch_x (atof (rtos (caddr (assoc 13 (entget ch_name))) 2 3)))
   (setq ch_angl (angle ch_13 ch_14))
   (if (and (or (<= 0 ch_angl 0.78) (<= 2.4 ch_angl 3.9)
    (<= 5.5 ch_angl 6.3))
    (= ch_x (atof (rtos (cadr (trans p01 1 0)) 2 3))))
    (setq ch_ok (cons "ng" ch_ok))
   )
      )
  )
;;;;;;;
(if (null ch_ok)
     (progn
;;;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
   (setq   list_no (1+ list_no)
    p01_right (list (polar p01 0 (nth list_no list_qty)))
    list_right (append list_right p01_right)
   )
  )
  (setq list_no -1)
  (repeat (length list_qty)
   (setq   list_no (1+ list_no)
    p01_left (list (polar p01 pi (nth list_no list_qty)))
    list_left (append list_left p01_left)
   )
  )
;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl pi
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_left1 (list (polar p01 addangl (nth list_no list_qty)))
    list_left1 (append list_left1 p01_left1)
   )
     )
  )
;;;;;
;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl 0
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_right1 (list (polar p01 addangl (nth list_no list_qty)))
    list_right1 (append list_right1 p01_right1)
   )
     )
  )
;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl (/ (* pi 150) 180)
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_left2 (list (polar p01 addangl (nth list_no list_qty)))
    list_left2 (append list_left2 p01_left2)
   )
     )
  )
;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl (/ (* pi 330) 180)
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_right2 (list (polar p01 addangl (nth list_no list_qty)))
    list_right2 (append list_right2 p01_right2)
   )
     )
  )
;;;;;;
  (setq noadd -1)
  (repeat (length list_right)
   (setq   noadd (1+ noadd)
    list_all (append list_all (list (nth noadd list_left)))
    list_all (append list_all (list (nth noadd list_right)))
   )
  )
;;;;;
  (setq noadd -1)
  (repeat (length list_left1)
   (setq noadd (1+ noadd))
   (setq   list_all (append list_all (list (nth noadd list_left1)))
    list_all (append list_all (list (nth noadd list_right1)))
    list_all (append list_all (list (nth noadd list_left2)))
    list_all (append list_all (list (nth noadd list_right2)))
   )
  )
  (setq list_all (append list_all (list (polar p01 0 4) (polar p01 pi 4))))
;;;;;
  
;;;;;
  (setq noadd_whil -1
        ok_p01 NIL
  )
  (while (and (null ok_p01) (> (- (length list_all) noadd_whil) 1))
   (setq   noadd_whil (1+ noadd_whil)
    xpott (nth noadd_whil list_all)
   )
   (selecty xpott)
  )
    (if ok_p01
  (COMMAND "_DIMORDINATE" P01 ok_p01)
  (progn
   (setq ok_p01 (polar p01 0 3))
   (setq dim_color (getvar "dimclrt"))
   (setvar "dimclrt" 2)
   (COMMAND "_DIMORDINATE" P01 ok_p01)
   (setvar "dimclrt" dim_color)
  )
    )
))
)
   )
)
;;;;;
(defun selecty (xpot / int_list pot_int pot_angl pot_14 pot_13 nam_dim dim_name dim_full
   y_14 y_p01 Y_xpot)
  (if (> (car xpot) (car p01)) (setq angl 0) (setq angl pi))
  (if (null (ssget "C" (polar xpot 1.57 texthigh_half)
   (polar (polar xpot 4.71 texthigh_half) angl textwid)))
    (progn
  (setq dimx_angl (angle p01 xpot))
  (setvar "pickbox" 10)
  (setq dim_full (ssget "C" xpot (polar p01 dimx_angl 4)(list (cons 0 "DIMENSION"))))
  (SETVAR "pickbox" 10)
  (setq int_list nil)
  (if (not (null dim_full))
      (progn
   (setq noadd -1)
   (repeat (sslength dim_full)
    (setq   noadd (1+ noadd)
     dim_name (ssname dim_full noadd)
    )
                            (SETQ pot_13 (trans (CDR (ASSOC 13 (entget dim_name))) 0 1))
    (SETQ pot_14 (trans (CDR (ASSOC 14 (entget dim_name))) 0 1))
    (setq pot_angl (angle pot_13 pot_14))
    (if (or (<= 0 pot_angl 0.78) (<= 2.4 pot_angl 3.9) (<= 5.5 pot_angl 6.3))
        (progn
     (setq pot_15 (polar pot_14 pot_angl textwid))
     (setq pot_int (inters pot_13 pot_15 p01 xpot))
     (if (not (null pot_int))
         (setq int_list (cons pot_int int_list))
         (progn
      (setq   y_14 (cadr pot_14)
       y_p01 (cadr p01)
       y_xpot (cadr xpot)
      )
      (if (or (<= (abs (- y_p01 y_14)) texthigh_half)
       (<= (abs (- y_xpot y_14)) texthigh_half)
           )
           (setq int_list (cons 3 int_list))
      )
         )
     )
         )
    )
    )
    (if (null int_list) (setq ok_p01 xpot) (setq ok_p01 nil))
       )
       (progn (setq ok_p01 xpot))
  )
  )
  (progn
  (setq ok_p01 nil)
   )
  )
)
;;;;******PxNIL
;;;;******PxNIL
(DEFUN PxNIL (/ list_up1 list_down1 p01_up p01_down p01_down1 p01_up1 p01_up2 p01_down2
  list_up list_down list_up2 list_down2 pot_angl list_all angl13_14 ssget_13X
ssget_14X ssget_13 noadd noadd_dist list_qty addangl list_no ok_p01 noadd_repeat)
    (SETVAR "OSMODE" 0)
    (if (= 1 yes_ok)
  (setq   ssget_px1 nil)
  (setq   ssget_px1 (member p01x base_13y13x))
    )
    (if (or (> p01x po_right)(< p01x po_left))
  (setq   ssget_px1 (member p01x base_13y13x))
    )
    (IF (null ssget_px1)
     (PROGN
     (SETQ   len_P01x (strlen (RTOS P01x 2 2))
   texthigh (getvar "dimtxt")
   texthigh_half (/ texthigh 2)
    textwid (* (* len_P01x texthigh) 0.6)
   aszwid (getvar "dimasz")
   noadd 0
   list_all (list)
   list_qty (list)
  )
  (while (< noadd edit_y)
   (setq   noadd (+ 2 noadd)
    noadd_dist (+ noadd (* 2 aszwid))
    list_qty (cons noadd_dist list_qty)
   )
  )
  (setq qty_max (nth 0 list_qty))
  (setq list_qty (reverse list_qty))
  (setq pot_up (polar p01 2 (+ qty_max textwid)))
  (setq pot_down (polar p01 5.2 (+ qty_max textwid)))
  (setq ch_ss (ssget "C" pot_up pot_down (list (cons 0 "DIMENSION"))))
  (setq ch_no -1
        ch_ok nil
  )
  (if (not (null ch_ss))
      (repeat (sslength ch_ss)
   (setq   ch_no (1+ ch_no)
    ch_name (ssname ch_ss ch_no)
   )
                        (SETQ ch_13 (TRANS (CDR (ASSOC 13 (entget ch_name))) 0 1))
   (SETQ ch_14 (TRANS (CDR (ASSOC 14 (entget ch_name))) 0 1))
   (setq ch_x (atof (rtos (cadr (assoc 13 (entget ch_name))) 2 3)))
   (setq ch_angl (angle ch_13 ch_14))
   (if (and (or (<= 0.79 ch_angl 2.3) (<= 3.95 ch_angl 5.46))
    (= ch_x (atof (rtos (car (trans p01 1 0)) 2 3))))
    (setq ch_ok (cons "ng" ch_ok))
   )
      )
  )
;;;;;
(if (null ch_ok)
     (progn
  (setq list_no -1)
  (repeat (length list_qty)
   (setq   list_no (1+ list_no)
    p01_up (list (polar p01 (/ pi 2) (nth list_no list_qty)))
    list_up (append list_up p01_up)
   )
  )
  (setq list_no -1)
  (repeat (length list_qty)
   (setq   list_no (1+ list_no)
    p01_down (list (polar p01 (/ (* 3 pi) 2) (nth list_no list_qty)))
    list_down (append list_down p01_down)
   )
  )
;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl (/ pi 2)
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_up1 (list (polar p01 addangl (nth list_no list_qty)))
    list_up1 (append list_up1 p01_up1)
   )
     )
  )
;;;;;
;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl (/ (* pi 3) 2)
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_down1 (list (polar p01 addangl (nth list_no list_qty)))
    list_down1 (append list_down1 p01_down1)
   )
     )
  )
;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl (/ (* pi 60) 180)
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_up2 (list (polar p01 addangl (nth list_no list_qty)))
    list_up2 (append list_up2 p01_up2)
   )
     )
  )
;;;;;
  (setq list_no -1)
  (repeat (length list_qty)
     (setq   list_no (1+ list_no)
    addangl (/ (* pi 240) 180)
     )
     (repeat 2
   (setq   addangl (+ addangl (/ (* pi 10) 180))
    p01_down2 (list (polar p01 addangl (nth list_no list_qty)))
    list_down2 (append list_down2 p01_down2)
   )
     )
  )
;;;;;;
  (setq noadd -1)
  (repeat (length list_up)
   (setq   noadd (1+ noadd)
    list_all (append list_all (list (nth noadd list_up)))
    list_all (append list_all (list (nth noadd list_down)))
   )
  )
;;;;;
  (setq noadd -1)
  (repeat (length list_up1)
   (setq noadd (1+ noadd))
   (setq   list_all (append list_all (list (nth noadd list_up1)))
    list_all (append list_all (list (nth noadd list_down1)))
    list_all (append list_all (list (nth noadd list_up2)))
    list_all (append list_all (list (nth noadd list_down2)))
   )
  )
  (setq list_all (append list_all (list (polar p01 (/ pi 2) 4) (polar p01 (/ (* 3 pi) 2) 4))))
;;;;;
  
;;;;;
  (setq noadd_repeat -1
        ok_p01 NIL
  )
  (while (and (null ok_p01) (> (- (length list_all) noadd_repeat) 1))
   (setq   noadd_repeat (1+ noadd_repeat)
    xpott (nth noadd_repeat list_all)
   )
   (selectx xpott)
  )
       (if ok_p01
  (COMMAND "_DIMORDINATE" P01 ok_p01)
  (progn
   (setq ok_p01 (polar p01 (/ pi 2) 3))
   (setq dim_color (getvar "dimclrt"))
   (setvar "dimclrt" 2)
   (COMMAND "_DIMORDINATE" P01 ok_p01)
   (setvar "dimclrt" dim_color)
  )
      )
))
)
   )
)
;;;;;;;
(defun selectx (xpot / int_list pot_int pot_angl pot_14 pot_13 nam_dim dim_name dim_full)
  (if (> (cadr xpot) (cadr p01)) (setq angl (/ pi 2)) (setq angl (/ (* 3 pi) 2)))
  (if (null (ssget "C" (polar xpot pi texthigh_half)
   (polar (polar xpot 0 texthigh_half) angl textwid)))
    (progn
  (setq dimx_angl (angle p01 xpot))
  (setvar "pickbox" 10)
  (setq dim_full (ssget "C" xpot (polar p01 dimx_angl 3)(list (cons 0 "DIMENSION"))))
  (SETVAR "pickbox" 10)
  (setq int_list nil)
  (if (not (null dim_full))
      (progn
   (setq noadd -1)
   (repeat (sslength dim_full)
    (setq   noadd (1+ noadd)
     dim_name (ssname dim_full noadd)
    )
    (setq pot_angl NIL)
                            (SETQ pot_13 (TRANS (CDR (ASSOC 13 (entget dim_name))) 0 1))
    (SETQ pot_14 (TRANS (CDR (ASSOC 14 (entget dim_name))) 0 1))
    (setq len_13x (strlen (RTOS (cadr pot_13) 2 2))
      textwid1 (* (* len_13x texthigh) 0.7)
    )
    (setq pot_angl (angle pot_13 pot_14))
    (if (or (<= 0.79 pot_angl 2.3) (<= 3.95 pot_angl 5.46))
        (progn
     (setq pot_15 (polar pot_14 pot_angl textwid))
     (setq pot_int (inters pot_13 pot_15 p01 xpot))
     (if (not (null pot_int))
         (setq int_list (cons pot_int int_list))
         (progn
      (setq   x_14 (car pot_14)
       x_p01 (car p01)
       x_xpot (car xpot)
      )
      (if (or (<= (abs (- x_p01 x_14)) texthigh_half)
       (<= (abs (- x_xpot x_14)) texthigh_half)
           )
           (setq int_list (cons 3 int_list))
      )
          )
       )
           )
           (progn
      (setq pot_16 (polar pot_14 pot_angl textwid1))
      (setq pot_int3 (inters pot_14 pot_16 p01 xpot))
      (if (not (null pot_int3))
       (setq int_list (cons pot_int3 int_list))
      )
     )
      )
    )
    (if (null int_list) (setq ok_p01 xpot) (setq ok_p01 nil))
       )
       (progn (setq ok_p01 xpot))
  )
  )
  (progn
  (setq ok_p01 nil)
   )
  )
)
;;;;;;;
(defun check (number)
  (set_tile "error" "")
  (if (not (distof (get_tile number)))
   (progn
    (set_tile "error" "error value")
    (mode_tile number 2)
    (mode_tile number 3)
    nil
   )
   (distof (get_tile number))
  )
)





auor:dialog {label="dimordinate自动坐标标注!";
:row{
:radio_column{key="fx";
   label=X方向;
  :radio_button{
   label="分成2份";
   key="fx2";}
  :radio_button{
   label="分成2.5份";
   key="fx2.5";}
  :radio_button{
   label="分成3份";
   key="fx3";}
  :radio_button{
   label="分成3.5份";
   key="fx3.5";}
  :radio_button{
   label="分成4份";
   key="fx4";}
  :radio_button{
   label="分成5份";
   key="fx5";}
  :radio_button{
   label="分成7份";
   key="fx7";}
  :radio_button{
   label="分成10份";
   key="fx10";}
   }
:radio_column{key="fy";
   label=Y方向;
  :radio_button{
   label="分成2份";
   key="fy2";}
  :radio_button{
   label="分成2.5份";
   key="fy2.5";}
  :radio_button{
   label="分成3份";
   key="fy3";}
  :radio_button{
   label="分成3.5份";
   key="fy3.5";}
  :radio_button{
   label="分成4份";
   key="fy4";}
  :radio_button{
   label="分成5份";
   key="fy5";}
  :radio_button{
   label="分成7份";
   key="fy7";}
  :radio_button{
   label="分成10份";
   key="fy10";}
   }
  }
:row{
  :edit_box{label="x向最大偏移:";
   edit_width=7;
   key="edit_x";
   }
  :edit_box{label="y向最大偏移:";
   edit_width=7;
   key="edit_y";
   }
  }
:row{
  :toggle{label="标注重复尺寸";
    key="yes_ok";}
  spacer_1;
  :edit_box{label="文字高度:";
    edit_width=7;
    //fixed_width=true;
    key="edit_dim";
   }
  }
ok_cancel;
errtile;
  }

本帖子中包含更多资源

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

x
发表于 2016-10-25 13:15 | 显示全部楼层
代码太长,看不太明白。光看图的话,右侧正常,左侧不正常,猜测是不是,左侧坐标的定位点,把相对坐标作为绝对坐标来定位了?
 楼主| 发表于 2016-10-25 17:40 | 显示全部楼层
lostbalance 发表于 2016-10-25 13:15
代码太长,看不太明白。光看图的话,右侧正常,左侧不正常,猜测是不是,左侧坐标的定位点,把相对坐标作为 ...

请问:相对坐标 与 绝对坐标,分别是UCS "O" 和 UCS "W" 吗?我相尝试改改该程序,,找不到下手的地方

它现在的特点是:通常都往左侧飞,如果将图形往左侧平移一段距离,则往右侧飞

飞出去的都是Y坐标尺寸,以及与该坐标共点的X坐标尺寸,即飞出去的是坐标点,并非尺寸文本(如图)





图形不一样时,飞出去的数量也不一样多
飞出去的长度也不一样

本帖子中包含更多资源

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

x
发表于 2016-10-26 08:43 | 显示全部楼层
皇上快溜 发表于 2016-10-25 17:40
请问:相对坐标 与 绝对坐标,分别是UCS "O" 和 UCS "W" 吗?我相尝试改改该程序,,找不到下手的地方

...

我指的不是坐标系,可能说偏移量比较好一点
就是比如,参照点坐标(x0,y0),计算的偏移量是(dx,dy),输出的时候直接用了偏移量做最终坐标,没有加上参照点坐标,或者应该x0+dx的,用了x0-dx。中间加几个princ,看看变量的取值以及正负号对不对。
 楼主| 发表于 2016-10-26 16:18 | 显示全部楼层
lostbalance 发表于 2016-10-26 08:43
我指的不是坐标系,可能说偏移量比较好一点
就是比如,参照点坐标(x0,y0),计算的偏移量是(dx,dy),输出 ...

谢谢,,,,,,
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-26 04:51 , Processed in 0.256205 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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