天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 113|回复: 1

lisp能否实现四叉树算法

[复制链接]
  • TA的每日心情
    开心
    昨天 11:26
  • 签到天数: 86 天

    [LV.6]常住居民II

    1640

    主题

    207

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
    发表于 2024-3-16 20:40:42 | 显示全部楼层 |阅读模式
    1. ;;参数 pt 位置点坐标
    2. ;;     jd 查找半径
    3. (defun gxl-sel-SSgetByPoint (pt jd / px py px0 px1 py0 py1 ss pz rtn e)
    4.   (setq  px  (car pt)
    5.   px0 (- px jd)
    6.   px1 (+ px jd)
    7.   py  (cadr pt)
    8.   py0 (- py jd)
    9.   py1 (+ py jd)
    10.   pz 1e99
    11.   )

    12.   (setq  ss
    13.    (ssget  "x"
    14.     (list '(0 . "point")
    15.           '(-4 . "<and")
    16.           '(-4 . ">=,>=,<>")
    17.           (list 10 px0 py0 pz)
    18.           '(-4 . "<=,<=,<>")
    19.           (list 10 px1 py1 pz)
    20.           '(-4 . "and>")
    21.     )
    22.    )
    23.   )
    24.   (if ss
    25.     (progn
    26.       (repeat (setq n (sslength ss))
    27.   (if (<= (distance (list (car pt) (cadr pt)) (cdr (assoc 10 (entget (setq e (ssname ss (setq n (1- n)))))))) jd)
    28.     (setq rtn (cons e rtn))
    29.     )
    30.   )
    31.       )
    32.   )
    33.   ;;颜色变红提示
    34.   (foreach e rtn (entmod (append (entget e) '((62 . 1)))))
    35.   ;;返回选中点图元名列表
    36.   rtn
    37. )
    38. ;;测试
    39. (defun c:tt (/ pt jd)
    40.   (setq rtn (gxl-sel-SSgetByPoint (setq pt (getpoint "\n位置点:")) (setq jd (getdist pt "\n半径:"))))
    41.   (command "circle" "_non" pt jd)
    42.   (princ (strcat "\n选中" (itoa (length rtn)) "个点."))
    43.   (princ)
    44.   )
    复制代码

     

     

     

     

    lisp能否实现四叉树算法
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
  • TA的每日心情
    开心
    昨天 11:26
  • 签到天数: 86 天

    [LV.6]常住居民II

    1640

    主题

    207

    回帖

    214748万

    积分

    管理员

    积分
    2147483647
     楼主| 发表于 2024-3-16 20:41:05 | 显示全部楼层
    1. (defun c:zdlj (/     a           b         dxf   dxf2  ents  ents2 es    jb
    2.                jb2   jb-ks jb-pt jdcds l     old   old-cdr     p
    3.                p2    ss
    4.               )
    5.         ;最短路径
    6.   (vl-catch-all-apply 'load (list (findfile "zdlj.vlx")))
    7.                                         ;声明引用zdlj.vlx这个模块
    8.   (vl-catch-all-apply 'vl-doc-import (list "zdlj")) ;声明引用函数
    9.   (SETQ JDCDS NIL)
    10.   (SETQ ES NIL)
    11.   (setq jb-pt nil)
    12.   (SETQ SS (SSGET))
    13.   (and ss(setq        ents (vl-remove-if
    14.                (function listp)
    15.                (mapcar (function cadr) (ssnamex SS))
    16.              )
    17.   ))
    18.   (setq jb-ks nil)
    19.   (while (setq a (car ents))
    20.     (setq dxf nil)
    21.     (setq jb nil)
    22.     (setq p nil)
    23.     (setq ents2 nil)
    24.     (setq dxf (entget a))
    25.     (setq jb (cdr (assoc 5 dxf)))
    26.     (setq p (cdr (assoc 10 dxf)))
    27.     (setq ents2 (cdr ents))
    28.     (while (setq b (car ents2))
    29.       (setq dxf2 nil)
    30.       (setq jb2 nil)
    31.       (setq p2 nil)
    32.       (setq l nil)
    33.       (setq old nil)
    34.       (setq old-cdr nil)
    35.       (setq dxf2 (entget B))
    36.       (setq jb2 (cdr (assoc 5 dxf2)))
    37.       (setq p2 (cdr (assoc 10 dxf2)))
    38.       (SETQ L (DISTANCE P P2))
    39.       (SETQ L (VL-PRINC-TO-STRING L))
    40.       (setq old (assoc jb jb-ks));建立索引
    41.       (setq old-cdr (cdr old))
    42.       (setq old-cdr (cons (CONS (cons JB JB2) L) old-cdr))
    43.       (setq jb-ks (vl-remove old jb-ks))
    44.       (setq jb-ks (cons (cons jb old-cdr) jb-ks)) ;建立数据库索引
    45.       (setq ents2 (cdr ents2))
    46.     )
    47.     (setq jb-pt (cons (cons jb p) jb-pt)) ;建立数据库索引
    48.     (setq ents (cdr ents))
    49.   )
    50.   (setq
    51.     jb-ks
    52.      (mapcar
    53.        (function
    54.          (lambda (a)
    55.            (cons
    56.              (car a)
    57.              (vl-sort (cdr a)
    58.                       (function (lambda (x y) (< (cdr x) (cdr y))))
    59.              )
    60.            )
    61.          )
    62.        )
    63.        jb-ks
    64.      )
    65.   )
    66.   (setq jb-ks (reverse jb-ks))
    67.   (mapcar (function (lambda (a / e1 e2 p1 p2)
    68.                       (setq e1 (car a))
    69.                       (setq e2 (cdr (car (car (cdr a)))))
    70.                       (setq p1 (cdr (assoc e1 jb-pt))) ;启用索引
    71.                       (setq p2 (cdr (assoc e2 jb-pt))) ;启用索引
    72.                       (and p1
    73.                            p2
    74.                            (vla-addLine
    75.                              (vla-Get-ModelSpace
    76.                                (vla-get-ActiveDocument
    77.                                  (vlax-get-acad-object)
    78.                                )
    79.                              )
    80.                              (vlax-3D-Point p1)
    81.                              (vlax-3D-Point p2)
    82.                            )
    83.                       )
    84.                     )
    85.           )
    86.           jb-ks
    87.   )
    88. )
    复制代码

     

     

     

     

    lisp能否实现四叉树算法
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网_中国空间膜结构协会

    GMT+8, 2024-6-2 13:04 , Processed in 0.059492 second(s), 22 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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