明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1908|回复: 5

[求助]四边形或者六变形的面积式子

[复制链接]
发表于 2004-11-17 20:50:00 | 显示全部楼层 |阅读模式
On Error GoTo ErrHandle
Dim pnt
Dim picked As Boolean
Dim px() As Double
Dim py() As Double
Dim i, k As Integer
Dim pcenter() As Double
Dim insertdistance() As Double
Me.Hide
Do While 1
pnt = ThisDrawing.Utility.GetPoint
ThisDrawing.SendCommand "-boundary" & vbCr & "a" & vbCr & "b" & vbCr & "e" & vbCr & vbCr & pnt(0) & "," & pnt(1) & vbCr & vbCr
Set pr = ThisDrawing.ModelSpace(ThisDrawing.ModelSpace.Count - 1)
Dim retCoord As Variant
retCoord = pr.Coordinates
k = (UBound(retCoord) + 1) / 2 '记录新绘制pline顶点个数
MsgBox "这是一个" & k & "边形"
ReDim px(UBound(retCoord)) As Double
ReDim py(UBound(retCoord)) As Double
For i = 0 To UBound(retCoord) Step 2
px(i / 2) = retCoord(i)
py(i / 2) = retCoord(i + 1)
Next i
ReDim insertdistance(k) As Double
For i = 0 To k - 2 '用点选的方法获得点坐标,然后判断图形形状,计算形状面积,累加所有点选图形面积计算式。结果如图所示: A*B + C*D + E*F
insertdistance(i) = Sqr((px(i) - px(i + 1)) * (px(i) - px(i + 1)) + (py(i) - py(i + 1)) * (py(i) - py(i + 1)))
Next i '因为我只要求出四边形和六边形,并且还差一个判断,所有的角度是直角
If k = 4 Then
ssss = insertdistance(0) & "*" & insertdistance(1)
Else '还有一种情况是六边形
ssss = insertdistance(0) & "*" & insertdistance(1) & "+" & insertdistance(3) & "*" & insertdistance(4) '此处得到了是面积的式子,而且要求每次点击六边形或者四边行要把前面得到的式子再追加上来。……………………………………………………
End If
MsgBox ssss '这里其实应该显示的结果如图所示
picked = True
Loop
ErrHandle:
Me.Show

头疼的地方就在省略号的地方,我不知道如何将第一次选择图形所得到的公式继续追加起来,而且六边形的形状有四种,我的程序中只要考虑这四种情况,如何解决求面积公式,真是不知道如何是好,请多多指教,谢谢

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-11-17 20:55:00 | 显示全部楼层
前几天的贴子就有,是求多边形的
 楼主| 发表于 2004-11-17 23:27:00 | 显示全部楼层
本帖最后由 作者 于 2004-11-18 0:01:35 编辑

求多边形的公式的那个是用
< class=MsoNormal style="MARGIN: 0cm 0cm 0pt">Σ,数学方法求面积。。



< class=MsoNormal style="MARGIN: 0cm 0cm 0pt">现在问题是我想做到连续点击若干个长方形,或者是上面所示的六边形,输出的是公式,而不是最后面积的值



< class=MsoNormal style="MARGIN: 0cm 0cm 0pt">上面程序中我用ssss求出来的不是面积实数值,而是公式。


另外请问如何统计我开始点击了多少次。
发表于 2004-11-18 14:41:00 | 显示全部楼层
你要公式,他们贴的也是公式,不懂你的意思
 楼主| 发表于 2004-11-18 20:44:00 | 显示全部楼层
On Error GoTo ErrHandle
Dim pnt
Dim picked As Boolean
Dim px() As Double
Dim py() As Double
Dim i, k As Integer
Dim pcenter() As Double
Dim insertdistance() As Double
Me.Hide
Do While 1
pnt = ThisDrawing.Utility.GetPoint
ThisDrawing.SendCommand "-boundary" & vbCr & "a" & vbCr & "b" & vbCr & "e" & vbCr & vbCr & pnt(0) & "," & pnt(1) & vbCr & vbCr
Set pr = ThisDrawing.ModelSpace(ThisDrawing.ModelSpace.Count - 1)
Dim retCoord As Variant
retCoord = pr.Coordinates
k = (UBound(retCoord) + 1) / 2

ReDim px(UBound(retCoord)) As Double
ReDim py(UBound(retCoord)) As Double
For i = 0 To UBound(retCoord) Step 2
px(i / 2) = retCoord(i)
py(i / 2) = retCoord(i + 1)
Next i
ReDim insertdistance(k) As Double
For i = 0 To k - 2 '用点选的方法获得点坐标,然后判断图形形状,计算形状面积,累加所有点选图形面积计算式。结果如图所示: A*B + C*D + E*F
insertdistance(i) = Sqr((px(i) - px(i + 1)) * (px(i) - px(i + 1)) + (py(i) - py(i + 1)) * (py(i) - py(i + 1)))
ReDim pcenter(k) As Double
ReDim insertdistance(k) As Double
For i = 0 To k - 2 '此处要解决最后一个点和起始点的距离测定问题
pcenter(i) = (px(i) + px(i + 1)) / 2
pcenter(i + 1) = (py(i) + py(i + 1)) / 2 + 0.2
insertdistance(i) = Sqr((px(i) - px(i + 1)) * (px(i) - px(i + 1)) + (py(i) - py(i + 1)) * (py(i) - py(i + 1)))
ThisDrawing.ModelSpace.AddText insertdistance(i), pcenter, 0.65%%%%%%%%%%当此语句存在时,程序就会出错, Next i
If k = 4 Then '这是四边形的情况
ssss = insertdistance(0) & "*" & insertdistance(1)
Else '还有一种情况是六边形
ssss = insertdistance(0) & "*" & insertdistance(1) & "+" & insertdistance(3) & "*" & insertdistance(4) '此处得到了是面积的式子,而且要求每次点击六边形或者四边行要把前面得到的式子再追加上来。……………………………………………………
End If
MsgBox ssss '这里其实应该显示的结果如图所示
picked = True
Loop
ErrHandle:
Me.Show

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2012-5-9 03:35:26 | 显示全部楼层
这种滴论坛没一种一定是特高难度哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:28 , Processed in 0.173345 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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