QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 6928|回复: 25
收起左侧

[求助] 跟随 重心 移动 的 草图

[复制链接]
发表于 2009-6-11 20:16:25 | 显示全部楼层 |阅读模式 来自: 中国河北唐山

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
  1. 一个可以运动的部件) \! N( q3 _8 o8 `2 o

1 q- K9 G( t+ H: h  2. 画一个3D草图点,点与该部件重心重合
+ @6 Z% Y2 J6 T2 Z$ a- V1 M9 z$ ^. O* v( v( d3 t$ C
  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。
4 T" F# P+ ^; Y- w' Z2 N! U7 X7 `5 w: e5 r# o, \& h7 }% v
    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.
) F& @- l3 }0 t$ U  r8 L' [6 {
1 f" F6 b/ _/ q) w8 h& g* w2 e缺乏讨论的声音啊!!
" i( r  r5 |* R+ ~
2 Q9 d( w! m2 R. ^  y. ^3 N不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?: j. h- v' e9 {4 y
如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:7 j9 n% Z6 X9 ^: ?1 w: j1 [% d
GetMassProperties / ?1 Y, w/ r+ u# ?
可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。
" H' B% u% z! ^; L8 cGetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:
! P/ z  ^* H, n7 C3 e$ Wzhongxin = Part.GetMassProperties
- @9 s1 W7 n! i# l. O" O: c% A    Part.Insert3DSketch- A6 i& d- M+ Y0 `1 @# V
    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2)% G5 d0 z# T( p7 ?, v
      
; X9 K4 k# A9 Q4 D+ h    Part.Insert3DSketch2 True    # P& {! V8 \1 L5 F0 o; J/ _% d

( O0 G8 M4 B/ f6 X. C1 n    Part.FeatureByPositionReverse(0).Name = "重心位置"
+ e2 B/ ]. t! B* E- X+ h
/ n! N( A( F6 W/ @+ F以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。
' d, s4 f" p; @3 d( K9 D, `0 s* n2 M关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。8 l( r7 n; V- F) L# F$ s  ]6 j
除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点6 n! m  J  P1 {4 f4 \1 r  v
" t6 v+ q8 h9 J) o6 v
实现动态连接
+ k) q- _4 c5 S  F* E
2 o3 }' n* D# v9 D# @9 l% k( l[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

对啊,我知道那个程序的作用,和手动加是一个效果。4 R! l) y* T& A; |
就是说想实现动态的话,需要把这个值和方程式连接起来,有方程式了才可以自动的更新,要不然的话,还可以使用宏来做吧,前提是你对VBA比较熟悉。: w* ]0 L$ |0 `; y6 s1 k
我对VBA不懂,懂的话,完全可以做到这样的,不过需要自己写程序。
头像被屏蔽
发表于 2009-6-16 13:06:41 | 显示全部楼层 来自: 中国广西桂林
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-6-16 14:49:14 | 显示全部楼层 来自: 中国江苏徐州
说的不错,我正打算学习一下编程。没办法,要用啊!
" s  J0 h( @( ?呵呵,一切皆有可能。- o8 H' i5 V! e/ }7 L: h2 e, K
只是现在,一时找不到相应的命令。
发表于 2009-6-16 17:24:34 | 显示全部楼层 来自: 中国北京
还得自己写程序啊!!!
 楼主| 发表于 2009-6-16 22:03:52 | 显示全部楼层 来自: 中国河北唐山
呵呵,不劳无获啊!3 }+ f1 {% A6 R' X5 g$ P8 J
有这方面的高手,请现身指点一二。
发表于 2009-6-17 00:38:02 | 显示全部楼层 来自: 中国重庆
我觉得这个不是问题呀。4 m& A, S* A& y5 B# R9 u, K
你把那个运动部分都做成一个部件,在这个部件环境中插入一个点。这个点的坐标是以本装配的坐标系来建立的。运动仿真的时候,这个点自然跟着运动部件走的。
  W5 @4 M& j! w) k, g9 Q' {另外,你要重心那个点,是不是想用它添加力什么的?
 楼主| 发表于 2009-6-17 16:35:36 | 显示全部楼层 来自: 中国江苏徐州
其实最终要求是:(一个或几个)运动部件位置变化,或某些零件尺寸改变(各种可能的重心改变),始终要求 3D草图点与 装配体重心 重合。
) J. j& C0 Z- h4 W- C3 u  p  如计算运动过程中某一位置翻转力矩,就需要知道重心位置,当然还有其他。
 楼主| 发表于 2009-6-18 22:13:18 | 显示全部楼层 来自: 中国河北唐山
经闷大指导了一番,还没成功,郁闷中...
发表于 2009-6-19 00:48:49 | 显示全部楼层 来自: 中国香港
追蹤雁兄而來到這里來了
发表于 2009-6-19 08:20:34 | 显示全部楼层 来自: 中国广东深圳
原帖由 gan5969 于 2009-6-16 12:48 发表 http://www.3dportal.cn/discuz/images/common/back.gif; E/ J5 p0 A6 _% K( D* Y% z
关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点: |# k7 k& \' |/ f9 |$ @
/ s! J0 s" H9 V! F% N4 K
实现动态连接。

( ^8 B; J# a9 A& j8 c/ o3 u
5 R' I/ d7 W7 L4 h; j; A在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:
- g" @0 M/ |; {6 C, O; @/ \
3 K+ W0 a0 Z: o* y* Q: _8 DComponentMoveNotify2 - AssemblyDoc Event
& g+ H  k% Y( o) S! ~* F$ g
* C: ], x4 n: Y8 EDescription  ?$ W5 K; ?. p: l% B7 C: }! V- U

3 X! J6 Y. A+ N) C1 @Post-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination. : s$ i, @8 P4 D
9 f6 p: p1 Z' H
NOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.
, C) I4 _5 d3 f9 a1 d
% x1 P6 Q& L, T( t2 O) g$ j$ G4 Ustatus = ComponentMoveNotify2 ( Components As VARIANT) As Long- l7 s5 \7 v! M0 ~

8 p6 z! s7 _& ]Input:
' l1 @9 b9 ?7 O$ M2 r% d (VARIANT) Components
, ~! U4 J  {* c; I! b SafeArray of the Component2 objects selected to be moved
; `" T0 I  z0 Y5 J% f8 X  X  P! h, u( S
0 [+ v" `, R9 U" ^3 K$ vReturn:# j0 X3 b# x- `: m7 q
(HRESULT) status& y% D% |8 K4 }- N- V
S_OK if successful
 楼主| 发表于 2009-6-19 11:43:09 | 显示全部楼层 来自: 中国江苏徐州
原帖由 Francis 于 2009-6-19 00:48 发表 http://www.3dportal.cn/discuz/images/common/back.gif
6 O2 ?" d9 }  o+ n 追蹤雁兄而來到這里來了
$ d: {2 n3 B( r: O. S# R) Q4 Y

5 t! K5 `: W+ s% {+ A
; y: E# `6 ^: C头一次见闷大积分“如此低”,比我还低。:lol:
1 j" ]# w' ~; h: ?/ D嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!9 K0 I8 t* c5 S2 Q% z; y

* a3 l, q( c! W+ T[ 本帖最后由 gan5969 于 2009-6-19 11:45 编辑 ]
 楼主| 发表于 2009-6-19 20:40:18 | 显示全部楼层 来自: 中国河北唐山
原帖由 zzshuang 于 2009-6-19 08:20 发表 http://www.3dportal.cn/discuz/images/common/back.gif
, N4 ]* H: Q9 K4 t& r# Z+ K9 p. _! z) R" Z+ o. O

& e& u" G& I. s, D- Q) \4 X, o在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
/ w, ]* Q1 b* _+ d! \% V

6 j- v5 v: H1 o" Z* c; p偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子9 b; Y, e/ z" I8 B
/ Y9 S: D* x& c3 W/ X4 Y4 o
利用 swAssemblyComponentMoveNotify 事件,
% T! K2 p6 b3 @& k: M
. q3 O" r4 s& \6 X8 A当装配体中有部件移动时,即重新计算圆球坐标9 p1 S( S% s  j" d2 z1 t6 I* |
5 K  o( l+ \6 ~  j/ n/ m
打开装配体,运行宏,然后拖动零部件,就可以看到效果了
1.gif

1.rar

193.27 KB, 下载次数: 37

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

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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