明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 709|回复: 5

选择集按属性分堆(院长函数小改)

[复制链接]
发表于 2024-10-23 19:05:31 | 显示全部楼层 |阅读模式
院长分享了一个函数,xyp-SsSort-Dxf 选择集依据dxf码值分类,很强大的一个函数,详见:

http://bbs.mjtd.com/thread-100381-1-1.html
对这个函数做了一点点修改,其实就改了两三行,采用get属性的方式,对选择集进行分堆。
  1. ;; SsSort-sx 选择集依据dxf码值分类 (SsSort-sx ss keyname)
  2. ;; (SsSort-sx (ssget) "Length"),返回表,例如((201.617 (<图元名: -274ee8> <图元名: -274ed8> <图元名: -274ec8> <图元名: -274eb8> <图元名: -274ea8>)) (473.583 (<图元名: -274ef0> <图元名: -274ee0> <图元名: -274ed0> <图元名: -274ec0> <图元名: -274eb0>)))
  3. (defun SsSort-sx (ss keyname / a b dx i lst lst-dxf lst-num s1 xyp-dxf)
  4.   (if (and ss (= (type ss) 'PICKSET) (> (sslength ss) 0))
  5.     (progn
  6.       (setq lst-dxf '()
  7.         i -1
  8.       )
  9.       (while (setq s1 (ssname ss (setq i (1+ i))))
  10.         (setq obj (vlax-ename->vla-object s1))
  11.          (setq dx ((eval (read (strcat "vla-get-" keyname))) obj)
  12.            lst-dxf (cons (list dx s1) lst-dxf)
  13.          )
  14.       )
  15.       (setq lst-dxf (vl-sort lst-dxf '(lambda (x y) (< (car x) (car y))))
  16.         lst-num '()
  17.         a            (car lst-dxf)
  18.         lst-dxf (cdr lst-dxf)
  19.         lst            (list (cadr a))
  20.       )
  21.       (while (setq b (car lst-dxf))
  22.         (setq lst-dxf (cdr lst-dxf))
  23.         (if (= (type (car a)) 'REAL)
  24.           (if (equal (car a) (car b) 1e-5)
  25.             (setq lst (cons (cadr b) lst))
  26.             (setq lst-num (cons (list (car a) (reverse lst)) lst-num)
  27.               lst          (list (cadr b))
  28.               a          b
  29.             )
  30.           )
  31.           (if (equal (car a) (car b))
  32.             (setq lst (cons (cadr b) lst))
  33.             (setq lst-num (cons (list (car a) (reverse lst)) lst-num)
  34.               lst          (list (cadr b))
  35.               a          b
  36.             )
  37.           )
  38.         )
  39.       )
  40.       (reverse (cons (list (car a) (reverse lst)) lst-num))
  41.     )
  42.   )
  43. )

 楼主| 发表于 2024-10-24 11:42:01 | 显示全部楼层
一个简单的例子,拉伸单个桩。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2024-10-23 20:04:39 | 显示全部楼层
举个实用的例子更好理解
发表于 2024-10-24 09:01:25 | 显示全部楼层
http://bbs.mjtd.com/thread-190896-1-1.html

一个找朋友算法是通用算法,只需要改func函数就行
 楼主| 发表于 2024-10-24 09:45:04 | 显示全部楼层
liuhe 发表于 2024-10-24 09:01
http://bbs.mjtd.com/thread-190896-1-1.html

一个找朋友算法是通用算法,只需要改func函数就行

谢谢流河大师,我学习下。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:34 , Processed in 0.183003 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表