明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2876|回复: 10

求助坝体稳定性分析

[复制链接]
发表于 2006-4-4 11:39:00 | 显示全部楼层 |阅读模式

各位高手好,我是一个刚学VBA的菜鸟,现在老师让我做坝体的稳定性分析,是在坝体上任选一点,然后在等高线上每隔一定角度值批量画垂直线,然后比较每条线的长度,求出最短的那条,然后在AutoCAD上面标注长度,并显示该直线,我做的VBA界面如下,请哪位高手给指点一下代码如何编写,

本帖子中包含更多资源

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

x
发表于 2006-4-4 17:16:00 | 显示全部楼层
坝体的图样提供一张吧,把过程说清楚一点
 楼主| 发表于 2006-4-5 08:03:00 | 显示全部楼层

谢谢啊,高手就是很负责任的,感激中,坝体图像如下

《浆砌石拱坝设计规范》规定,拱座的抗滑稳定安全系数的计算公式采用下式:

K=(Nּf+Cּl)/Q

N=HAcosθ-VAsinθ

Q= HAsinθ+VAcosθ

式中:K为抗滑稳定安全系数;采用安全系数的控制指标为基本荷载组合 K≥3.0;N为垂直于滑动方向的法向力;Q为沿滑动方向的滑动力;l为滑裂面的抗剪长度;f为抗剪断摩擦系数;C为抗剪断凝聚力;HA为拱座处轴力;VA为拱座处剪力;θ为滑裂面与拱座径向面的夹角。取单位拱高对不同高程的两岸拱端分别假定不同的θ角进行坝肩稳定计算

[I]我做的东西就是每隔不同的夹角θ从坝体某一点向等高线引垂直线,即抗剪长度,批量画线,然后比较长度,得出最小长度,并标注,然后在CAD中显示最优直线,其他直线擦除,[/I]

本帖子中包含更多资源

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

x
 楼主| 发表于 2006-4-5 08:06:00 | 显示全部楼层

主要的研究内容是:对于坝址区地质情况复杂,地形条件苛刻,特别是两岸坝肩岩体存在断层、裂隙、节理、软弱夹层,当坝肩承受拱座传来的推力后,两岸坝肩具有抗滑稳定问题。取单位拱高对不同高程的两岸拱端分别假定不同的滑裂面与拱座径向面的夹角,然后通过CAD系统自动在地形图上量得滑裂面的抗剪长度自动进行坝肩稳定计算

研究与设计方法是:

1. 利用VBA计算机语言设计界面;

2. 通过CAD系统自动在地形图上量得滑裂面的抗剪长度进行

3. 利用拱座的抗滑稳定安全系数的计算公式计算抗滑稳定安全系数

4. 编程计算找出不同的滑裂面与拱座径向面的夹角对应的最小抗滑稳定安全系数,即为抗滑稳定安全系数。

 楼主| 发表于 2006-4-5 08:07:00 | 显示全部楼层

 

[glow=255,red,2]再次感激版主的不辞劳苦啊,为人民服务![/glow]
发表于 2006-4-5 19:20:00 | 显示全部楼层

专业术语太多了......

贴图说明一下

另外,看看置顶的Vlax类

 楼主| 发表于 2006-4-6 10:24:00 | 显示全部楼层

哦,谢谢回复啊,

VLAX 类不是很懂,

其实专业术语我也不是很懂,这是我老师布置给我的毕业论文,我现在选点已经做完了,就是想问一下从VBA里面如何使用命令装载一个DWG图片到CAD界面里,再者就是在CAD社区里找到了从一点到任一曲线的最小距离,不知道怎么调用,还有就是想用VBA命令选择对象--一个等高线,即曲线,然后求点到曲线的最小距离,并画出这条直线,

唉,刚学CAD的VBA,不是很懂,新学的,至于我做的那个界面,就不看了,我又做了一个新的,简单的,楼主看一下,谢谢啊,

   按照上面的做一下就行了,应该是很简单的,但是我编程不好,头一次接触这个东西,感到很郁闷,谢谢版主了,

本帖子中包含更多资源

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

x
 楼主| 发表于 2006-4-6 10:29:00 | 显示全部楼层

[语法]
                  GetCurvePointAtDist(curve, dist)
                  [说明]
                  返回曲线上距曲线起点的指定距离的点
                  [函数内容]
                  Public Function GetCurvePointAtDist(curve As AcadEntity, dist
                  As Double) As Variant

                      Dim objVLAX As VLAX, retval(2) As Double
                      Dim tmp, i As Integer
                     
                      Set objVLAX = New VLAX
                     
                      objVLAX.EvalLispExpression "(setq curve
                  (vlax-ename->vla-object (handent " & Chr(34) & _
                                                 curve.Handle & Chr(34) & ")))"
                      objVLAX.SetLispSymbol "dist", dist
                      tmp = objVLAX.EvalLispExpression("(null (setq pt
                  (vlax-curve-getPointAtDist curve dist)))")
                      If IsEmpty(tmp) Then
                          tmp = objVLAX.GetLispList("pt")
                          For i = 0 To 2
                              retval(i) = tmp(i)
                          Next
                      End If
                      objVLAX.NullifySymbol "curve", "dist", "pt"
                      GetCurvePointAtDist = retval

                  End Function
                  [参数]
                  一个曲线图元和一个代表测量距离的双精度数。
                  [注意]
                  如果未找到点,则返回的值为空(Empty)。

 

这是我在网上找到的一个程序,把曲线起点改成任意一点应该可以了吧,版主帮忙看一下,谢谢

 楼主| 发表于 2006-4-6 10:34:00 | 显示全部楼层

上图中的DWG图中两边的曲线代表等高线,中间扇形的东西就是坝体了,选坝体上一点然后到曲线的距离最短的直线求出来,

唉,就是不会做,辛苦版主了,

本帖子中包含更多资源

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

x
发表于 2006-4-6 20:02:00 | 显示全部楼层

Vlax类里有一个曲线类

调用该类的GetClosestPointTo方法可以获取点到曲线的最短距离

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 04:25 , Processed in 0.165384 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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