peraperson 发表于 2014-3-21 11:12:39

诚问如何自动获取交点坐标

如图,现有白色线多条(线或者多段线或者曲线),我希望画一条线(红色线所示)穿过白色线,同时自动在交点处生成一文字,内容为交点的y坐标 (如图黄色字所示)。
请问怎么达到?毫无头绪。。。

菜卷鱼 发表于 2014-3-21 14:30:18

本帖最后由 菜卷鱼 于 2014-3-21 17:37 编辑

(defun two_pt(xx)
(setq eo(vlax-ename->vla-object xx))
(setq p1 (vlax-get EO 'EndPoint))
(setq p2 (vlax-get EO 'StartPoint))
(setq pp (list p1 p2))
)

(defun c:vv( )
(setq en(car (entsel )))

(setq px1 (car (two_pt en))
      px2 (cadr(two_pt en)))
(setq ss(ssdel en(ssget "c" px1 px2 '((0 . "line")))))
(setq i 0)(setq j 0)

(repeat(sslength ss)
(setq it (inters px1 px2(car(two_pt (ssname ss i)))(cadr (two_pt (ssname ss i)) )) )
(if (/= it nil)
(progn
(setq str (apply 'strcat (mapcar 'strcat(mapcar 'rtos it) (list "," "," ""))))
(entmake (list '(0 . "text") (cons 1 str) (cons 10 it)(cons 40(*(getvar 'textsize)(getvar 'dimscale)) ) ))
(setq j(1+ j))
))
(setq i(1+ i))
)
(prin1)
)

自贡黄明儒 发表于 2014-3-21 11:15:17

本帖最后由 自贡黄明儒 于 2014-3-21 11:42 编辑

(setq p11 (osnap pint "inter"))
参考http://bbs.xdcad.net/thread-672158-1-1.html

(defun c:test ()
(vl-load-com)
(setq a (car (entsel "\nSelect First Object: ")))
(setq b (car (entsel "\nSelect Second Object: ")))
(setq pts (vla-IntersectWith
               (vlax-ename->vla-object a)
               (vlax-ename->vla-object b)
               acExtendnone
      ))
(setq ins (not (minusp (vlax-safearray-get-u-bound (vlax-variant-value pts) 1))))
(cond
    ((ins
       (setq plist (vlax-safearray->list (vlax-variant-value pts)))
       (repeat (/ (length plist) 3)
         (setq pl (cons (list (car plist)(cadr plist)(caddr plist)) pl)
            plist (cdddr plist))
       );r
    ))
);c
ins
);

77077 发表于 2014-3-21 11:24:33

(inters L1 L2)自定义函数,求直线L1 L2的交点,pl线没求过!~~~

peraperson 发表于 2014-3-21 11:31:20

自贡黄明儒 发表于 2014-3-21 11:15 static/image/common/back.gif
(setq p11 (osnap pint "inter"))
参考http://bbs.xdcad.net/thread-672158-1-1.html

谢谢答复 :)
我这里希望做到的是不用去框选白色线而是画红色线穿过白色线的时候就自动生成

peraperson 发表于 2014-3-21 11:32:11

77077 发表于 2014-3-21 11:24 static/image/common/back.gif
(inters L1 L2)自定义函数,求直线L1 L2的交点,pl线没求过!~~~

谢谢答复:)
inters 我知道,我这里希望做到的是不用去框选白色线而是画红色线穿过白色线的时候就自动生成

77077 发表于 2014-3-21 11:35:39

peraperson 发表于 2014-3-21 11:32 static/image/common/back.gif
谢谢答复:)
inters 我知道,我这里希望做到的是不用去框选白色线而是画红色线穿过白色线的时候就自动生 ...

你可以搜索下论坛已有的代码
一条线打断多条线~~方法类似,稍微修改即可得到你想要的代码了.

peraperson 发表于 2014-3-21 11:53:31

好的,谢谢黄兄和77077

xyp1964 发表于 2014-3-21 14:16:24




自贡黄明儒 发表于 2014-3-21 16:24:16

菜卷鱼 发表于 2014-3-21 14:30 static/image/common/back.gif
还有点问题,自己去改

你的这个只能用于直线(二个点的多段线),用vla-IntersectWith就可以了
页: [1] 2
查看完整版本: 诚问如何自动获取交点坐标