找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 249|回复: 1

lisp能否实现四叉树算法

[复制链接]

0

主题

0

回帖

26

积分

管理员

积分
26
发表于 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.   )
复制代码

0

主题

0

回帖

26

积分

管理员

积分
26
 楼主| 发表于 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. )
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|膜结构网

GMT+8, 2024-12-28 02:05 , Processed in 0.166188 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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