xiaocainiao 发表于 2024-9-13 09:37:07

请教!指定点与上下左右四个方向上最近图元的交点坐标






请教各位大神!

除了用(ssget "f" (list p1 p2)) 配合ssnamex函数、
获取指定点与上下左右四个方向上最近图元的交点外,

还有没有其他方法可以获取到这四个交点的坐标?

飞雪神光 发表于 2024-9-15 07:19:48

明经上好像有代码啊 向四个方向上画线然后求交点 优点是没有误差 缺点是高版本CAD卡顿

xiaocainiao 发表于 2024-9-15 12:55:26

飞雪神光 发表于 2024-9-15 07:19
明经上好像有代码啊 向四个方向上画线然后求交点 优点是没有误差 缺点是高版本CAD卡顿

谢谢、我在搜一下看看吧、之前搜没有找到、画线求交点怎么应该比直接BO流畅吧

xiaocainiao 发表于 2024-9-15 15:01:14

飞雪神光 发表于 2024-9-15 07:19
明经上好像有代码啊 向四个方向上画线然后求交点 优点是没有误差 缺点是高版本CAD卡顿

(defun c:tt ()
        (defun line (pt1 pt2)
                (entmakex
                        (vl-list*
                                '(0 . "LINE")
                                '(100 . "AcDbEntity")
                                '(100 . "AcDbLine")
                                (list (cons 10 pt1) (cons 11 pt2))       
                        )
                )
        )
        (setq pt (getpoint"\n指定内部点"))
        (setq pt1 (polar pt 0 0.5))
        (setq pt2 (polar pt pi 0.5))
        (setq pt3 (polar pt (* 0.5 pi) 0.5))
        (setq pt4 (polar pt (* 1.5 pi) 0.5))
        (setq cp1 (polar pt (* 0.25 pi) 1))
        (setq cp2 (polar pt (* 1.25 pi) 1))
        (line pt1 pt2)
        (line pt3 pt4)
        (setq ss (ssget "c" cp1 cp2))
        (setvar "OSMODE" 0)
        (command-s "EXTEND" "" "C" ss "")
)

我想到一种方法、就是画水平和垂直的两条线、然后用EX命令去延伸、延伸后的端点坐标就是交点、

不过现在延伸直线出问题了、我直接在CAD中输入EX命令去延伸,可以同时延伸四个端点、

但是用Lisp就只能延伸两个端点、不知道是什么问题

飞雪神光 发表于 2024-9-15 18:06:36

xiaocainiao 发表于 2024-9-15 15:01
(defun c:tt ()
        (defun line (pt1 pt2)
                (entmakex


(command "_extend" "" (list ty pt)"")

xiaocainiao 发表于 2024-9-15 19:07:50

飞雪神光 发表于 2024-9-15 18:06


谢谢、我发现用延伸这种方法应该也是可以的、目前发现的问题、就是延伸不会过滤填充、就是说会把填充做为延伸边、搜了帮助好像没有变量能控制过滤填充

Andyhon 发表于 2024-9-15 20:30:20

个人觉得提问时需附上具代表性的样例
要不然回应者给出的可能只是子集
满足不了衍生的状况

xiaocainiao 发表于 2024-9-15 22:20:34

Andyhon 发表于 2024-9-15 20:30
个人觉得提问时需附上具代表性的样例
要不然回应者给出的可能只是子集
满足不了衍生的状况

谢谢建议、以后注意
页: [1]
查看完整版本: 请教!指定点与上下左右四个方向上最近图元的交点坐标