|
发表于 2013-10-8 06:34:19
|
显示全部楼层
来自: 中国吉林长春
逆风的香 发表于 2013-10-7 14:58 static/image/common/back.gif
- L8 X5 d5 Q$ u$ u$ X# d6 b* [woaishuijia版主,您好!还有一个问题向您请教!发的源代码是计算竖向截面特性的源代码!如果我把截面旋转9 ...
1 M s1 I6 P0 D# d, O首先我认为没有必要.因为你已经把截面的X轴和Y轴惯性矩及上下左右四个方向的抵抗矩,面积矩都计算出来了,旋转90度只不过是计算结果互换一下而已.2 S, k) W' d( b) z1 J+ M0 Y1 B! j
如果一定要重新计算,当然是在CAD上把截面面域以其形心为基点旋转90度再计算最为简单.方法是在把面域以其形心为基点移动到坐标原点后,以坐标原点(即截面形心)为基点旋转- '将质心移到原点
T4 C: c5 k* i, ^: T! H5 F - MoveFrom(0) = Xc.Centroid(0): MoveFrom(1) = Xc.Centroid(1): MoveFrom(2) = 0
3 b1 y7 h: G% G& q0 Y$ W - MoveTo(0) = 0: MoveTo(1) = 0: MoveTo(2) = 0* y* }: v7 l1 P, W ^: W7 f2 }
- Xc.Move MoveFrom, MoveTo
2 R0 Y2 A F, t% y+ ^* g& ^ - Xc.Rotate MoveTo, SelDoc.Utility.AngleToReal(90, acDegrees)
( d/ {7 r* K: r$ `0 J3 \9 T: p - '算出外框最左下角及右上角
: x+ V8 F" m( b, h& l# v. E; A - Xc.GetBoundingBox MinPo, MaxPo
复制代码 Xc.Rotate MoveTo, SelDoc.Utility.AngleToReal(90, acDegrees) 这一行使用了CAD图元的 Rotate 方法,它有两个参数,第一个参数是基点,第二个参数是角度,单位是弧度.在这里又使用了CAD文档对象的 Utility 集合(可称为"实用工具集")中的 AngleToReal 方法,它的作用是把其它单位制的角度转换为弧度,它有两个参数,第一个是其它单位制的角度,第二个指出这个角度的单位(命名常量).9 _" D R0 J8 q% n0 t; c
其实使用 Utility.AngleToReal 只是为了程序的可读性,如果图代码简单,可以直接写成- Xc.Rotate MoveTo, 1.5707963267949
复制代码 另外,对你代码中有一点不理解- '取出各轴惯性矩' q( p0 b; Q. Y2 q+ j! A
- If Round(Abs(Xc.MomentOfInertia(1)), 0) = 1 Then
- u- Z; Y8 x+ c+ K2 D - Ix = Xc.MomentOfInertia(1)
0 t/ N/ y1 j- r6 K3 k l' C - Iy = Xc.MomentOfInertia(0)
* |2 t& z d) O- O, H - Else+ A% m/ o; ]9 e/ A, l
- Ix = Xc.MomentOfInertia(0): T5 n9 [ ~6 y3 P
- Iy = Xc.MomentOfInertia(1)/ K4 }! A: m3 ?
- End If
复制代码 为什么要在Y轴惯性矩在0.5到1.5之间时,把X轴和Y轴惯性矩互换过来使用,后面的力学计算不是就错了吗? |
|