方便好用的分堆算法
本帖最后由 kkq0305 于 2021-11-30 12:31 编辑;利用图元在xy轴方向上的投影进行分堆
;适合投影没有交叉的情况
(defun c:tt ()
(setq ss (ssget))
(setqlst
(mapcar '(lambda (x)
(setq obj (vlax-ename->vla-object x))
(vla-getboundingbox obj 'minp 'maxp)
(setq
maxp (mapcar '* '(1.0 1.0) (vlax-safearray->list maxp))
)
(setq
minp (mapcar '* '(1.0 1.0) (vlax-safearray->list minp))
)
(list x (car minp) (car maxp) (cadr minp) (cadr maxp))
)
(vl-remove-if-not
'(lambda (x) (= 'ENAME (type x)))
(apply 'append (ssnamex ss))
)
)
);获取图元投影信息建立表
;表内元素:图元名 minx maxx miny maxy
(setqflst (lambda (lst key);分堆函数
;lst 对图元投影排序之后的lst
;key t 第一次按照x轴投影分堆 nil 第二次按照y轴投影分堆
(if lst
(if key
(progn
(setq nlst (list (list (caar lst)
(cadddr (car lst))
(last (car lst))
))
maxpx (caddar lst)
lst (cdr lst)
)
(while (and lst (<= (cadar lst) maxpx))
(setq nlst(cons (list (caar lst)
(cadddr (car lst))
(last (car lst))
)
nlst
)
maxpx (max maxpx (caddar lst))
lst (cdr lst)
)
)
(cons nlst (flst lst key))
);第一次按照x轴投影分堆按照x轴投影间隔分表 并去掉表内x信息minx maxx
(progn
(setq nlst (list (caar lst))
maxpy (caddar lst)
lst (cdr lst)
)
(while (and lst (<= (cadar lst) maxpy))
(setq nlst(cons (caar lst) nlst)
maxpy (max maxpy (caddar lst))
lst (cdr lst)
)
)
(cons nlst (flst lst key))
);第二次按照y轴投影分堆 按照y轴投影间隔分表 并去掉表内y信息miny maxy
)
)
)
)
(setq
lst
(apply
'append
(mapcar
'(lambda (wlst)
(flst (vl-sort wlst '(lambda (a b) (< (cadr a) (cadr b))))
nil
)
)
(flst (vl-sort lst '(lambda (a b) (< (cadr a) (cadr b)))) t)
)
)
);分堆完成
(mapcar
'(lambda (x)
(setq pt (apply
'append
(mapcar
'(lambda (ent)
(vla-getboundingbox (vlax-ename->vla-object ent) 'minp 'maxp)
(list (mapcar '* '(1.0 1.0) (vlax-safearray->list maxp))
(mapcar '* '(1.0 1.0) (vlax-safearray->list minp))
)
)
x
)
))
(setq minp (mapcar '- (apply 'mapcar (cons 'min pt)) '(3. 3.)))
(setq maxp (mapcar '+ (apply 'mapcar (cons 'max pt)) '(3. 3.)))
(entmake(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(62 . 1)
(cons 10 minp)
(cons 10 (list (car minp) (cadr maxp)))
(cons 10 maxp)
(cons 10 (list (car maxp) (cadr minp)))
)
)
)
lst
);按照分堆成果画出红色矩形框 矩形框偏移3个单位
(princ)
)
我增加的一个可以自行输入外扩距离
(defun c:tt (/ wkjl ss lst obj maxp minp flst nlst maxpx maxpy pt )
(IF (NULL *wkjl) (setq *wkjl 30.0))
(setq wkjl (GETREAL (strcat "\n外扩距离<" (rtos *wkjl 2 2) ">:")))
(if (NULL wkjl) (setq wkjl *wkjl) (setq *wkjl wkjl))
(setq ss (ssget))
(setqlst
(mapcar '(lambda (x)
(setq obj (vlax-ename->vla-object x))
(vla-getboundingbox obj 'minp 'maxp)
(setq
maxp (mapcar '* '(1.0 1.0) (vlax-safearray->list maxp))
)
(setq
minp (mapcar '* '(1.0 1.0) (vlax-safearray->list minp))
)
(list x (car minp) (car maxp) (cadr minp) (cadr maxp))
)
(vl-remove-if-not
'(lambda (x) (= 'ENAME (type x)))
(apply 'append (ssnamex ss))
)
)
)
(setqflst (lambda (lst key)
(if lst
(if key
(progn
(setq nlst (list (list (caar lst)
(cadddr (car lst))
(last (car lst))
))
maxpx (caddar lst)
lst (cdr lst)
)
(while (and lst (<= (cadar lst) maxpx))
(setq nlst(cons (list (caar lst)
(cadddr (car lst))
(last (car lst))
)
nlst
)
maxpx (max maxpx (caddar lst))
lst (cdr lst)
)
)
(cons nlst (flst lst key))
)
(progn
(setq nlst (list (caar lst))
maxpy (caddar lst)
lst (cdr lst)
)
(while (and lst (<= (cadar lst) maxpy))
(setq nlst(cons (caar lst) nlst)
maxpy (max maxpy (caddar lst))
lst (cdr lst)
)
)
(cons nlst (flst lst key))
)
)
)
)
)
(setq
lst
(apply
'append
(mapcar
'(lambda (wlst)
(flst (vl-sort wlst '(lambda (a b) (< (cadr a) (cadr b))))
nil
)
)
(flst (vl-sort lst '(lambda (a b) (< (cadr a) (cadr b)))) t)
)
)
)
(mapcar
'(lambda (x)
(setq pt (apply
'append
(mapcar
'(lambda (ent)
(vla-getboundingbox (vlax-ename->vla-object ent) 'minp 'maxp)
(list (mapcar '* '(1.0 1.0) (vlax-safearray->list maxp))
(mapcar '* '(1.0 1.0) (vlax-safearray->list minp))
)
)
x
)
))
(setq minp (mapcar '- (apply 'mapcar (cons 'min pt)) (list wkjl wkjl)))
(setq maxp (mapcar '+ (apply 'mapcar (cons 'max pt)) (list wkjl wkjl)))
(entmake(list '(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(62 . 1)
(cons 10 minp)
(cons 10 (list (car minp) (cadr maxp)))
(cons 10 maxp)
(cons 10 (list (car maxp) (cadr minp)))
)
)
)
lst
)
(princ)
) 本帖最后由 guosheyang 于 2021-11-30 00:09 编辑
我先前也写过个类似代码估计框内图元多了的话 会运行慢 在这儿http://bbs.mjtd.com/thread-184261-1-1.html attach://116886.gif
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA7gAAAEECAYAAAACrph8AAAgAElEQVR4nO3df5BkZ13v8fcsyYYkJIHEQAi/ksxkpGI4HWaWK0VA5FI9i7mXK+huoPRiKepls0Cp1AwKKblcqUSwZ1FL2V2rSEQQFHYhN6LgdKNclCBUFkkfNeJsIDFCyA+I+R3yi75/PHO2Z2emZ+dHn37OOf1+VXVN70xP93d6d2fm09/v8zwjQAdJkiRJkkpuS+wCJEmSJEnqBwOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEow4EqSJEmSKsGAK0mSJEmqBAOuJEmSJKkSDLiSJEmSpEo4LnYBkiRJ0koS4MGFywMLbztRK5JUdAZcSZIkFc5bgD9gecBdfH3p214fX+l9jw3uS5E0QAZcSZIkFcbTgT8EzgJqwMnAUxbeLr6++O0ZwPOAk1b4eHb9CVYOy6sF5l63W3z9oXyeBkkbZMCVJElSIewgdG0/CFy6yfs6gd5h9+QV/py9PfMYn3MCx+4Or6XTvPh9Dy28fWKTX7MkGMGlDJIkSYrs94FXAW8FmpFrWexJhIC7Wnd46duVbrvS5zzC+kawF4fh1T7nkVyeCakc7OBKkiQpmpcSRpIPEUaSvx+3nGWeAO5duGzWSay/o3wq8MxVbncyIYQfqzu8lo7yP/Tha5Ris4MrSZIU0dJQk8YtZ6DeCfwGYUOpD0eupUyO59jd4WMF56WfcwpwIuFFhmH6N6jqsYMrSZK0AUvDwtLgcArLw8XS9y3+vKcBWwndh6obI6y1fYIQqG6OW07pPAbcs3DZjBG6/xYngb/c5P1JRWDAlSRJQ6XfwTR7u3T08wGWj4DevuR99wMvBl4L/D3wthy/7qL4BcJI8v8BfidyLcOuQ/ff6X9ErkXqFwOuJEkqhaIF05U+b/H7juXlhBHd0wkbK31q/U9JqTyF0LV9AfBK4Mtxy5FUUQZcSZKUq6oF0816FiHY/gxwJdAYwGPG9hOEru21wLbItUiqNgOuJElakcG0/95GCLcHgYThGAt9L/A/CRtJ/d/ItUiqPgOuJEkVYzAtnp8kBNv7gJ3A5+OWMxAThJHkfydsJPW9uOVIGhIGXEmSCsJgWj0XEoLtiwnjyB+MW87A/Aqwh7C2eF/kWiQNFwOuJEmbZDDVUk8GLieE2wbwJsLfTdU9k7DW9mmEEewb45YjaQgZcCVJIvwybjBVP/w88A4gJZwtekPccgbmdYRw+wHg3ZFrkTS8DLiSpKGXAG3gYcIaSYOpNuKlhI7tWYTu7cG45QzMCCHYvgJ4PfA3ccuRNOQMuJKkoTdG2M32J4DvYjDV+jyTEGx/jrDO9n1xyxmolxPC7ZcIG0k9FrccSWJL7AIkSYptFPhX4F+AOzDcau1+lTCKfAIh4A1TuP1NwrE/7yWsMTbcSioCO7iSpKE3CtwUuwiVyqsJXduHGb6x3B8mdG0fZHjO8pVUHnZwJUlDbxT4RuwiVAoXAB8hBLwPAf+V4Qq3v0xYr/5Z4DUYbiUVjx1cSdJQOwUDro5tK6Fjeznwu4TO5b1RKxqs0wih/nzgZcD1ccuRpJ7s4EqShtoo8DwMuOrtDYR1ti8AXgy8neEKt68mfP23E75+w62kIrODK0kaaln31oCrpV5C6No+G3gX8Im45UTRAC4F3gJ8OnItkrQWdnAlSUMtC7gPxy5EhfEM4PeBJuH4m4sYvnD7IuDLhDN9Ewy3ksrDgCtJGmpjuIOyut5K2ETpKYRgd2XccqJ4G/D3wFWE8exhGseWVH6OKEuShtoY8Bexi1B0lxA2kHqMEOpaccuJ4jnAHwAnE870/be45UjShtjBlSQNrdNwB+Vh98PAnwB/BPwp8OMMZ7j9WcJGUl8F6hhuJZWXHVxJ0tAaA87GgDuMjiNsIPVOwvE3NeDuqBXFcTzh638J4VzbL8QtR5I2zQ6uJGloZd1b1+AOl58lrLOdIJzpOs1whttXEp6HxwnrjQ23kqrADq4kaWhlAffR2IVoIH6UsM72XOA9wJ/HLSeqdwNvJhz/8/HItUhSP9nBlSQNrVHs3g6DHwLeD3we+AqhWzms4fYC4G+BFxCeB8OtpKox4EqShpYbTFXfmwmbJz2NsM72CqATtaJ4LiM8F9cCPw18J245kpSLUo8oJ7ELkKQNSGMXICAEHgNudb2KsIEUwBuBv45YS2xnEI7/eR7wX4B/jFuOJOWqtAE3IWyMIEllVMOgG9sY8HQcUa6a8wnBdjuhW/uBuOVE9xrCLsl/CvxM5FokaRBKG3AzO4H52EVI0hqNAwdiFyGg2721g1sNI4Rgezmwn/BC+HejVhTf+4GfBH4Z+GzkWiRpUEofcOexCyJJWr8s4D4euxBt2usJwfZm4BWEjaSG2YsJXdt/IkyLPBC3HEkaqNIHXEmSNsL1t+X3IkKwPR+4Evho3HIK4e3A/yYc//PHkWuRpBjcRVmSNJTGMOCW1enALPD3hA2TahhuzwX+ktDBrmG4lTS8DLiSpKFzBnZwy+oywiaTZxKC3G/hmPnPEZ6TLwE/gRunSRpujihLkobOGKELaBAojzphHPl44E3AZ+KWUwhPJqy13QZcAnwxbjmSVAh2cCVJQ8cdlMvjPOAq4CPAJ4GLMdwCTBG6tg8CF2G4laSMHVxJ0tAZI3Rvf9CH+0qSZNn70tT9/fvhnQuXqwjjyHfELacw3gP8EvBW4GDkWiSpaAy4kqShM8rmxpOTJGFqaop6vc7U1NSyj+/bt4/9+/cbdDfoUkKw/RahU/mluOUURkIYSb6dEPjvjFuOJBWSI8qSpKGzmQ2m9u7dS7vdpl6v02q1qNVqyy4A7XabvXv3rtjh1comCWPIvwXsAf47httMQhhJ/iLhBQDDrST11injJYFOZ+Ft7Fq8ePHiZa0Xv3fFvzwdOt+BztR6/+6SpNPpdDof//jHO0mSrOn2e/fu7XQ6nc7evXvX9DnDejkNOr8Dnceg827obC1ATUW71KDzA+i8oAC1eKnmxZ9PXqpysYMrSRoqo8AprK+DmyQJ7XabWq3G6173ujWNHqdpyu7du4/q6Gq5NwEp8EzC2O27gUejVlRMWwi/ufVj3bgkVZlrcCVJQ2W9OygvDrcbWVObBd0zzjiDvXv3snv37nXfRxW9knDsz4nAW4BPxy2n8LYQwm0ndiFDarWlBq61l4rFgCtJGirrWX+72XC72BVXXEG73R76zafOIWwg9VrgCuD34pZTGiOEgGsHdzCSJGHbtm1s27aNF73oRWzbtq3nbZvNJq1Wi2azOdT/t6WiMOBKkobKGGsPuLt27WLfvn19+aU1TVNqtVrfAnMZ/Toh3H6YsGnSd+KWUyqOKA9GkiTs2rWLyy67jEOHDnH99dezb98+Dh061PNzsh3VG42GYVcqiOgLgTdycSG8Fy9eynjxe1f8y5egs2stf1cLm0r1e3OovO63yJcd0PlH6HwGOi8tQD1lvPwodB6CzvkFqKWql+np6U1tCpckSWd6erozNzfX6XQ60b+eddePP5+8VONiB7dC8jqKwlcgJVXFWYQO7lrOwO1n93ZYXURYZ5sAvw18KG45pZatwbWDm4+5uTmATU1XpGlKmqbMzs6yY8cOOp3O0E5rqFpOAh6KXcQ6RU/ZG7n4KtOS52OhI5CXYeo0ePGS58XvXXEvL4XOfdA591h/Tzl2WYehg3sKdN4LnSeg8x7oPLkANZX9cjF07ufY/3a9rO+S/X/cs2dPqe47l+cCfz4N+2UrdC6Azquh82vQ+QB0/ho6t1Kufxt2cCtm586dzM/P9+3+xsfHOXDgQN/uT5JiyjaYujl2IRX2S4R1tl8mHPvzz3HLqYxsk6lO7EIqpJ+byK0kTVNGRkaYm5tjbm6OmZkZu7kqhBHCNNMY4efi0uu3ESadbgL+ljB981vA+YRj3YrOgFsx8/PzfvOUpB7Ws4Oy1ucVhGB7KvBrwLVxy6kcR5T7K+9wu9j27duZnp6m3W4zMjKS62NJS51D7zD7n4SfiTcBXwI+QjfY3rvkft5ACLhlYMCVJA2NUda2/jZP4+PjR95W4QXJ5xDW2e4ArgTeH7ecynIX5f4ZZLjNzM7Ocsstt7guV7l5Nit3Y0eBRwg/+74B3AAcpBtkv7fG+78JA66kdcprkzD1l7+UlNso8P8i15AtI+nncpJYZghd248RxpG/HbecSnNEuT9ihNvMwYMHh/6oMG3eM+g9WryFbnD9N+Azi/58+yYf9zBw6SbvY1AMuFIBZD9wVQ7+YlJOZ+OIcr/8FPAO4G7gNcAX4pYzFOzg9kej0Yi6FjZNU5rNJlNTU/4c0apOZ+Vu7BhwMt3R4mydbNah/Y+c6jm88NhnAnfl9Bj9YsCVCqTfm4Spv9x0rdxGgeNZW8BN05R9+/axa9cudu/enXNl5ZEQOrbbCOPIV8ctZ6hka3Dt4G7c9PQ0EMaFY2q1WtTr9eh1qBhOpfdo8Zl0Q+xNhM37suuD3ixxHjgFGMeAK2kd3CRMyk/Wvf33Nd5+//79tNtt9u/fP/T/L08irLN9JyHYvpHynYlYdtmIsh3cjUmShEajQa1Wi10KzWaTRqNBkiRD/71lmJzIyt3YMeC5HB1kP8nRHdoi/L+/mdDFPR+4LnItx2LAlSQNhTHWt8FUHl3cmOv/NuqNhGB7iLDOthxVV48jypszNTVFs9ksxP+7NE2ZmZmh0Wiwffv22OWoz46j92jxGCEoZuPEn110/SbCZlBFlo0pF50BV5I0FDay/rafXdyyhduXE4Lt6cDbgU/FLWfoucnU5tTrdVqtVuwyjpidnaVerzM9Pe2ocomtFGCz63fQ7cB+AbiKbph9IEaxfZB1cIvOgCtJGgpjwOfW+TlpmvZt19Ndu3axb9++wofbZxGC7c8QxpEbccvRAs/B3bgkSZiammJmZiZ2KUeZmZmh3W4XprOs3p5H7zB7H90O7FcIu8pnwfaeGMXm6CbgkthFrIEBV5JUedn5gBvZQXlxyN25cycHDx5c1+cnScLll1/OpZdeWoj1f6t5GyHcHiRsKJXXbpxaP0eUN65I48kqtmy3/aXd2DHgMbod2H8CrqEbbIu+6VK/ZB3ccxn8JlfrYcCVJFVetmZoPWtwF0vTlJGRETqdDvv27VvTyHKSJOzatYvLLruMffv2MTIyssFHz99PEoLtfcBO4PNxy9EKHFHeuKKNJyu+M+k9Wnw83Q7sN4C5Rddvi1FsgcwD9xN2UjbgSjlIkiTaY/sqsFQuWff2W5u8n1qtxq5du46MFbZaLZrN5rLbLQ62RV5zeyEh2L6YMI78wbjlaBWOKG9MUceTNRhPZeVu7CjheJ7FOxX/Hd0gu9bd9ofNXYTn6HxC8C8qA65KKdusJaYi/9Iq6WijbLx7u1iapuzevZv9+/czNTVFvV6n0Vi+SrXowfbJdI/9aQBvIrwqr+JyRLl60jSl2WwyNTVV2O8VZfEUeo8WP4Ojdyr+s0XXN7JsZdiVYaMpA65KbefOnczPzw/0McfHxzlw4MBAH1PS5owSfij3S5qmpGnK7OzsitMkRf5l9eeBdxCO+5kEbohbjtbIEeVqarVa1Ot1d1JeoxPoPVp8LkePFl/L0R3axyPUW0WHgZfFLuIYDLgqtfn5+UL/IimpGMYI5w3moSzfg15K6NieRejerm+rLMVmB7eabrnlFqamptixY8e6N7Crsi2s3I3NLrfSDa4tYB/dMPtwhHqHyWHC+egnUtzn2oBbMePj44W+P0katOx4h2EdRXsmIdj+HGGd7fvilqMNytbg2sGtlnPOOYdmsznU4fZceofZu+gG1y8CH6Lbob0vRrE6MqJ8PmESqIgMuBWT1+hsWToUkrTUKOF4h2EMuL9K6NZeA9SAW+KWo03IRpTt4FbLMO3w/BxW7saOAg/SDa5fBT5Bt0N7d4xi1dNhuiG3qOnAgFsR2REWMXcWlqQiyrq3w3S8w6sJXduHgdcDfxO3HPWBI8rVU9Udns+id0f2B3SD7I3AX9Dt0N4Ro1it28MUf6MpA27F2GmVpKMN03jyBYQNpH6MMI78R3HLUR+5ydTGuFNxfs5g5W7sGGEzqMU7FX9u0fXNHtem+LKjgorKgCtJqrQxQqegyrYSOraXA78LJMC9UStSv7kGd+PcqXhzTqP3WbJP4+idiq9bdN0lEdV1GLg0dhGrMOBKkiptFPh07CJy9AZCsP0X4MWE9Wvr5eKW/G22d5iNKGv9ms0mjUaDJEns4q7BK4FXcXSYPZujz5L9BEcHW/9tDpfDhH8XZxI2AisaA64kqbLOpbojyi8hdG2fDbyL8AvnRiRAu19FaVU1Nh50sxFlrV9Rx5QbjQYzMzOFqSmr4s10w+xfcnSwfTROaSqYeeAUYBwDriRJAzUKfJ/wi1lVPIMQbH+RsM72yk3e3wTwr4TNqJSP1wD/g811cbMRZW1M0caUp6enAQpTT6ZG+H75UOxCVGg3091o6rrItazEgCtJqqwxwi9rt8cupE/eShhH/itC5/WbfbjPScL5ksXoIVXT/wL+cZP3MdKPQoZYkcaUkySh0WhQq9Wi1rESvw9orbIx5SLaErsASZLyUpXx5EsIr5L/NGHN7S/Sn3ALoYP7tT7dl1Y2ycbWRi/miPLmpGnKzMwMjUYjdilMTU3RbDajB21pM4p8VJABV5JUWaOUezz5h4E/IRz386fAjwOtPt7/OP0JX+rt+YQXETb7HDuivHnZOHA2HhxLvV6n1ern/2Rp8Ip8VJABV5JUWWXt4B5H2DiqTdjAowbsy+FxJgjPz2bHZ9XbJGFDln4EXHeq3bysi5skcfYOT5LkSAdXKrOsg3tu7EJWYMCVJFXSKOUMuD9LCLYTwMuAaeDunB5rkhBuH8/p/tXt3m42nDqi3B9pmlKr1Wi32wMPuUmS0G63qdVqjier9OaB+wmTQEVjwJUkVdIo4YdvWQLujwJ/AfwG8B7CzrvX5/yYE9i9zVu/RsAdUe6fGCF3z549hltVyl0Ud0zZgCtJqqSse3tn7EKO4YeA9wOfB75C2B35zwfwuM+lP2tD1dt5wDb6F3AdUe6fxSF3x44duT1OkiTMzc1x4YUXMjIyYrhVpRR1oykDriSpksownvxmwrEcTyOss72CwYWYCcLosx3c/EwC36Y/AdcR5f5L05SRkREOHDiQ28ZT7XabVqvF9u3bc7l/KaaiHhVkwJUkVdIYxQ24rwL+Dngd8EbgFwi/KAxStv72gQE/7jDJxpMf6cN92cHNT61Wo16vMzc317eR5SRJ6HQ67Ny588juzVLVZB3cE2MXsoQBV5JUOVsIAbdoRwSdD/wxcDXwceDHgL+OVIvrb/PXzxFwO7j5SdOU7du302q1aLfb7N27d0NBN0kSpqenue66646stz148GAOFUvFkAXcoo0pHxe7AEmS+q1oOyiPAO8ELgf2E9bZfjdiPU8nhK/fj1hD1T2b0MG9sk/35yZT+ZudnaXZbLJr1y7a7TaHDh3i+uuv59ChQxw6dKjn501NTVGv148c/3PNNddw8cUXD7ByKY7DdENukVaXG3BVauPjg9+cPMZjSlqfMcL60iJ0cF9PCLY3A68gbCQV2yQhLLnBVH4mgPvoX5fcEeXBSNOU3bt3s3//frZt28a2bdu47LLL2LZtW8/PaTabtFotZmZm3ERKQ+VhirnRlAFXpXbgwIFoj+0PMam4su7t9yLW8CJCsD2f0MX7aMRalnohIXjFfH6qLlt/e1+f7s8R5cFK05Q0Tbn66qsBVh1Z9vcBDbMiHhVkwFUpZTsfDvqQdknlMEq87u3phHHktxCC7Q7g8Ui19NKvs1nV2zbgi328P0eU4zLESis7DFwau4glDLgqNX/gSFrJKHFGgS8jhNu/JRz7828RajiWUwnjs38Su5AKy2ONsyPKkoooOyroTOCuyLVkDLiSpEo5jhBwPzbAx6wTxpGPB94EfGaAj71eE4SQ6w7K+cljjbMjypKKaB44BRinOAHXY4IkSZUyyB2UzwOuAj4CfBK4mGKHW+geD/St2IVUWHY8UD/XODuiLKmIbqZ4G00ZcCVJlTIG3En+a3DfSTgW4QHCOPIf5Px4/eL62/zl8Rw7oiypqLIx5aIw4EqSKiXr3v5nTvd/KXAD8BJgCvgV4I6cHqvfthK6i1+LXUiFnUYIuP0eAXdEWVJRFa2D6xpcSVKl5DWePEno2v4IcAVhLLlsJoDnYgc3T5PASdjBlTQ8bgIuiV3EInZwJUmVMkZ/A+5pwO8AXwb+CUgoZ7iF7vrbvMa3Pbqt2729rc/3awdXUlFlHdxzYxeywA6uJKkythI6uP06AudNhK7t3xHW2d7Yp/uNpV+js0uD7NTUFPV6nampKZrNJq1Wi2azedRthuVYt0ngUA736yZTcRTtRZth+X+kcpkH7ifspHxz5FrAgCtJqpAx+jOi/ErCsT8nAm8BPr3J+yuKCeD3Nnkf09PTNBqNo96XhdqZmZkjYXfpbWZmZpidnd3koxfbSYSA+4kc7tsR5cFLkoR2ux27jGVqtZpBV4VyF2Ey6HxgLnItYMCVJFXIKGE0dKMjuOcQOravJayz3WwYLJKLCOPVG10bmiTJkdBaq9WO+tjiX7bTNGV2dnZZ56vRaFCv15mZmansL+cTwNPJ54xhR5Tj2blzJ/Pz87HLYHx8nAMHDsQuQ1pRkTaaMuBKkioj697eu4HP/XVCuP0wIQh+p491FUE2nvzP6/y86enpI+PH6+nCLg2x27dvZ3p6mna7fdQYc5XCbnY80C053LcjyvHMz89X6t+plIfDwMtiF7HATaYkSZUxyvq7tzsIwe/lwH8D3kr1wi10N5haqyRJ6HQ6vPa1r6XValGr1TY9Yjw7O0utVqPValGv1ws5/rkZeRwPlHFEWVKRZR3cE2MXgh1cSVKFjAGfX+NtLyKss02A3wY+lFdRBTEB/PEab5utPcxjrV+apkfGmHfs2EGn06nEmsInEZ7jK3K6f0eUJRVZFnDPB2J/NzfgSgUyPj4euwStwr+fYjuR0MH94DFudwoh2M4AVwJvAL6fb2nRPZ8Qvt66htvmGW6XOnjwILVabWCPl6dJwgsseZ0x7IiypCI7TDfkxv5ObsCVCsTNI8qhzL+EV9kox95B+ZcI62y/TDj2Z73rUctqknCMw1rCV6PRGOhGUGmaMjMzQ6PRYPv27QN5zDxkxwPltRWRI8qSiuxhirPRlAFXKoA0TRkZGSnceXtSmYwC/87KAfcVhGB7KvBrwLUDrKsIXkhYG3qsgDQ9PQ0w8ON8ZmdnqdfrTE9Pl/YooWyDqbw4oiyp6LKjgmIz4EoFYmdQ2rise3v/ovc9hzCOvIMwjvz+CHUVwSRwzTFukx0DtPQIoEGZmZk5ssNyGb8XTpLvsVJ2cCUV3WHg0thFYMDtyU5auZTxlyFJ/bV0PHmG0LX9GGEc+dsxiiqAcwjrb39zldsMct1tL2malnY97mbPGF4LO7iSiu4wYS+CM4G7ItZhwF1B9oNe5VK2X4gk9dcY8Dngp4B3AHcDrwG+ELOoApgA7qT38TVFCLeZsobcjZ4xvB5uMiWp6OYJGzmOY8AtrJ07dzI/n9d2EeqX8fFxN2eShtxJhA7uycBZhHHkq6NWVBzZ+bcP9fj41NRUocaC0zSl2WwyNTVVmJqOZYJ8u7dgB1dS8d1Md6Op6yLWYcBdxfz8fGl+uErSMBsjBNzPA1P0DnPDaJLVzwau1+u0Wq1BlbMmrVaLer1emg2nJoGrcn6MLcDjOT+GVlaUI+KKUoe0mmxMOSYDriSp9FJCh0tHO4vQXey1uVaSJExNTTEzMzPAqo6t2WzSaDRIkqTwLzRfAGwDduf8OHZw4ynalFjR/09ouBXhqCADriRJFTUBPErv8dmijSdnyjSmPElYe9trjXO/uIvy4HmEn7R+NwGXRK7BgCtJUkVlZ7Pe3ePjRRxPzpRlTDnbYCpvdnDjKfqLLFKRZB3ccwlrcmPYEulxJUlSziaAr/X4WDae3Gw2B1nSmmUd3KJ3zwaxwRS4i7KkcpgnnEcfc8W4AVeSpAp6Kt0OrvIxxuCeY0eUJZXBXYQx5ZjrcA24kiRV0ARwIoMZnx1Wk8CtOKIsSYvF3mjKgCtJUgVla0Nvi13IBmVHohT5aJRsPPnRATyWI8qSyiL2UUEGXEmSKmiCcndv5+fnj3pbRIMcAXdEWVJZZB3cEyM9vgFXkqSKeTKD2/xoWD2XwQZcR5QllUUWcGONKRtwJUmqmAngWZS7g1t0k4TjlwbZwTXgSiqDw8Rdh2vAlSSpYrLO4jdXuU2apkeO4imi7Aijop5BmnXIHxzQ4zmiLKksHsaAK0mS+uiFrK1722q1qNfreZezIfV6nVarFbuMngZ9BJMjypLKJOZRQQZcSZIqZq3hK+vgJkmSd0nrkiTJkQ5uEZ1Fd5fqQbGDK6lM7OBKkqS+mAB+hLWFr6KOKZdhPPlR7OBKUi/ZUUFnRnhsA64kSRWSrQ29cY23L+KYclnGk+8e4GO6yZSkMpkHTgFinGRuwJUkqULWuza0aGPKRR9PhsGvvwVHlCWVy83EG1M24EqSVCETrG9taJqmzMzM0Gg08ippXRqNBjMzM4UdTz6dOAHXEWVJZZONKQ+aAVeSpIq4gI1tfjQ7OwvA9PR0v0tal+zxs3qKaBLYyuDPGHZEWVLZxOrgHhfhMSVJUg4mgH9hY+FrZmaGdrsdbXOnJEloNC8QRmwAAAtvSURBVBrUarWBP/Z6ZGucbx/w4zqiLKlsbgIuifC4dnAlSaqIzYzOpmlKrVaj3W4PfD1ukiS0221qtVphR5MzMcaTwRFlSeWTdXDPHfDjGnAlSaqICeBrm/j8GCG3TOH2ZAZ//m3GEWVJZTMP3M/gd1I24EqSVAHn0Z/u4uKQu2PHjj5U1luZwi2E5/d04nRwHVGWVDZ3EcaUB70O14ArSVIFTADfpj/dxTRNGRkZ4cCBA7ltPLVnz55ShVvovoBwa4THdkRZUhnF2GjKgCtJUgVko7Pf7+N91mo16vU6c3NzfRtZTpKEubk5LrzwQkZGRkoTbiHe+luwgyupnGIcFWTAlSSpAtZ7/u1apGnK9u3babVatNtt5ubmmJ6eXnfYTZKE6elp5ubmaLfbtFottm/f3udq87WVeOtvwQ6upHIZAZ4K3AP8CHDiAB/bY4IkSSq5swkB93053f/s7CzNZpOpqSnq9TqNRoNms0mr1aLZbPb8vOz2U1NTR24/MzNTqq5tZgJ4LnE7uAZcSTGcBpy68PapC9efuvDn0xZ9fOn7nrro8x4eYL0GXEmSSm6C8MtDnt3FNE1J05TZ2VmSJDkq7PZS9lC7WDaefFOkx3dEWdJmnULvMLrSZWmYPRV4ELh30eUe4L6F6/9BOIv9niW3uXcQX9wiBlxJkkouC1/3DOjxlobd1W5XFTHHk8ERZUldJ9G7W7q4a9qr23oaYb+GxQE1C6X3Ad8Bvs7ykLo02Bb1e5IBV5KkkpsAro/02FUKsauZAPZEfHxHlKXqOZHVu6Vr6bI+Ru8Qeidhk6eVQuziLuvjeX+hA2bAlSSpxE4nhK8/il1IhU0AFxJv/S04oiwV2Qms3i3tNfq7+HqH3kH1e8DN9A6o2eXRvL/QkjDgSpJUYpOEHX5jjs9W3SRwCLgxch0GXClfW1lbGF0txI6werf0VnqP/Ga3fSTvL7TiDLiSJJXYCwnh9vbYhVRYzPNvM44oS2t3HBsPqNnleFZfg/ptjt5gaekY8L0MdudgdRlwVzE+Ph67BK2Bf0+ShlkRwlfVTQL7I9fgiLKG0RY2PvKbfd6TWb1bevui6yuN/t4DPJT3F6q+MuCu4sCBA7FL0DoMy0YnkpQ5ibA+9OOxC6mwCwnPcewXEdxFWVWRsLbjaJYG25NZvVv6DVYf/b0XuH8AX5/iM+CuIE1TRkZGVj36QJKk2CaAp+P62zxNAilwQ8QaRnBEWeV0BlBbuFy06HqvjZLuAW5Z4X1L17QO+lxVlYsBdxV2BCVJRTZBCLe3xC6kworSvXVEWWUwTjfIZm9PANqEF4n2LFxfHGD9d61+M+BKklRSrr/N3yTw0cg1bMERZRXPSSwPsxcRXnC7Afgi8IeEQHtbpBo1nAy4kiSV0Aihu/jeSI9ftGU8eUxdjQPbgLf1/Z7XZwt2cBXfczl6zPgi4CxCmG0DV9Ht1Hoeq2Iy4EqSVEKThAAWo4ObJAntdjvCI6+uVqv1NehOAjcRv0vuGlwN2haWd2eztbNZoP3YwvVvRqpR6sWAK0lSCWXrb78esYadO3cyPz8fsYJgfHw8l5MPJgnP8RN9v+f1cURZeXsGYXfjxaH2+XTD7CeBd9FdPysVmQFXkqQSysJXTPPz85XekHECuDZ2EbjJlPrvApZ3aKE7YvyZhbc3RqlO2hwDriRJJTQB7ItdRIWdQ3gR4V2xC8EOrjbnNJYf1XMRYfrjBuBzwCzhOKw7ItUo9ZMBV5KkkrmQ7oiy8jEB3EkxnuNskykDrtbiPJZvBnUaoTvbBj5At1PrvylVkQFXkqSSmSR0W26IXUiFZUcwPRS7EBxRVm9bWfmontsJ3x++Cly9cP3WSDVKg1b6gDseuwBJWge/Z6kf7N7mbxthdLMIHFFW5myWh9lz6G4G9VHg7Qt/LsKLM1IMpQ+4/d8zUZLyV91teTQIE8CfxS6iws4mPMfvi13IAkeUh1fC8vWzj9AdMf7Uwtv4e5lLxVHagJsSXs0s1jHzkiTla4wQvmZiF1Jhk4TuV+zzbzOOKA+HM1geZmt0187+FXDlwvXvRapRKoPSBtyMXRBJ0jCZJKylc0Q5PxOEcFuU8z4dUa6mcZavnz2Bbnd2z8J1f9eV1qf0AVeSpGHyQkK4fTR2IRU2CXwldhGLZCPKdnDL6yRW3gzqFkKY/SLwh4RAe1ukGqWqMOBKklQik8BnYxexYHy8GNum9bOOMwjPcZHOGM5GlO3glsdzWX5Uz1l0N4O6im6n1herpP4y4EqSVBLPJozPXhG7kAUHDhRrq8c03fww5yQhTBZl/S04olx0W1jena0RRtyzQPuxhevfjFSjNEwMuJIklcQEcB/x19+macrIyAhJUr2tHicJz++dsQtZxE2miuUZhE1OF4fa59MNs58E3rVwvSjruKVhYsCVJKkksvNv74tdyIJ+dEyLZhI4FLuIJezgxnUByzu00B0x/szC2xujVCdpKQOuJEklMQn8Q+wiKuxUwnP84diFLOE5uINzGsuP6rkI+DohxH4OmCXsbHxHpBolrc6AK0lSCfwQIXx9IHYhFTZBCLmxR8CXckQ5P+exfDOo0+iePfsBup1aX2CQysGAK0lSCUwQgk7RwleVTBI2l/pW7EKWcES5P7ay8lE9txMC7FeBqxeu3xqpRkmbZ8CVJKkEirj5UdVkz3HROKK8MWezPMyeQ3czqI8Cb1/480ORapTUfwZcSZJKINtgSvk4gRBwr4ldyAocUe7tZOApi94uXT/7CN0R408tvJ2PUqmkQTHgSpJUcE8hBNyPxi6kwiaBZ1Gs828zVRtRfhLdULo0oK70di23yd5ma2f/Crhy4fr3BvNlSSoIA64kSQU3AZyOHdw8ZccDfTN2ISvIRpRjd3C3cnTgzC7rDaNL37cVeAB48Bhvv7OG21Tv4CpJ62XAlSSp4LK1oW58k59sg6kiykaUN9rBPZHNd0hXeh+sHDSXvu+7a7jN4rcPb/DrlCQw4EqSVHiuv83XCCHgvjd2IT1kI8ovIBwXtdlR3kc5duC8D7jtGLd5YMnHHs3rCZCkdTDgSpJUYMcRAu57YhdSYZPAOMXu4I4A+wnBc7Xu513ALce4zdLA+sTgvhRJyp0BV5KkApsARrGDm6dsBPzrsQvpISUE3PM4OqBKkpYz4EqSVGDZ2lCPNslPkdffLlbEDbAkqWgMuJIkFdgLsXu7khHCcTNbFl2e1OPtsT5+MTA72PIlSTkZIf6u85IkqYevAtcSzvXsFdQ2GvDWeh8j67jvotXX6+NLr4+s9S9EklRoBlxJkgoqAdqE42F+QNgMaOn1Jwg/yJ9Y4f1r+fix7nul26z142u9jyLU5/mpklQNBlxJkgruQjYW4Fb6uD/0JUlVZsCVJEmSJFXCltgFSJIkSZLUDwZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIlGHAlSZIkSZVgwJUkSZIkVYIBV5IkSZJUCQZcSZIkSVIl/H/zZJ5t67lorQAAAABJRU5ErkJggg==
(defun c:tet ()
(defun juxingguolv (ss / ent i j lst1 lst2 maxpoint minpoint nam name1 name2 pmax pmin pt1x pt1y pt2x pt2y pt3x pt3y pt4x pt4y ) ; 过滤掉矩形选择集内的矩形子函数 nam
(setq lst1 '())
(repeat (setq i (sslength ss))
(setq nam (ssname ss (setq i (1- i))))
(vla-getboundingbox (vlax-ename->vla-object nam) 'minpoint 'maxpoint)
(setq pmax (vlax-safearray->list maxpoint)pmin (vlax-safearray->list minpoint))
(setq lst1 (cons (list pmin pmax nam) lst1))
)
(setq lst2 lst1)
(repeat (setq i (length lst1))
(setq nam (nth (setq i (1- i)) lst1))
(setq pt1x (car (car nam))pt1y (cadr (car nam))pt2x (car (cadr nam))
pt2y (cadr (cadr nam))name1 (caddr nam) )
(repeat (setq j (length lst2))
(setq ent (nth (setq j (1- j))lst2 ))
(setq pt3x (car (car ent))pt3y (cadr (car ent)) pt4x (car (cadr ent))
pt4y (cadr (cadr ent)) name2 (caddr ent))
(if (and (> pt3x pt1x) (> pt3y pt1y)(< pt4x pt2x) (< pt4y pt2y))
(if (ssmemb name2 ss)(setq ss (ssdel name2 ss))))
(if (and (< pt3x pt1x) (< pt3y pt1y) (> pt4x pt2x)(> pt4y pt2y))
(if (ssmemb name1 ss) (setq ss (ssdel name1 ss))))))
ss
)
(setvar "cmdecho" 0) ;指令执行过程不响应
(setq ss (ssget (list'(0 . "LWPOLYLINE,CIRCLE"))))
(progn
(setq ss (juxingguolv ss))
(sssetfirst nil ss)
(command "_.chprop" SS "" "c" "1" "")
)) attach://116885.gif 这种情况下会出错麻烦看看
guosheyang 发表于 2021-11-30 00:02
attach://116885.gif 这种情况下会出错麻烦看看
这个 是相对齐整你这个应该 二次分堆 就分出来 了
guosheyang 发表于 2021-11-30 00:07
我先前也写过个类似代码估计框内图元多了的话 会运行慢 在这儿http://bbs.mjtd.com/thread-184261-1- ...
不适合 xy方向投影上有有交叉的没有间隔的分堆 kkq0305 发表于 2021-11-30 10:44
不适合 xy方向投影上有有交叉的没有间隔的分堆
好的 谢谢! 可以返回;((选择集((点表)(点表)(点表)(点表))) (选择集((点表)(点表)(点表)(点表))))这样吗 请教大家,上面的代码是哪一行修改矩形框的图层的?