在VB里面我用
Dim orthodromesplineObj(0 To 3) As AcadEntity
绘制了四条样条线,该四条曲线,只在端点有交点,形状相当于一个矩形,然后用
Dim regionObj As AcadRegion
Set regionObj = acadDoc.ModelSpace.AddRegion(orthodromesplineObj)
对四条样条线,创建了面域,
此时,在AUTOCAD里面,我可以查询到该面域的面积(用“list”命令)
但是,在VB里我用下面的命令,却查询不到该面域的面积,Debug.Print regionObj.Area
并且用了监视窗口,增加断点,得到的信息为:
regionObj.Area=<对象变量或with块变量未设置>
研究了一个星期,还是搞定不了,请高手赐教啊
谢谢
VB连CAD创建面域后,VB对面域面积的查询
答案:2 悬赏:80 手机版
解决时间 2021-03-09 22:42
- 提问者网友:遮云壑
- 2021-03-09 15:50
最佳答案
- 五星知识达人网友:酒安江南
- 2019-06-02 02:31
程序有问题。AddRegion返回的不是一个REGION对象,而是一个REGION对象的数组,因为可能会有多个闭环能生成多个REGION,数组当然没有AREA属性了。你把返回值赋值给REGION对象类型,没出错,这就是VBA的混蛋的地方,没有类型检查!应该把返回值赋值给VAR类型。记住这个VAR是个数组,可以调用它的UBOUND属性查询有多少个REGION,怎么查询它们的面积,这个就简单了!我把帮助中的例子修改了一下,增加了显示第一个REGION面积,调试通过了。
要仔细看帮助文件,在方法参考里有每个方法的详细说明,ADDREGION 方法的返回值类型是Variant,并且(This method outputs an array of the newly created Region objects). 说明返回的是一个REGION对象的数组。知道这个,就不难处理了。其实AUTOCAD用的熟练的话,也该知道选择几个对象不是只能生成一个REGION的,那ADDREGION怎么可能返回一个REGION对象呢?
Sub Example_AddRegion()
' This example creates a region from an arc and a line.
Dim curves(0 To 1) As AcadEntity
' Define the arc
Dim centerPoint(0 To 2) As Double
Dim radius As Double
Dim startAngle As Double
Dim endAngle As Double
centerPoint(0) = 5#: centerPoint(1) = 3#: centerPoint(2) = 0#
radius = 2#
startAngle = 0
endAngle = 3.141592
Set curves(0) = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngle, endAngle)
' Define the line
Set curves(1) = ThisDrawing.ModelSpace.AddLine(curves(0).startPoint, curves(0).endPoint)
' Create the region
Dim regionArray As Variant
regionArray = ThisDrawing.ModelSpace.AddRegion(curves)
Dim region As AcadRegion
Set region = regionArray(0)
MsgBox region.Area
ZoomAll
End Sub
VBA这玩意在autocad里不太好使,我用它写了一些机械制图辅助功能,插入图框、零件件号标注、明细表、粗糙度、圆中心线、视图符号等,现在准备转向AUTOLISP了。
要仔细看帮助文件,在方法参考里有每个方法的详细说明,ADDREGION 方法的返回值类型是Variant,并且(This method outputs an array of the newly created Region objects). 说明返回的是一个REGION对象的数组。知道这个,就不难处理了。其实AUTOCAD用的熟练的话,也该知道选择几个对象不是只能生成一个REGION的,那ADDREGION怎么可能返回一个REGION对象呢?
Sub Example_AddRegion()
' This example creates a region from an arc and a line.
Dim curves(0 To 1) As AcadEntity
' Define the arc
Dim centerPoint(0 To 2) As Double
Dim radius As Double
Dim startAngle As Double
Dim endAngle As Double
centerPoint(0) = 5#: centerPoint(1) = 3#: centerPoint(2) = 0#
radius = 2#
startAngle = 0
endAngle = 3.141592
Set curves(0) = ThisDrawing.ModelSpace.AddArc(centerPoint, radius, startAngle, endAngle)
' Define the line
Set curves(1) = ThisDrawing.ModelSpace.AddLine(curves(0).startPoint, curves(0).endPoint)
' Create the region
Dim regionArray As Variant
regionArray = ThisDrawing.ModelSpace.AddRegion(curves)
Dim region As AcadRegion
Set region = regionArray(0)
MsgBox region.Area
ZoomAll
End Sub
VBA这玩意在autocad里不太好使,我用它写了一些机械制图辅助功能,插入图框、零件件号标注、明细表、粗糙度、圆中心线、视图符号等,现在准备转向AUTOLISP了。
全部回答
- 1楼网友:十年萤火照君眠
- 2021-02-15 18:17
这个单纯在cad里面是做不出来的 通过二次开发,编辑宏,这样才可以
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯