明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: xingyun300

直线交点上画圆 高手指点

  [复制链接]
发表于 2011-11-20 03:42:37 | 显示全部楼层
为何仅仅是直线?

本帖子中包含更多资源

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

x
发表于 2011-11-20 08:13:12 | 显示全部楼层
把这句(setq ssint (ssget "f" (list pt10 pt11)))
改成(setq ssint (ssget "c"  pt10 pt11))
发表于 2011-11-20 08:13:45 | 显示全部楼层
本帖最后由 xianaihua 于 2011-11-20 08:20 编辑

给你一个所有交点上画圆的程序:
  1. ;所有交点上画圆
  2. (setq *ModelSpace*
  3.        (vla-get-ModelSpace
  4.    (vla-get-ActiveDocument
  5.      (vlax-get-acad-object)
  6.    ) ;_ 结束vla-get-ActiveDocument
  7.        ) ;_ end of vla-get-ModelSpace
  8. ) ;_ end of setq
  9. (defun c:test (/ ss)
  10.   (vl-load-com)
  11.   (if (setq ss (ssget))
  12.     (foreach x (IntersectionsinSet ss)
  13.       (vla-AddCircle *ModelSpace* (vlax-3d-point x) 10)
  14.     ) ;_ 结束foreach
  15.   ) ;_ 结束if
  16.   (princ)
  17. ) ;_ 结束defun
  18. (defun IntersectionsinSet (ss / a b i j l)
  19.   (setq i (sslength ss))
  20.   (while (not (minusp (setq j (1- i)
  21.           i (1- i)
  22.           ) ;_ 结束setq
  23.         ) ;_ 结束minusp
  24.    ) ;_ 结束not
  25.     (setq a (vlax-ename->vla-object (ssname ss i)))
  26.     (while (not (minusp (setq j (1- j))))
  27.       (setq b (vlax-ename->vla-object (ssname ss j))
  28.       l (cons (GroupByNum (vlax-invoke a 'IntersectWith b acExtendNone) 3)
  29.         l
  30.         ) ;_ 结束cons
  31.       ) ;_ 结束setq
  32.     ) ;_ 结束while
  33.   ) ;_ 结束while
  34.   (apply 'append l)
  35. ) ;_ 结束defun
  36. (defun GroupByNum (l n / r)
  37.   (if l
  38.     (cons
  39.       (reverse (repeat n
  40.      (setq r (cons (car l) r)
  41.            l (cdr l)
  42.      ) ;_ 结束setq
  43.      r
  44.          ) ;_ 结束repeat
  45.       ) ;_ 结束reverse
  46.       (GroupByNum l n)
  47.     ) ;_ 结束cons
  48.   ) ;_ 结束if
  49. ) ;_ 结束defun

你只需改动一下,只选直线
  1. (setq ss (ssget '((0 . "line"))))

发表于 2011-11-20 09:34:51 | 显示全部楼层
xianaihua 发表于 2011-11-20 08:13
给你一个所有交点上画圆的程序:

你只需改动一下,只选直线

intersectwith是有点问题的

本帖子中包含更多资源

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

x
发表于 2011-11-20 13:57:13 | 显示全部楼层
对于自身相交的多段线,最好将其打断,否则,自身相交的交点会忽略
 楼主| 发表于 2011-11-20 14:54:36 | 显示全部楼层
xianaihua 发表于 2011-11-20 08:13
给你一个所有交点上画圆的程序:

你只需改动一下,只选直线

还是你这个好,谢谢你呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-9 14:58 , Processed in 0.191959 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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