功能示意代码
 - (defun get_ss_rect(ss / pt_list sn n en pt1 pt2)
- (if ss
- (progn
- (setq pt_list '())
- (setq sn (sslength ss))
- (setq n -1)
- (repeat sn
- (setq en (ssname ss (setq n (1+ n))))
- (vla-getboundingbox (vlax-ename->vla-object en) 'pt1 'pt2)
- (setq pt_list (cons (vlax-safearray->list pt1) pt_list))
- (setq pt_list (cons (vlax-safearray->list pt2) pt_list))
- )
- (setq pt1 (apply 'mapcar (cons 'min pt_list)))
- (setq pt2 (apply 'mapcar (cons 'max pt_list)))
- (list pt1 pt2)
- )
- )
- )
- (defun c:tt(/ ss ptlist startmax ptmin ptmax)
- (prompt "\n请选择一组基准对象(空格退出):")
- (if(setq ss(ssget))
- (progn
- (or *g_sk_Dist* (setq *g_sk_Dist* 20))
- (setq *g_sk_Dist*(cond
- ((getdist (strcat "\n请输入间距值(空格退出):<"(rtos *g_sk_Dist* 2 2) ">" )))
- (*g_sk_Dist*)))
- (setq ptlist(get_ss_rect ss))
- (setq ptMax(cadr ptlist))
- (setq StartMax(+ (car ptMax) *g_sk_Dist*))
- (setq ss nil)
- (prompt "\n请选择下一组对象(空格退出):")
- (while(setq ss(ssget))
- (setq ptlist(get_ss_rect ss))
- (setq ptMin(car ptlist))
- (setq ptMax(cadr ptlist))
- (command "_.move" ss "" (list (car ptmin) 0) (list StartMax 0))
- (setq ptlist(get_ss_rect ss))
- (setq ptMax(cadr ptlist))
- (setq StartMax(+ (car ptMax) *g_sk_Dist*))
- (setq ss nil)
- (prompt "\n请选择下一组对象(空格退出):")
- )
- )
- )
- )
|