明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2824|回复: 14

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

[复制链接]
发表于 2014-3-21 11:12:39 | 显示全部楼层 |阅读模式
如图,现有白色线多条(线或者多段线或者曲线),我希望画一条线(红色线所示)穿过白色线,同时自动在交点处生成一文字,内容为交点的y坐标 (如图黄色字所示)。
请问怎么达到?毫无头绪。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 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
);
发表于 2014-3-21 11:24:33 | 显示全部楼层
(inters L1 L2)自定义函数,求直线L1 L2的交点,pl线没求过!~~~
 楼主| 发表于 2014-3-21 11:31:20 | 显示全部楼层
自贡黄明儒 发表于 2014-3-21 11:15
(setq p11 (osnap pint "inter"))
参考http://bbs.xdcad.net/thread-672158-1-1.html

谢谢答复 :)
我这里希望做到的是不用去框选白色线而是画红色线穿过白色线的时候就自动生成
 楼主| 发表于 2014-3-21 11:32:11 | 显示全部楼层
77077 发表于 2014-3-21 11:24
(inters L1 L2)自定义函数,求直线L1 L2的交点,pl线没求过!~~~

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

点评

没有现成的,你可以根据其精神自己写  发表于 2014-3-21 11:43
发表于 2014-3-21 11:35:39 | 显示全部楼层
peraperson 发表于 2014-3-21 11:32
谢谢答复:)
inters 我知道,我这里希望做到的是不用去框选白色线而是画红色线穿过白色线的时候就自动生 ...

你可以搜索下论坛已有的代码
一条线打断多条线~~方法类似,稍微修改即可得到你想要的代码了.
 楼主| 发表于 2014-3-21 11:53:31 | 显示全部楼层
好的,谢谢黄兄和77077
发表于 2014-3-21 14:16:24 | 显示全部楼层



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

点评

我个人不喜欢你的回复,虽然你程序牛逼,但是必须额外下载你的工具箱才能使用,可是你的工具箱里又没有源代码  发表于 2014-3-21 17:42
发表于 2014-3-21 14:30:18 | 显示全部楼层
本帖最后由 菜卷鱼 于 2014-3-21 17:37 编辑

  1. (defun two_pt(xx)
  2. (setq eo(vlax-ename->vla-object xx))
  3. (setq p1 (vlax-get EO 'EndPoint))
  4. (setq p2 (vlax-get EO 'StartPoint))
  5. (setq pp (list p1 p2))
  6. )

  7. (defun c:vv( )
  8. (setq en(car (entsel )))

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

  13. (repeat(sslength ss)
  14. (setq it (inters px1 px2  (car(two_pt (ssname ss i)))(cadr (two_pt (ssname ss i)) )) )
  15. (if (/= it nil)
  16. (progn
  17. (setq str (apply 'strcat (mapcar 'strcat  (mapcar 'rtos it) (list "," "," ""))))
  18. (entmake (list '(0 . "text") (cons 1 str) (cons 10 it)(cons 40(*(getvar 'textsize)(getvar 'dimscale)) ) ))
  19. (setq j(1+ j))
  20. ))
  21. (setq i(1+ i))
  22. )
  23. (prin1)
  24. )

评分

参与人数 1明经币 +1 收起 理由
kwok + 1 很给力!简单明了一看就懂.

查看全部评分

发表于 2014-3-21 16:24:16 | 显示全部楼层
菜卷鱼 发表于 2014-3-21 14:30
还有点问题,自己去改

你的这个只能用于直线(二个点的多段线),用vla-IntersectWith就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-19 04:32 , Processed in 0.201485 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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