【求助】轴线交点批量缩放图块
本帖最后由 tigcat 于 2021-8-3 14:35 编辑请问大侠,轴网交点处布置有图块,有没有办法按轴线交点批量缩放图块呢?
(defun c:tt (/ a b end-n n name obj ojb-lst p pt pt-lst scale ss1 ss2)
(if (and
(princ "\n选择块")
(setq ss1 (ssget '((0 . "INSERT"))))
(princ "\n选择轴线")
(setq ss2 (ssget '((0 . "LINE"))))
(setq scale (getreal "\n缩放倍数"))
)
(progn
(while (setq name (ssname ss2 0))
(setq ojb-lst (append ojb-lst (list (vlax-ename->vla-object name))))
(ssdel name ss2)
)
(setq pt-lst nil)
(repeat (length ojb-lst)
(setq obj (car ojb-lst))
(setq ojb-lst (cdr ojb-lst))
(foreach x ojb-lst
(if (setq pt (vlax-invoke obj 'Intersectwith x 0))
(setq pt-lst (append pt-lst (list pt)))
)
)
)
(while (setq name (ssname ss1 0))
(setq obj (vlax-ename->vla-object name))
(setq p t)
(setq end-n (length pt-lst))
(setq n 0)
(while p
(if (= end-n (1+ n)) (setq p nil))
(setq pt (nth n pt-lst))
(vla-GetBoundingBox obj 'a 'b)
(setq a (vlax-safearray->list a));左下角
(setq b (vlax-safearray->list b));右上角
(if (and
(< (car pt) (car b))
(> (car pt) (car a))
(< (cadr pt) (cadr b))
(> (cadr pt) (cadr a))
)
(progn
(vla-ScaleEntity obj (vlax-3D-point pt) scale)
(setq p nil)
)
)
(setq n (1+ n))
)
(ssdel name ss1)
)
)
)
) 请大侠提供帮助,虽然明经币比较小。 谢谢大神回复,等下我去电脑上试试,太感谢了。 taoyi0727 发表于 2020-11-6 09:37
(defun c:tt (/ a b end-n n name obj ojb-lst p pt pt-lst scale ss1 ss2)
(if (and
(princ "\n选 ...
特别感动,也非常感谢,看到发帖时间都是深夜了,大侠这个程序比我想的细致,可以自己输入放大倍数,我试用了一下,速度也很快,我的图块秒杀完成缩放。论坛现在感觉大家不怎么回答问题,我觉得像我这种问题可能没有深度,高手觉得伸手党吧。自己现在的情况是用到的时候去想办法拼凑和改,一旦没有类似的原型,我就不会弄了,由于大多的时候是在改前辈的程序适用自己,没有系统学习下来,所以自己水平低。以后自己多学习,争取提出的问题有水平点。再次感谢@taoyi0727大侠出手相助。 同是结构佬 彳余 发表于 2020-12-22 07:47
同是结构佬
是的
页:
[1]