找回密码
 注册
Simdroid-非首页
查看: 89|回复: 2

[二次开发] sw二次开发中旋转运动实现问题

[复制链接]
发表于 2007-5-27 13:16:01 | 显示全部楼层 |阅读模式 来自 黑龙江大庆
在装配体环境下,只能获取Component的位置,可以通过setXform实现运动,
但是Component中又有很多body,我想对其中一个body实现旋转,可是body没有setXform这个属性
  请高手指点,拜托
  志同道和者,请加QQ 460431336
 楼主| 发表于 2007-5-29 15:54:54 | 显示全部楼层 来自 黑龙江大庆
Simdroid开发平台
新建一个装配体环境,在其中插入的是两个装配体
这是实现一个装配体旋转两周的VBA编程,问怎么修改可以实现这个装配体中一个小零件的旋转
transform只使用于component

Option Explicit
Const PI                As Double = 3.14159
Const RadPerDeg         As Double = PI / 180

Sub main()
    Dim swApp                   As SldWorks.SldWorks
    Dim swModel                 As SldWorks.ModelDoc2
    Dim swAssy                  As SldWorks.AssemblyDoc
    Dim swDragOp                As SldWorks.DragOperator
    Dim swSelMgr                As SldWorks.SelectionMgr
    Dim swComp                  As SldWorks.Component2
    Dim swXform                 As SldWorks.MathTransform
    Dim Arraydata               As Variant
    Dim swMathUtil              As SldWorks.MathUtility
    Dim i                       As Double
    Dim bRet                    As Boolean
   
    Dim a As Double
    Dim b As Double
    Dim c As Double
   
    Dim x As Double
    Dim y As Double
    Dim z As Double
    Dim s As Double
    Dim h As Double
    Dim e As Double
    Dim f As Double
         
    Dim aa As Double
    Dim bb As Double
    Dim cc As Double
    Dim dd As Double
    Dim gg As Double
    Dim ss As Double
    Dim hh As Double
    Dim ee As Double
    Dim ff As Double
    Dim xx As Double
    Dim yy As Double
    Dim zz As Double
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel
    Set swDragOp = swAssy.GetDragOperator
    Set swSelMgr = swModel.SelectionManager
    Set swComp = swSelMgr.GetSelectedObjectsComponent(1)
    swModel.ClearSelection2 (False)
    Set swMathUtil = swApp.GetMathUtility
   
    Set swXform = swComp.Transform2
    Arraydata = swXform.Arraydata
   
    aa = Arraydata(0)
    bb = Arraydata(1)
    cc = Arraydata(2)
    dd = Arraydata(3)
   
   
    ss = Arraydata(4)
    hh = Arraydata(5)
    ee = Arraydata(6)
    ff = Arraydata(7)
    gg = Arraydata(8)
    xx = Arraydata(9)
    yy = Arraydata(10)
    zz = Arraydata(11)
   
    i = 0
   
    Do
        s = Sin(-i * RadPerDeg)
        h = -Cos(i * RadPerDeg)
        e = Cos(i * RadPerDeg)
        f = Sin(-i * RadPerDeg)
        
        
        Arraydata(0) = s
        Arraydata(2) = h
        Arraydata(6) = e
        Arraydata(8) = f
        
         Set swXform = swMathUtil.CreateTransform(Arraydata)
        swComp.Transform2 = swXform
   
        swModel.GraphicsRedraw2
        
        i = i + 0.5
        
        DoEvents
    Loop Until i >= 720
      End Sub
回复 不支持

使用道具 举报

发表于 2007-6-9 04:32:27 | 显示全部楼层 来自 加拿大

same question

Up?!Up?!
回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-19 14:00 , Processed in 0.038886 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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