青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 1789|回复: 0

[疑难] vb.net调用ufun函数遇到的问题,求解!

[复制链接]
发表于 2010-9-26 11:37 | 显示全部楼层 |阅读模式
请看下面的子程序.. v( H! V/ ~' T, h! y& m: X9 z
目的是对全局变量arrCurves()内的曲线对象进行两次变换.8 j; w, P) N# ^. T! [' g: j4 T
然后,建立回转体.) T& ~- W$ r/ F/ y
6 y: g( t9 H7 m
问题是,建立第一次变换矩阵成功后(status1=0),不可建立第二次变换矩阵.
8 s0 H+ Q# D; m0 ^0 @, \6 u+ e  b否则就出错.奇怪?  D. H" x6 V( Z1 Q% M. A7 e
若将第二次变换代码删除,程序可顺利运行到下面的变换代码,但提示出错.
* I% T, d0 h9 e/ O+ D. N看一下ug界面内的运行结果.是变换成功的.那为何还要提示错误呢?# B' \2 ^/ r, {- u# v* {
建立回转体是不可能了.
  Z+ E, F: h1 i6 I9 V) F7 x+ @  ]
请高手指点,不甚感激!
+ [' I, G. `+ N: [; L6 J2 z7 A
8 a+ @3 }" Z+ I3 x- y7 yPrivate Sub CreateRevolveSolid(ByVal Ang As Double, ByVal sp As Point3d, ByVal ep As Point3d)
' ^: [1 _. J; o- Q. G        Dim objTags(100) As NXOpen.Tag- ^. @% b7 B% Q$ B$ Q
        Dim i As Integer) ~8 H7 a- @, H: E" W
        For i = 0 To arrCurves.Length - 1
, h: F- s/ C& P4 I2 x            objTags(i) = arrCurves(i).Tag
/ R' r: U7 B* p4 y; T        Next
3 D# f& ^* S2 V        Dim origin(2) As Double
4 a- z' ?+ D7 s  t: S4 Y) ]. K        Dim origin1(2) As Double  ~6 Q, L, C6 E$ u5 x3 B+ x
        Dim origin2(2) As Double
% |7 @0 [( f: n8 z        origin(0) = 0 : origin(1) = 0 : origin(2) = 0
9 }! D, \4 }* v8 I# N        origin1(0) = 0 : origin1(1) = 0 : origin1(2) = 0+ V, ], z" T3 M# ]
        origin2(0) = 0 : origin2(1) = 0 : origin2(2) = 0: }# s$ ?3 x" [
        Dim direction(2) As Double) Y9 i+ h2 D9 i. ?6 r+ s
        Dim direction1(2) As Double( P9 d1 O" d2 p5 O/ G' ^+ n
        Dim direction2(2) As Double* W5 f, I/ S1 ^2 J1 P
        Dim mat As Double5 r6 D* \0 M3 |$ _/ n* W
        Dim mat1 As Double8 S' V& L4 B/ E+ n4 n3 o+ O
        Dim mat2 As Double# x; t( H1 b/ c2 A0 Y' g& S
        Dim status As Integer4 g8 u( |) E- z" w# ?" Z" U1 T; ^
        Dim status1 As Integer7 t2 d3 w3 }  y: Q( I; z1 j; d
        Dim status2 As Integer
4 B) f* Y# p6 U2 x4 w$ n        Dim Features(100) As NXOpen.Tag
7 D( P) k1 m" D0 K        Dim copies(100) As NXOpen.Tag
* i& S5 m  V( O' f        Dim ang1 As Double = 907 ]' P4 O4 {/ @7 }+ Z
        Dim ang2 As Double = 90
+ P/ Y8 f5 Z( u5 k& [        direction1(0) = 1 : direction1(1) = 0 : direction1(2) = 0! R1 s; S, D& S4 O
        direction2(0) = 0 : direction2(1) = 0 : direction2(2) = 1$ O5 b- Q& p9 x( i; H! x" `
        '构建第一变换矩阵
9 [2 s9 n3 I3 d* j        MsgBox("Matrix1" & status1.ToString)
( N+ ]( Y+ U4 M        ufse.Trns.CreateRotationMatrix(origin1, direction1, ang1, mat1, status1)
2 H1 e- }$ H* x# s" E        MsgBox("Matrix1 status" & status1.ToString)' D3 _$ J, N8 w
        '构建第二变换矩阵8 A2 I" w7 Q  S
        ufse.Trns.CreateRotationMatrix(origin2, direction2, ang2, mat2, status2)
# i( Z. Q0 A/ ?        MsgBox("Matrix2 status" & status2.ToString)
- y/ j/ m' I  U/ y$ C( `  Z% V        
$ g8 R1 J. x  g/ s, G* _        'ufse.Trns.MultiplyMatrices(mat1, mat2, mat)6 ]/ Z/ C, H! k7 C
        '变换
; A4 J+ L. {* c9 k$ s        MsgBox("transform1")9 t# B: h. r* W8 @7 b2 O( B
        ufse.Trns.TransformObjects(mat1, objTags, arrCurves.Length, 2, 0, 2, copies, Nothing, status)
1 B. s; X: v3 I) i. \        MsgBox("transform1 ok")
( u" n; a: f, }4 }" V        Dim limit(1) As String
& V$ }  W, ^& W- I3 J        limit(0) = CStr(-Ang) : limit(1) = CStr(Ang)8 d8 q6 i4 f( m7 M9 ~
        Dim offset(1) As String7 O; K+ P; K- ]6 g/ {4 j: b
        offset(0) = "0.0" : offset(1) = "0.0"& |3 B# U# v- i$ C, |8 C  [
        '生成回转体
1 f% k$ H3 W+ A& e        Dim cou As Integer
# q& Y% K8 x8 F9 R+ m+ [& Y        MsgBox("revolution")
! R/ t9 ~, j0 G2 ?, q% B! m, K        direction(1) = 0 : direction(2) = 1 : direction(3) = 0# D3 o" w, c) Q; ~
        ufse.Modl.CreateRevolution(copies, arrCurves.Length, Nothing, limit, offset, origin, False, True, origin, direction, FeatureSigns.Nullsign, Features, cou): R+ y7 P8 n0 p. M8 N9 f
    End Sub
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2024-11-17 10:56 , Processed in 0.062245 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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