明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1543|回复: 5

有点难度???

[复制链接]
发表于 2004-3-28 21:18:00 | 显示全部楼层 |阅读模式
如何才能在下图中每一个交点上划出一标示的圆形符号,记住一个交点上只能存在一个标示的圆,不能出现一个交点上重复出现多个重叠的圆


注:图中的线皆为line


望各位能多出主意,不吝赐教,谢谢

本帖子中包含更多资源

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

x
发表于 2004-3-28 21:24:00 | 显示全部楼层
求出每两条线的实交点,然后剔除公共点,最后在每个点上画圆即可。
 楼主| 发表于 2004-3-29 08:40:00 | 显示全部楼层
莫名大哥的方法我也想到过,但是我实际操作的图,远远不止上图那么几个交点而已,而是有很多的交点(上千个),这样的话运算量与速度是个问题吧
发表于 2004-3-29 08:57:00 | 显示全部楼层
要试过才知道运算速度会怎么样。而且如果是一张图只用一次,速度慢点也可以接受。


要不就这样,找到交点后,用选择集过滤看是否有圆心是这个交点,半径相同的圆存在,不存在就画,存在就不画。
发表于 2004-3-29 09:09:00 | 显示全部楼层
(defun c:test(/ os pts i center)
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(princ "\n選手要處理的對象:")
(defun JIAODIAN ( ss / N1 SSL AOBJ1 AOBJ2 IPTS ); 算交點點
(vl-load-com)
(SETQ PTS NIL)
(setq N1 0 SSL (sslength SS))
(while (< N1 (1- SSL))
(setq AOBJ1 (ssname SS N1)
AOBJ1 (vlax-ename->vla-object AOBJ1) N2 (1+ N1))
(while (< N2 SSL)
(setq AOBJ2 (ssname SS N2)
AOBJ2 (vlax-ename->vla-object AOBJ2)
IPTS (vla-intersectwith AOBJ1 AOBJ2 0 )
IPTS (vlax-variant-value IPTS) )
(if (> (vlax-safearray-get-u-bound IPTS 1) 0)
(progn
(setq IPTS(vlax-safearray->list IPTS) )
(while (> (length IPTS) 0)
(setq PTS (cons (list (car IPTS)
(cadr IPTS)(caddr IPTS)) PTS )
IPTS (cdddr IPTS)))))
(setq N2 (1+ N2)))
(setq N1 (1+ N1)))
(princ))
(JIAODIAN (ssget))
(setq i 0)
(repeat (length pts)
(setq center (nth i pts))
(entmake (append
'((0 . "CIRCLE"))
'((100 . "AcDbEntity"))
'((100 . "AcDbCircle"))
'((8 . "0")) ; 在0層畫出
'((40 . 1)); 設定圓的半徑為1mm
(list (cons 10 center))))
(setq i (1+ i)))
(setq pts nil)
(setvar "osmode" os)
(princ "\n程序運行完成,歡迎使用.")
(princ))
 楼主| 发表于 2004-3-29 10:45:00 | 显示全部楼层
不错是一个变向的完成要求的好方法
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-28 08:50 , Processed in 0.170462 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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