singlegu 发表于 2006-5-22 10:56:00

关于创建面域的问题,进来看看吧,很简单的!!!

<P>各位大虾:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我想把圆创建成一个面域,可是有问题代码如下,希望能帮我看看哪里出了问题</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sub addRegion()</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Dim circle As AcadEntity<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Dim regionObj As Variant<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim point(0 To 2) As Double<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim radius As Double<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point(0) = 300<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point(1) = 300<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point(2) = 300<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; radius = 80<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set circle = ThisDrawing.ModelSpace.AddCircle(point, radius)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; regionObj = ThisDrawing.ModelSpace.AddRegion(circle)&nbsp;&nbsp; </P>
<P>&nbsp;&nbsp;&nbsp; End Sub</P>

bihumanbu 发表于 2006-5-22 11:22:00

<P>&nbsp; Sub addRegion()</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim eircle(0) As AutoCAD.AcadEntity<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim regionObj As Variant<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim point(0 To 2) As Double<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim radius As Double<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point(0) = 300<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point(1) = 300<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; point(2) = 300<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; radius = 80<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set eircle(0) = ThisDrawing.ModelSpace.AddCircle(point, radius)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; regionObj = ModelSpace.addRegion(eircle)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ZoomAll<BR>&nbsp;&nbsp;&nbsp; End Sub</P>
<P>circle为系统标识,你不能用;另外生成面域的曲线似乎要用数组</P>

xinghesnak 发表于 2006-5-22 11:22:00

<P>注意,增加区域的时候,添加的对象必须是一个对象数组,应该将circle定义成一个数组就行了。。。下面是改完的程序</P>
<P>Dim circle1(0) As AcadEntity<BR>Dim regionObj As Variant<BR>Dim point(0 To 2) As Double<BR>Dim radius As Double<BR>point(0) = 300<BR>point(1) = 300<BR>point(2) = 300<BR>radius = 80<BR>Set circle1(0) = ThisDrawing.ModelSpace.AddCircle(point, radius)<BR>regionObj = ThisDrawing.ModelSpace.AddRegion(circle1)</P>

xinghesnak 发表于 2006-5-22 11:25:00

呵呵!比楼上的晚了1秒啊。。。。。。^_^!真巧。。。。。

singlegu 发表于 2006-5-22 13:10:00

<P>呵呵,谢谢楼上两位的帮忙,还有一个问题,我想要生成圆环</P>
<P>步骤:1.先画两个同心圆,分别生成面域</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2.运用布尔差运算,外圆减去内圆,生成圆环.程序还是有问题</P>
<P>程序如下:</P>
<P>Dim circle1(0) As AcadEntity<BR>&nbsp;&nbsp; Dim circle2(0) As AcadEntity<BR>&nbsp;&nbsp; Dim regionObj1 As Variant<BR>&nbsp;&nbsp; Dim regionObj2 As Variant<BR>&nbsp;&nbsp; Dim point(0 To 2) As Double<BR>&nbsp;&nbsp; Dim radius1 As Double<BR>&nbsp;&nbsp; Dim radius2 As Double<BR>&nbsp;&nbsp; point(0) = 300<BR>&nbsp;&nbsp; point(1) = 300<BR>&nbsp;&nbsp; point(2) = 300<BR>&nbsp;&nbsp; radius1 = 80<BR>&nbsp;&nbsp; radius2 = 60<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; '创建面域<BR>&nbsp;&nbsp; Set circle1(0) = ThisDrawing.ModelSpace.AddCircle(point, radius1)<BR>&nbsp;&nbsp; Set circle2(0) = ThisDrawing.ModelSpace.AddCircle(point, radius2)<BR>&nbsp;&nbsp; regionObj1 = ThisDrawing.ModelSpace.AddRegion(circle1)<BR>&nbsp;&nbsp; regionObj2 = ThisDrawing.ModelSpace.AddRegion(circle2)<BR>&nbsp;&nbsp; <BR>&nbsp;&nbsp; '布尔运算<BR>&nbsp;&nbsp; regionObj1.Boolean acSubtraction, regionObj2</P>
<P>应该是最后一句有问题,可不知道怎么改</P>

xinghesnak 发表于 2006-5-22 14:42:00

<P>改成:</P>
<P>regionObj1(0).Boolean acSubtraction, regionObj2(0)</P>
<P>就行了!</P>

xujian8498 发表于 2006-6-9 16:25:00

面域生成后拉申为实体,实体转动后,面域不动,delete 也删除不了,请问如何去掉面域?

xinghesnak 发表于 2006-6-9 16:41:00

邪门,delete不了?

bjjob1 发表于 2013-5-19 12:14:45

autocad 真他妈邪门,我有两段代码,结构一模一样,一个布尔运算成功,另一个就是不成功,快他妈疯了,我查,这autodesk公司是越来越不行了!!!

bjjob1 发表于 2013-5-29 11:39:48

bihumanbu 发表于 2006-5-22 11:22 static/image/common/back.gif
&nbsp; Sub addRegion()
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim eircle(0) As AutoCAD.AcadEntity&nbsp;&nbsp ...

yes,I agree with you,必须得用数组才行
页: [1] 2
查看完整版本: 关于创建面域的问题,进来看看吧,很简单的!!!