SolidWorks机械工程师网——最大的SolidWorks学习平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1018|回复: 7
打印 上一主题 下一主题

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

[复制链接]

84

主题

310

帖子

260

金币

堂主

Rank: 4

积分
870
跳转到指定楼层
楼主
发表于 2007-5-27 18:27:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

   经典图书
装配体环境下,只能获取Component的位置,可以通过setXform实现运动,
但是Component中又有很多body,我想对其中一个body实现旋转,可是body没有setXform这个方法
就是想在已经建好模的装备体中选一个零件,然后通过编程使他旋转起来
请高手指点,拜托
志同道和者,请加QQ 460431336
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享教程|习题|模型|技巧 点赞点赞4072 拍砖拍砖3349
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复

使用道具 举报

11

主题

243

帖子

29

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
288
QQ
沙发
发表于 2007-5-27 18:27:45 | 只看该作者
零件里插入一个移动实体特征,就可以移动单个实体了
SolidWorks机械工程师网
提示:建议使用谷歌浏览器浏览本网站!如单击这里下载!否则,可能无法下载附件文件!(支持大多数版本的谷歌浏览器,支持360和QQ浏览器的极速模式,即谷歌内核模式,使用IE和Edge浏览器,浏览个别网页以及下载文件时,会误报“***不安全”,此时需要单击“继续访问此不安全站点(不推荐)”才可以继续下载,另外,本网站不含任何不安全的文件,已联系微软公司解决,纯属IE和Edge浏览器误报)
回复 支持 反对

使用道具 举报

6

主题

220

帖子

12

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
233
板凳
发表于 2007-5-27 18:30:16 | 只看该作者

   经典图书
谢谢,可是这要在零件设计时就要做的吧
我的目的是要在随意的装配体
实现其中零件的旋转运动
还有能用编程的方法吗
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

240

帖子

27

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
287
QQ
地板
发表于 2007-5-27 18:34:52 | 只看该作者
能。你查看想关的函数。用VBA就能实现的。
SW二次开发的功能还是挺强的,
如果你对SW二次开发刚入门的话。建议你
在补习一个月的SW函数看相关的例子然后再编写你的程序。
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

232

帖子

33

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
290
QQ
5#
发表于 2007-5-27 18:36:50 | 只看该作者

   经典案例图书
我看了
就只找到了component的setXform方法
如果你知道一些,请帮助一下
用什么函数可以实现
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

10

主题

232

帖子

27

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
262
QQ
6#
发表于 2007-5-27 18:46:30 | 只看该作者
新建一个装配体环境,在其中插入的是两个装配体
这是实现一个装配体旋转两周的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
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

8

主题

232

帖子

22

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
271
QQ
7#
发表于 2007-5-27 18:53:26 | 只看该作者

   经典案例图书
Set swDragOp = swAssy.GetDragOperator
改成  Set swDragOp = swModel .GetDragOperator
看看结果
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

15

主题

220

帖子

41

金币

侠客

Rank: 3Rank: 3Rank: 3

积分
270
QQ
8#
发表于 2007-5-27 18:54:43 | 只看该作者
不行
改了就出错了,swModel没有GetDragOperator方法
SolidWorks机械工程师网
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭 卷起
关闭 卷起

SOLIDWORKS 2023 机械设计从入门到精通

手机版|小黑屋| GMT+8, 2024-9-23 02:35 , Processed in 0.200241 second(s), 28 queries , Memcache On.

SolidWorks机械工程师网 ( 鲁ICP备14025122号-2 ) 鲁公网安备 37028502190335号

声明:本网言论纯属发表者个人意见,与本网立场无关。
如涉版权,可发邮件: admin@swbbsc.com

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