(defun c:xdtb_recdivbygap (/ dir dist dist_x dist_y e i num p1 p2 p3 p4 pt pts ss val x x_dir y_dir
)
(defun _reset (e pt)
(if (not (xdrx_curve_direction e))
(xdrx_curve_reverse e)
)
(xd::polyline:resetstartpoint e pt)
)
(xdrx_begin)
(if (not #xd_var_global_div)
(setq #xd_var_global_div 2)
)
(if (setq val (getint
(xdrx_prompt (xdrx-string-multilanguage "\n输入等分数<" "\nInput Divede Nums<") #xd_var_global_div ">:" t)
)
)
(setq #xd_var_global_div val)
)
(if (not #xd_var_global_gap)
(setq #xd_var_global_gap 10.0)
)
(if (setq val (getreal
(xdrx_prompt (xdrx-string-multilanguage "\n输入间距<" "\nInput Gap<") #xd_var_global_gap ">:" t)
)
)
(setq #xd_var_global_gap val)
)
(if (not #xd_var_global_direction)
(setq #xd_var_global_direction 0)
)
(xdrx_initget "0 1")
(if (setq val (getint (xdrx_prompt
(xdrx-string-multilanguage
"\n输入方向[X(0)/Y(1)]<" "\nInput Direction[X(0)/Y(1)]<")
#xd_var_global_direction
">:"
t
)
)
)
(setq #xd_var_global_direction val)
)
(xdrx_initget)
(while (setq ss (xdrx_ssget
(xdrx-string-multilanguage
"\n选择要处理的矩形<退出>:"
"\nSelect Rectang<Exit>:"
)
'((0 . "*POLYLINE") (-4 . "&=") (70 . 1))
)
)
(progn
(setq num 0)
(mapcar
'(lambda (x)
(if (setq pts (xd::polyline:isrectang x))
(progn (setq pt (xd::pnts:extremum pts '< '< t))
(_reset x pt)
(setq pts (xdrx_getpropertyvalue x "vertices")
x_dir (xdrx_vector_normalize (mapcar '- (cadr pts) (car pts)))
dist_x (distance (car pts) (cadr pts))
dist_y (distance (car pts) (nth 3 pts))
y_dir (xdrx_vector_normalize (mapcar '- (nth 3 pts) (car pts)))
dir nil
)
(if (= #xd_var_global_direction 0)
(progn
(if (> dist_x (* (1- #xd_var_global_div) #xd_var_global_gap))
(progn (setq p1 (car pts)
p2 (mapcar '+
p1
(xdrx_vector_product
x_dir
(setq dist
(/ (- dist_x (* (1- #xd_var_global_div) #xd_var_global_gap))
#xd_var_global_div
)
)
)
)
p3 (mapcar '+ p2 (xdrx_vector_product y_dir dist_y))
p4 (nth 3 pts)
)
(setq dir x_dir)
)
)
)
(progn
(if (> dist_y (* (1- #xd_var_global_div) #xd_var_global_gap))
(progn (setq p1 (car pts)
p2 (cadr pts)
p3 (mapcar '+
p2
(xdrx_vector_product
y_dir
(setq dist
(/ (- dist_y (* (1- #xd_var_global_div) #xd_var_global_gap))
#xd_var_global_div
)
)
)
)
p4 (mapcar '+ p1 (xdrx_vector_product y_dir dist))
)
(setq dir y_dir)
)
)
)
)
(if dir
(progn (xdrx_polyline_make (list p1 p2 p3 p4) t)
(xdrx_entity_matchprop x (entlast))
(xdrx_entity_delete x)
(setq x (entlast))
(setq i 1
num (1+ num)
)
(repeat (1- #xd_var_global_div)
(xdrx_entity_copy
x
p1
(mapcar '+
p1
(xdrx_vector_product dir (* i (+ dist #xd_var_global_gap)))
)
)
(setq i (1+ i))
)
)
)
)
)
)
(xdrx_pickset->ents ss)
)
(xdrx_prompt
(xdrx-string-multilanguage
(xdrx-string-format "\n处理了%d个矩形." num)
(xdrx-string-format "\n%d rectangles processed." num)
)
)
)
)
(xdrx_end)
(princ)
)