标注飞出去,,问题通常出在哪里?
(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;
}
代码太长,看不太明白。光看图的话,右侧正常,左侧不正常,猜测是不是,左侧坐标的定位点,把相对坐标作为绝对坐标来定位了? lostbalance 发表于 2016-10-25 13:15
代码太长,看不太明白。光看图的话,右侧正常,左侧不正常,猜测是不是,左侧坐标的定位点,把相对坐标作为 ...
请问:相对坐标 与 绝对坐标,分别是UCS "O" 和 UCS "W" 吗?我相尝试改改该程序,,找不到下手的地方
它现在的特点是:通常都往左侧飞,如果将图形往左侧平移一段距离,则往右侧飞
飞出去的都是Y坐标尺寸,以及与该坐标共点的X坐标尺寸,即飞出去的是坐标点,并非尺寸文本(如图)
图形不一样时,飞出去的数量也不一样多
飞出去的长度也不一样
皇上快溜 发表于 2016-10-25 17:40
请问:相对坐标 与 绝对坐标,分别是UCS "O" 和 UCS "W" 吗?我相尝试改改该程序,,找不到下手的地方
...
我指的不是坐标系,可能说偏移量比较好一点
就是比如,参照点坐标(x0,y0),计算的偏移量是(dx,dy),输出的时候直接用了偏移量做最终坐标,没有加上参照点坐标,或者应该x0+dx的,用了x0-dx。中间加几个princ,看看变量的取值以及正负号对不对。 lostbalance 发表于 2016-10-26 08:43
我指的不是坐标系,可能说偏移量比较好一点
就是比如,参照点坐标(x0,y0),计算的偏移量是(dx,dy),输出 ...
谢谢,,,,,,
页:
[1]