永发信息网

VB连CAD创建面域后,VB对面域面积的查询

答案:2  悬赏:80  手机版
解决时间 2021-03-09 22:42
在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块变量未设置>
研究了一个星期,还是搞定不了,请高手赐教啊
谢谢
最佳答案
程序有问题。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了。
全部回答
这个单纯在cad里面是做不出来的 通过二次开发,编辑宏,这样才可以
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
为什么卡的要死,尤其是wifi,有没有解决办法
古惑仔中有一部一个人为了抢棺材拿刀单挑的叫
或是什么结构的字?
出生:1981 年 性别:男 巽宫:风火家人  
腾奥汽车修理部地址有知道的么?有点事想过去
是不是石家庄的汽车北站和长途汽车站都有车到
光大信用卡难办啊~
毕业论文绪论怎么写
设函数f(x)=ax³+bx²+cx在x=1
陕西省人才交流中心第一分部这个地址在什么地
福田欧豹4O4全液压转向转盘沉重如何判断故障
老式插座盒怎么换新式的
简算25×17×42=
FR-A740-18.5K-CHT变频器需外接制动电阻,是
以示惩罚是什么意思
推荐资讯
请高人看看八字 壬申 辛亥 丁未 辛亥 这何解
2015年武汉市职工医保报销方法是什么?有的人
冒险岛2便便棒只有骑士才能获得吗
特警力量大结局不完美,拆弹过程中陶静的任性
小瑜家披萨怎么去啊,有知道地址的么
香港天泽龙泰珠宝亚太控股有限公司地址在什么
甲数的2/7等于乙数的3/8,乙数是160
在△ABC中,∠A+∠C=2∠B(∠A<∠C),且㏒4sin
清远至肇庆有多少公里? 20分
怎么改hbc运营商专供 WiFi 密码
求承包运输合同
生活中你一定有这样的经验,用酵母发过的面粉
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?