我的目的是在两个面域产生的交集的重心画一个圆,代码如下:
Public Sub ss_region()
Dim ss As AcadSelectionSet, region As Variant, p(0 To 2)
Set ss = ThisDrawing.SelectionSets.Add("sss")
ss.SelectOnScreen
Dim ents(0 to 1) As AcadEntity
Dim i As Integer
For i = 0 To 1
Set ents(i) = ss.Item(i)
Next i
ss.Delete
region = ThisDrawing.ModelSpace.AddRegion(ents)
region("0").Boolean acIntersection, region("1")
If region("0").Area > 0 Then
MsgBox "非空交集"
‘MsgBox region("0").Centroid(0)
p(0) = region("0").Centroid(0)
p(1) = region("0").Centroid(1)
P(2) = 0
Call ThisDrawing.ModelSpace.AddCircle(p, 0.5)
region("0").Delete
Else
MsgBox "交集为空"
End If
End Sub
程序运行到判断交集是否为空都没问题,但是region("0").Centroid(0) 没有返回值。。导致圆也画不上。请高手看看问题出在哪儿了。
CAD VBA中Region.Centroid用法(求面域重心)
答案:1 悬赏:30 手机版
解决时间 2021-02-12 03:40
- 提问者网友:练爱
- 2021-02-11 20:36
最佳答案
- 五星知识达人网友:孤独入客枕
- 2021-02-11 21:35
在autolisp里面,如果产生了新图元,那么就需要重新提取图元,autolisp里面使用函数【entlast】来提取,如果要确认是不是有新图元产生,也可以使用【entnext】来判断。C#函数的话,是不是图元提取出现问题?
我在AutoCAD里面,一般用autolisp来写,其它的VLAX函数也可以使用,总之,那个函数方便就使用那个函数,你试试!
我在AutoCAD里面,一般用autolisp来写,其它的VLAX函数也可以使用,总之,那个函数方便就使用那个函数,你试试!
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯