框選對象圖層L1
分析每個對象的坐標包圍框,代碼
(vl-load-com);加載VBA函數
(setq obj (vlax-ename->vla-object ent)) ? ;obj對象
(vla-GetBoundingBox obj '&p1 '&p2) ;得到包圍框
(setq &p1 (vlax-safearray->list &p1));得到右下角坐標
(setq &p2 (vlax-safearray->list &p2));得到左上角坐標
建立右下角點坐標集合ss,元素由點與對象構成(list &p1 &p2 ent)
(setq ss?(vl-sort ss (function (lambda (x y) (< (caar x) (caar y))))));;X從小到大排序
提取SS裏面的對象提取多段線坐標
(setq ss1?(mapcar 'cdr (vl-remove-if '(lambda (X) (/= 10 (car x))) (entget ent))))
(setq &kw1 (ssget "wp" ss1));提取這個範圍的對象,然後移動對象到妳需要的地方
或(setq &kw1 (ssget "w" &p1 &p2));這樣選擇對象也可以
移動對象&kw1按距離來移動。
左下角的坐標可以這樣得到取得
(setq x1 (car &p2))
(setq y1 (cadr &p1))
(setq &p3 (list x1 y1));左下角坐標
妳的代碼主要是沒有包圍框代碼有了代碼就可以方便的寫出妳的程序了。