软件简介: 桥梁专业出预应力钢束图比较麻烦,所以自己编了一个可以快速编辑出图的程序,比较方便。有以下主要功能: 附件名:200610281161965698670.rar 文件大小:4142K (升级VIP 如何赚取土木币)
软件简介:
桥梁专业出预应力钢束图比较麻烦,所以自己编了一个可以快速编辑出图的程序,比较方便。有以下主要功能:
附件名:200610281161965698670.rar
文件大小:4142K
(升级VIP 如何赚取土木币)
12楼
过几天推出更多功能的版本,希望大家提意见,谢谢支持!
回复
13楼
好
楼主也可以顺带把延伸量计算添加进程序不就非常完美了
回复
14楼
嗯,下次考虑加上,不过一般在桥梁博士和midas里面都有计算结果了
回复
15楼
11-26更新:
1.加入DXF文件格式保存功能;
2.加入注册功能,此次更新后的功能都要注册才能使用,免费注册;
3.修复钢束坐标表分页最后一行不均的问题;
4.将钢束大样图、钢束坐标表以及钢束工程数量表分开出图,避免重复;
5.横断面出图功能激活;
6.修正钢束工程数量表长度错误;
请去zyqcsu.ys168.com下载
回复
16楼
目前的注册模式是免费注册,不过有大约1年的时间限制,就是说大约1年后就失效
鼓励提供建议和错误的用户,提供3个有效建议或者10个有效BUG的话会转换为正式用户,以后都没有限制;
所谓有效建议是指:不难实现的、对出图很有帮助的的建议;
所谓有效BUG是指:不是由于用户错误操作产生的BUG,提供BUG的同时要提供发生错误时所使用项目下的所有文件,以及错误发生前的操作和屏幕截图;
还有一种是操作BUG:产生BUG,不是程序本身产生的,但确实是由于程序编写时考虑的因素太少,而导致一般用户都会犯的错误,此也算有效BUG;
建议和BUG之间可以换算。
所提BUG或者建议只有第一个提出的才有效,以后会在程序里面列出来;
回复
17楼
11-30更新:
1.增加钢束平、竖交叉生成钢束功能,此功能将选定的钢束中每根钢束竖弯都与另外几根钢束的平弯组成一根新的钢束;
2.增加钢束节点平移功能
3.增加自定义高程表输出功能,需要纵断面、地面线文件,纵断面支持*.ZDM,*.SQX文件;不过目前只能输出路线上的高程;
4.修正新建文件时取消操作引发的错误,感谢杨江国提供BUG;
5.另外修正了一些BUG;
6.增加视频演示:一个拱桥钢束输出;
安装程序及视频教程见zyqcsu.ys178.com
回复
18楼
12-21(V1.08)
1.MCT输出时如果单元定义中含有X<0的单元(只是在生成模型时显示)时引发错误(感谢wengmyze提供BUG);
2.桥梁博士数据导入增加快速选择按钮(感谢杨江国提供建议);
12-20(V1.07)
1.平面编辑窗口删除数据引发的错误;
2.注册许可BUG;
3.导入文件时取消引发的错误;
以上感谢杨江国提供BUG;
希望大家以后多多提意见,更新文件请去zyqcsu.ys168.com下载
回复
19楼
伸长量计算源代码,用户可以由此判断计算的准确性:
Public Sub JsSCL()
’On Error GoTo JsSCLErr
Dim Pttt(1 To 11) As ZPoint
Dim L11 As Double, L22 As Double, L33 As Double, Xjd As Double, L44 As Double
FDCount = 0
scljstype=0
If SCLJSType = 1 Then
’只计算竖弯
If MvarGCount = 2 Then
FDCount = 1
ReDim Preserve FDDat(1 To FDCount) As 分段数据
FDDat(1).半径 = 0
FDDat(1).长度 = GetDistance(Xdat(1), Xdat(2))
FDDat(1).起点X = Xdat(1).X
ElseIf MvarGCount > 2 Then
For I = 2 To MvarGCount - 1
If XBDS(I - 1) = "" Then
FDCount = FDCount + 2
ReDim Preserve FDDat(1 To FDCount) As 分段数据
FDDat(FDCount - 1).半径 = 0
FDDat(FDCount - 1).长度 = GetDistance(PEnd(I - 1), PStart(I)) / 单位
FDDat(FDCount - 1).起点X = PEnd(I - 1).X / 单位
FDDat(FDCount).半径 = XR(I) / 单位
FDDat(FDCount).长度 = ZJ(I) * XR(I) / 单位
FDDat(FDCount).起点X = PStart(I).X / 单位
Else
FDCount = FDCount + 6
ReDim Preserve FDDat(1 To FDCount) As 分段数据
L44 = Abs(PStart(I).X - PEnd(I - 1).X) / 10
For J = 1 To 11
Set Pttt(J) = New ZPoint
Pttt(J).X = PEnd(I - 1).X + (J - 1) * L44
Pttt(J).Y = GetYByX(Pttt(J).X)
Next J
For J = 1 To 5
L11 = GetDistance(Pttt((J * 2 - 1)), Pttt(J * 2))
L22 = GetDistance(Pttt(J * 2), Pttt(J * 2 + 1))
Xjd = GetAngle3Point(Pttt(J * 2), Pttt(J * 2 - 1), Pttt(J * 2 + 1))
If Xjd < 0 Then Xjd = Xjd + 3.14159265 * 2
If Xjd > 3.14159265 Then Xjd = 3.14159265 * 2 - Xjd
L33 = GetDistance(Pttt(J * 2 - 1), Pttt(J * 2 + 1))
If Abs(Xjd - 3.14159265) < 0.001 Then
FDDat(FDCount - (6 - J)).半径 = 0
FDDat(FDCount - (6 - J)).起点X = Pttt(J * 2 - 1).X / 单位
FDDat(FDCount - (6 - J)).长度 = L33 / 单位
Else
Xjd = Pi * 2 - Xjd * 2
FDDat(FDCount - (6 - J)).半径 = L33 / 2 / Sin(Xjd / 2) / 单位
FDDat(FDCount - (6 - J)).起点X = Pttt(J * 2 - 1).X / 单位
FDDat(FDCount - (6 - J)).长度 = FDDat(FDCount - (6 - J)).半径 * Xjd
End If
Next J
FDDat(FDCount).半径 = XR(I) / 单位
FDDat(FDCount).长度 = ZJ(I) * XR(I) / 单位
FDDat(FDCount).起点X = PStart(I).X / 单位
End If
Next I
End If
ElseIf SCLJSType = 0 Then
’空间
If (XPoint3DCount - 1) Mod 2 = 1 Then ’奇数个
FDCount = (XPoint3DCount - 1) \ 2 + 1
ReDim Preserve FDDat(1 To FDCount) As 分段数据
For I = 1 To XPoint3DCount - 2 Step 2
L11 = GetDistance(XPoint3D(I), XPoint3D(I + 1))
L22 = GetDistance(XPoint3D(I + 1), XPoint3D(I + 2))
Xjd = GetAngle3Point(XPoint3D(I + 1), XPoint3D(I), XPoint3D(I + 2))
If Xjd < 0 Then Xjd = Xjd + 3.14159265 * 2
If Xjd > 3.14159265 Then Xjd = 3.14159265 * 2 - Xjd
L33 = GetDistance(XPoint3D(I), XPoint3D(I + 2))
If Abs(Xjd - 3.14159265) < 0.001 Then
FDDat((I + 1) / 2).半径 = 0
FDDat((I + 1) / 2).起点X = XPoint3D(I).X / 单位
FDDat((I + 1) / 2).长度 = L33 / 单位
Else
Xjd = Pi * 2 - Xjd * 2
FDDat((I + 1) / 2).半径 = L33 / 2 / Sin(Xjd / 2) / 单位
FDDat((I + 1) / 2).起点X = XPoint3D(I).X / 单位
FDDat((I + 1) / 2).长度 = FDDat((I + 1) / 2).半径 * Xjd
End If
Next I
FDDat(FDCount).半径 = 0
FDDat((I + 1) / 2).起点X = XPoint3D(XPoint3DCount - 1).X / 单位
FDDat(FDCount).长度 = GetDistance(XPoint3D(XPoint3DCount - 1), XPoint3D(XPoint3DCount)) / 单位
Else ’偶数个
FDCount = (XPoint3DCount - 1) \ 2
ReDim Preserve FDDat(1 To FDCount) As 分段数据
For I = 1 To XPoint3DCount - 1 Step 2
L11 = GetDistance(XPoint3D(I), XPoint3D(I + 1))
L22 = GetDistance(XPoint3D(I + 1), XPoint3D(I + 2))
Xjd = GetAngle3Point(XPoint3D(I + 1), XPoint3D(I), XPoint3D(I + 2))
If Xjd < 0 Then Xjd = Xjd + 3.14159265 * 2
If Xjd > 3.14159265 Then Xjd = 3.14159265 * 2 - Xjd
L33 = GetDistance(XPoint3D(I), XPoint3D(I + 2))
If Abs(Xjd - 3.14159265) < 0.001 Then
FDDat((I + 1) / 2).半径 = 0
FDDat((I + 1) / 2).起点X = XPoint3D(I).X / 单位
FDDat((I + 1) / 2).长度 = L33 / 单位
Else
Xjd = Pi * 2 - Xjd * 2
FDDat((I + 1) / 2).半径 = L33 / 2 / Sin(Xjd / 2) / 单位
FDDat((I + 1) / 2).起点X = XPoint3D(I).X / 单位
FDDat((I + 1) / 2).长度 = FDDat((I + 1) / 2).半径 * Xjd
End If
Next I
End If
End If
ReDim Preserve FDJG(1 To FDCount) As 伸长量结果
If GS张拉方式 = 0 Then ’两端张拉
两端张拉 FDDat, FDJG, FDCount
Else
回复
20楼
一端张拉 FDDat, FDJG, FDCount
End If
If GS张拉方式 = 0 Then
左伸长量 = 0
右伸长量 = 0
For I = 1 To FDCount
左伸长量 = 左伸长量 + FDJG(I).伸长量
右伸长量 = 右伸长量 + FDJG(I).伸长量Y
Next I
ElseIf GS张拉方式 = 1 Then ’左
左伸长量 = 0
右伸长量 = 0
For I = 1 To FDCount
左伸长量 = 左伸长量 + FDJG(I).伸长量
Next I
Else
左伸长量 = 0
右伸长量 = 0
For I = 1 To FDCount
右伸长量 = 右伸长量 + FDJG(I).伸长量
Next I
End If
AddInfo "计算伸长量,钢束:" & Mvar编号 & ",左:" & Ccstr(左伸长量, 0, 4) & ",右:" & Ccstr(右伸长量, 0, 4)
Exit Sub
JsSCLErr:
AddInfo "计算伸长量错误,在钢束:" & Mvar编号 & ",错误描叙:" & Err.Descri ption
Err.Clear
End Sub
Private Sub 一端张拉(ByRef FDB() As 分段数据, ByRef JG() As 伸长量结果, ByVal FDS As Long, Optional FX As Long = 1)
Dim EE As Double, Pp As Double, I As Long, AAg As Double
’ On Error Resume Next
AAg = GSMD / 1.101 * Ap
Pp = 超张拉 * AAg * 张拉应力 * 1000000
If FX = 1 Then
For I = 1 To FDS
JG(I).起点力 = Pp
If FDB(I).半径 > 0 Then
EE = 偏差系数 * FDB(I).长度 + 磨阻系数 * FDB(I).长度 / FDB(I).半径
JG(I).终点力 = Pp * 1 / Exp(EE)
Pp = JG(I).终点力
JG(I).伸长量 = JG(I).起点力 * (1 - 1 / Exp(EE)) / EE * FDB(I).长度 / AAg / Ep / 1000000
Else
EE = 0 ’偏差系数 * FDB(I).长度
JG(I).终点力 = Pp ’* 1 / Exp(EE)
Pp = JG(I).终点力
JG(I).伸长量 = JG(I).起点力 * FDB(I).长度 / AAg / Ep / 1000000
End If
Next I
Else
For I = FDS To 1 Step -1
JG(I).起点力 = Pp
If FDB(I).半径 > 0 Then
EE = 偏差系数 * FDB(I).长度 + 磨阻系数 * FDB(I).长度 / FDB(I).半径
JG(I).终点力 = Pp * 1 / Exp(EE)
Pp = JG(I).终点力
JG(I).伸长量 = JG(I).起点力 * (1 - 1 / Exp(EE)) / EE * FDB(I).长度 / AAg / Ep / 1000000
Else
EE = 0 ’ 偏差系数 * FDB(I).长度
JG(I).终点力 = Pp ’* 1 / Exp(EE)
Pp = JG(I).终点力
JG(I).伸长量 = JG(I).起点力 * FDB(I).长度 / AAg / Ep / 1000000
End If
Next I
End If
End Sub
Private Sub 两端张拉(ByRef FDB() As 分段数据, ByRef JG() As 伸长量结果, ByVal FDS As Long)
’On Error Resume Next
Dim XX As Double
Dim JG1() As 伸长量结果
Dim Dx As Double, Dx2 As Double
Dim JG2() As 伸长量结果
ReDim JG1(1 To FDS) As 伸长量结果
ReDim JG2(1 To FDS) As 伸长量结果
一端张拉 FDB, JG1, FDS
一端张拉 FDB, JG2, FDS, -1
Dx = 9999999
I = 1
Do Until Abs(JG1(I).起点力) > Abs(JG2(I).终点力) And Abs(JG1(I).终点力) < Abs(JG2(I).起点力)
Dx = Abs(JG1(I).起点力 - JG2(I).终点力)
I = I + 1
If I = FDS + 1 Then Exit Do
Loop
If I <= FDS Then
Dx2 = Abs(JG1(I - 1).终点力 - JG2(I - 1).起点力)
平衡点 = Abs(Dx2 / (Dx + Dx2) * (FDB(I).起点X - FDB(I - 1).起点X)) + FDB(I - 1).起点X
JG(I - 1).伸长量 = Abs(Dx2 / (Dx + Dx2)) * (JG1(I - 1).伸长量 + JG2(I - 1).伸长量) / 2
JG(I - 1).伸长量Y = Abs(Dx / (Dx + Dx2)) * (JG1(I - 1).伸长量 + JG2(I - 1).伸长量) / 2
For J = 1 To I - 2
JG(J).起点力 = JG1(J).起点力
JG(J).伸长量 = JG1(J).伸长量
JG(J).伸长量Y = 0
JG(J).终点力 = JG1(J).终点力
Next J
For J = I To FDS
JG(J).起点力 = JG2(J).起点力
JG(J).伸长量 = 0
JG(J).伸长量Y = JG2(J).伸长量
JG(J).终点力 = JG2(J).终点力
Next J
End If
End Sub
回复
21楼
最近更新到V1.12,估计以后没有时间增加新功能了!
回复