szx025 发表于 2022-9-22 16:01:42

如何获取鼠标拾取点与直线最近的交点和垂直点坐标



(setq en1 (entsel "\n请选择梯段线(标靶靠钢梯一侧):");获取图元名
         px (cadr en1)                                                                ;获取鼠标拾取点坐标
               ss1 (entget (car en1))                                             ;获取图元联合资料串
               ps1 (cdr (assoc 10 ss1))                                       ;获取开始坐标
               ps2 (cdr (assoc 11 ss1))                                    ;获取结束坐标
        )

(setq sss (ssget "f" (list ps1 ps2) '((0 . "LINE"))))


(setq les (sslength sss))
    (repeat les
      (setq n1 (ssname sss (setq les (1- les)))
          d1 (cdr (assoc 10 (entget n1)))
          d2 (cdr (assoc 11 (entget n1)))
          In (inters ps1 ps2 d1 d2 t)   
          ns (cons In ns)                     ;取得直线交点坐标列表
      )
    )

如何获取鼠标拾取点与直线最近的交点和垂直点坐标

菜卷鱼 发表于 2022-9-22 17:35:12

(osnap pt mode)

(setq pt2 (osnap pt1 "_Perp,_int"))

垂足不知道是不是Perp,
全称是,Perpendicular
Perp不行就试一下per

szx025 发表于 2022-9-23 10:06:34

关键是如何从直线交点坐标列表ns中找出距鼠标拾取点px最近的那个交点

xtjd 发表于 2022-9-23 13:21:15

szx025 发表于 2022-9-23 10:06
关键是如何从直线交点坐标列表ns中找出距鼠标拾取点px最近的那个交点

vl-sort排序

szx025 发表于 2022-9-26 08:36:08

xtjd 发表于 2022-9-23 13:21
vl-sort排序

老大,能否详细说说怎么排法

xtjd 发表于 2022-9-26 10:30:11

szx025 发表于 2022-9-26 08:36
老大,能否详细说说怎么排法

(car(vl-sort ns '(lambda(a b)(<(distance px a)(distance px b))))))
页: [1]
查看完整版本: 如何获取鼠标拾取点与直线最近的交点和垂直点坐标