求教!如何提升用ssnamex函数获取交点坐标的精度
(defun c:tt (/ int_list p1 p2 pt1 pt2 ss ssdata)(setq pt1 (getpoint))
(setq pt2 (getpoint pt1))
(setq ss (ssget "f" (list pt1 pt2)))
(setq int_list ())
(setq ssdata (ssnamex ss))
(foreach x ssdata
(foreach y
(cdddr x)
(setq int_list (cons (trans (cadr y) 0 1) int_list))
)
)
(setq p1 (polar (car int_list) (* 1.5 pi) 100))
(setq p2 (polar p1 0 100))
(entmake (list '(0 . "LINE")'(100 . "AcDbEntity") '(100 . "AcDbLine") (cons 10 p1) (cons 11 p2)))
)近期遇到一个头疼问题、就是用(setq ss (ssget "f" (list pt1 pt2)))配合ssnamex函数获取交点后、
再利用这个交点坐标偏移生成直线、最后用di去测量、会发现测量距离与偏移距离之间存在误差、
以上是程序代码、下方是操作演示:
这个误差范围很小、但是强迫症有点难受、
所以想请教下论坛的各位大神!
有没有办法提升ssnamex函数返回交点坐标的精度
gzcsun 发表于 2024-4-11 10:30
是要用vlax-curve-getClosestPointTo再处理。
别的直接用vla-intersectwith也没有误差。
好像是有人说ssn ...
主要是和块的交点难搞、用ssnamex不用管是不是块、可以直接搞出所有交点、然后排个序就行了、操作上简单很多、就是精度这块有点难受 kucha007 发表于 2024-4-11 13:13
看看这个:
【K:GetEntInters】计算直线和实体的交点
http://bbs.mjtd.com/forum.php?mod=viewthread&tid ...
我试了一下这个函数、貌似和图块相交还是有些问题、结果不准确、普通图元问题不大、也可能是我操作有问题 ssyfeng 发表于 2024-4-11 10:00
再用vlax-curve-getClosestPointTo函数求曲线最近点试试
用ssnamex主要是方便点、因为涉及到和块内图元的交点、曲线函数对块内图元不太灵 画一条直线,再和矩形求交点 ssnamex这个精度就这样 画线吧 再用vlax-curve-getClosestPointTo函数求曲线最近点试试 liuhe 发表于 2024-4-11 09:14
画一条直线,再和矩形求交点
我这个其实只是拿矩形讲一下ssnamex的精度问题、实际应用时不一定是矩形、还可能是图块啥的、用ssnamex直接点 飞雪神光 发表于 2024-4-11 09:45
ssnamex这个精度就这样 画线吧
谢谢!如果搞不了精度问题、那我只能放弃了、画线对于图块啥的不好搞 本帖最后由 gzcsun 于 2024-4-11 10:39 编辑
是要用vlax-curve-getClosestPointTo再处理。
别的直接用vla-intersectwith也没有误差。
好像是有人说ssnamexe慢的
看看这个:
【K:GetEntInters】计算直线和实体的交点
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=187621&fromuid=7329538
(出处: 明经CAD社区)
页:
[1]
2