乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 77|回复: 5

有点难度???

[复制链接]

31

主题

129

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2004-3-28 21:18:00 | 显示全部楼层 |阅读模式
如何才能在下图中每一个交点上划出一标示的圆形符号,记住一个交点上只能存在一个标示的圆,不能出现一个交点上重复出现多个重叠的圆
注:图中的线皆为line
望各位能多出主意,不吝赐教,谢谢

3jsuagq4uek.jpg

3jsuagq4uek.jpg

回复

使用道具 举报

21

主题

166

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
250
发表于 2004-3-28 21:24:00 | 显示全部楼层
求出每两条线的实交点,然后剔除公共点,最后在每个点上画圆即可。
回复

使用道具 举报

31

主题

129

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2004-3-29 08:40:00 | 显示全部楼层
莫名大哥的方法我也想到过,但是我实际操作的图,远远不止上图那么几个交点而已,而是有很多的交点(上千个),这样的话运算量与速度是个问题吧
回复

使用道具 举报

26

主题

177

帖子

7

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
281
发表于 2004-3-29 08:57:00 | 显示全部楼层
要试过才知道运算速度会怎么样。而且如果是一张图只用一次,速度慢点也可以接受。
要不就这样,找到交点后,用选择集过滤看是否有圆心是这个交点,半径相同的圆存在,不存在就画,存在就不画。
回复

使用道具 举报

63

主题

1203

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1455
发表于 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 (vla-object AOBJ1) N2 (1+ N1))
                         (while (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))
回复

使用道具 举报

31

主题

129

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2004-3-29 10:45:00 | 显示全部楼层
不错是一个变向的完成要求的好方法
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-15 16:21 , Processed in 0.709215 second(s), 67 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表