本人水平有限,有求大神帮忙统编一个图形间距调整功能的!!
如题!小弟一直想要一个调整间距的功能,泡了明经也有三个月的时间了,也曾想过自己编一个,但学习断断续续!无奈还是向各位大神求助,帮忙编上一个。谢谢先!功能示意代码
(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 ptliststartmax 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请选择下一组对象(空格退出):")
)
)
)
) 同是五金模设计帮顶一下:lol 论坛大把对齐的代码,无非就是计算外框+移动,自己慢慢写吧 start4444 发表于 2019-5-15 11:47
论坛大把对齐的代码,无非就是计算外框+移动,自己慢慢写吧
伤心!!啃了一段时间的码!看得有点晕。现在只能改下别移动复制和功能!
复杂一点的就不会改了!
类似的功能LSP,也收集有一些,但都不是我要的功能! 这东西太花时间了,悬赏1000几百也许有人帮你写 天正建筑有这个功能啊 ;;pl线的话,比较好实现
;;简单写了个pl线图元的
ymcui 发表于 2019-5-15 09:51
同是五金模设计帮顶一下
谢谢老铁!你是用什么外挂的?我用PressCAD,加个好友吧交流一下! arcers 发表于 2019-5-15 15:16
天正建筑有这个功能啊
谢谢你的提示,我找找看!!