明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3210|回复: 6

用IntersectWith命令判断是否相交

[复制链接]
发表于 2018-1-17 16:40:18 | 显示全部楼层 |阅读模式
在规定区域内随机生成多个正多边形时,利用VBA中的 IntersectWith命令,设置参数为 acExtendNone,即对不延伸的两对象判断是否相交,如果两个对象相交则返回重新生成多边形,若不相交,则继续生成,有没有大神做过类似的操作,求指教如何实现~~~
 楼主| 发表于 2018-1-17 16:44:27 | 显示全部楼层
这是随机生成多边形的源码
Sub polygon()
Dim myselect(1 To 90) As AcadEntity '定义选择集数组
Dim num As Integer
Dim pnt As Variant
Dim lpnt As Variant
num = 20 '正多边形边数
Dim fpnt(0 To 2) As Double '起点坐标
Dim leng As Double
Dim i As Long
For i = 1 To 90 '循环90次
fpnt(0) = 100 * Rnd: fpnt(1) = 100 * Rnd: fpnt(2) = 0 '起点随机坐标
leng = 3 * Rnd '边长随机长度
ReDim lpnt(0 To num * 2 - 1) As Double '下面是画正多边形
pnt = fpnt
lpnt(0) = pnt(0)
lpnt(1) = pnt(1)
Dim st As Integer
For st = 1 To num - 1
     pnt = ThisDrawing.Utility.PolarPoint(pnt, (3.14159265 * 2 / num) * (st - 1), leng)
     lpnt(st * 2) = pnt(0)
     lpnt(st * 2 + 1) = pnt(1)
Next st
Dim pgon As AcadLWPolyline
Set pgon = ThisDrawing.ModelSpace.AddLightWeightPolyline(lpnt)
pgon.Closed = True
Next i
ThisDrawing.Regen (True)
End Sub
发表于 2018-1-18 10:17:07 | 显示全部楼层
同求,支持楼主,顶一下
发表于 2018-1-18 19:50:44 | 显示全部楼层
思路你都说了,按思路写代码就行了,有什么问题吗?
 楼主| 发表于 2018-1-19 21:42:22 | 显示全部楼层
zzyong00 发表于 2018-1-18 19:50
思路你都说了,按思路写代码就行了,有什么问题吗?

(如果两个对象相交则返回重新生成多边形,若不相交,则继续生成),这个步骤没弄出来,而且怎么判断生成的多边形与周围所有相邻的多边形是否相交,有些语句不太会用,总是出错,麻烦您帮帮忙举个例子让晚辈模仿参考下,多谢了~~~·

点评

不知道你到底不会什么,你是不是就想让别人直接写好代码,你复制粘贴?  发表于 2018-1-20 15:29
 楼主| 发表于 2018-1-20 18:09:52 | 显示全部楼层
q123135abc 发表于 2018-1-19 21:42
(如果两个对象相交则返回重新生成多边形,若不相交,则继续生成),这个步骤没弄出来,而且怎么判断生成 ...

从来没用过这个IntersectWith命令,想找几个相似的例子学习一下,我要是想直接复制别人的代码,就去某宝上花钱找人代写了,没必要在这里发帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 00:22 , Processed in 0.166762 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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