QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
  1. 一个可以运动的部件
! |2 }1 g' \. q$ d8 l/ t! E$ A# S0 J/ b9 v' ~# ?+ s. L( r
  2. 画一个3D草图点,点与该部件重心重合
5 a5 z, L& F  r/ P4 O/ p9 }
1 L- ]5 y! @. m! `  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。
$ W2 A$ d8 e/ q) Z- U' S6 K  n0 W$ M) l5 J; A# e2 N
    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.* E! c- V# d' U- o3 `: F, N# G
  Z# |$ J3 W2 b! Z
缺乏讨论的声音啊!!
- G! Y4 k! W( U$ {8 ]
7 L/ N* h" N% c) u/ E- `" M2 I不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?
1 T2 X- _$ r' P8 C0 i2 X" {: v如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:' f5 d* t; n# S# R$ \  m1 ]
GetMassProperties + O" W9 Y+ m6 j
可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。
5 ~( K/ E0 w5 ?GetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:
0 u" Q' I* s( J( ?. ^" P/ P$ q5 jzhongxin = Part.GetMassProperties5 k$ U# B8 L' i+ Q7 ], J
    Part.Insert3DSketch
% c& W7 p: X' P) {5 V* ?    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2)
# W+ i) N, V* w+ ^+ e      
" V" S, ^+ p2 z$ t& f    Part.Insert3DSketch2 True    5 p- e& C; v  v
0 _- |# b- k. s0 S3 a
    Part.FeatureByPositionReverse(0).Name = "重心位置"
$ V- u, }; C4 [$ W/ U& V" z! V
- k+ J" x$ u/ ]以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。2 l, g, L4 M$ I. L
关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。
9 I$ @  P1 }) H# I. l除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点: E! {3 \4 A! b- a& ?  E7 w5 ?
1 S  A# Y( d8 J" J
实现动态连接
6 ?3 R( ]1 z7 t. B6 J* C4 z9 d! m+ _8 o7 [& W4 Y
[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

对啊,我知道那个程序的作用,和手动加是一个效果。
2 {% D# G; y) ^$ A+ Q4 A就是说想实现动态的话,需要把这个值和方程式连接起来,有方程式了才可以自动的更新,要不然的话,还可以使用宏来做吧,前提是你对VBA比较熟悉。% S  ~2 l$ z# V5 B
我对VBA不懂,懂的话,完全可以做到这样的,不过需要自己写程序。
头像被屏蔽
发表于 2009-6-16 13:06:41 | 显示全部楼层 来自: 中国广西桂林
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-6-16 14:49:14 | 显示全部楼层 来自: 中国江苏徐州
说的不错,我正打算学习一下编程。没办法,要用啊!9 \/ F6 q- h% k% `
呵呵,一切皆有可能。
/ o- u4 Y, F8 W& ], m5 _* g只是现在,一时找不到相应的命令。
发表于 2009-6-16 17:24:34 | 显示全部楼层 来自: 中国北京
还得自己写程序啊!!!
 楼主| 发表于 2009-6-16 22:03:52 | 显示全部楼层 来自: 中国河北唐山
呵呵,不劳无获啊!
1 z4 {+ S4 x6 ^, ?8 V, B- O有这方面的高手,请现身指点一二。
发表于 2009-6-17 00:38:02 | 显示全部楼层 来自: 中国重庆
我觉得这个不是问题呀。$ o' ~3 d! d0 X5 U7 j( l
你把那个运动部分都做成一个部件,在这个部件环境中插入一个点。这个点的坐标是以本装配的坐标系来建立的。运动仿真的时候,这个点自然跟着运动部件走的。" H# b) w/ h$ ~5 w
另外,你要重心那个点,是不是想用它添加力什么的?
 楼主| 发表于 2009-6-17 16:35:36 | 显示全部楼层 来自: 中国江苏徐州
其实最终要求是:(一个或几个)运动部件位置变化,或某些零件尺寸改变(各种可能的重心改变),始终要求 3D草图点与 装配体重心 重合。
  E! U" ~7 r# e1 H  如计算运动过程中某一位置翻转力矩,就需要知道重心位置,当然还有其他。
 楼主| 发表于 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
, D+ }  O" o. y; r7 C8 R* B关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点* R0 Y, Y" O( V) q% I5 G2 P

& N& @- O9 w0 O) s实现动态连接。
+ p3 c; o4 t. s

2 Z1 p- L' R, E6 D5 I在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:
- M% b1 R8 i2 ?/ n: Z4 a0 G/ S( z+ U6 b$ e8 d' _) L0 ?, K
ComponentMoveNotify2 - AssemblyDoc Event
9 I+ W0 J, Q* I1 U. W2 e& D1 O
  l8 v( z  t! L6 uDescription- ^9 Y% X: v8 v
* [$ @- q+ h4 {! w
Post-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination.
' b* @* ?. y% T" E; a. |) f- g' `# L
8 x* w3 a# k6 dNOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.
; c& P- h, n5 P  }2 ]% b9 {0 X  m$ r& M
status = ComponentMoveNotify2 ( Components As VARIANT) As Long
0 `+ s, |# ^2 g2 W6 v9 X+ I6 r8 X' g& \, c( n7 v% U
Input:5 c% d. A1 Q7 V; S3 U2 Q
(VARIANT) Components
& O% ~% I( x7 m: O0 R' w SafeArray of the Component2 objects selected to be moved
& {* P, e$ E* f- ~) |
5 o  \5 S7 {" E4 N# G4 eReturn:
( w; ~6 K, w  V- t5 H (HRESULT) status
* @( |1 K8 m- N 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
4 o4 h6 H' [; ]& Y7 D 追蹤雁兄而來到這里來了

8 N/ d6 E, A* k9 m1 O: D* P& H2 }( I* ]# F+ Q$ x! B! q' U2 B. D* W4 g$ g
( f( Z: r/ v1 k1 Y* |2 L
头一次见闷大积分“如此低”,比我还低。:lol:
) [) ?  s% A9 [7 @嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!! o7 s. k' d4 o7 i5 e1 b9 c- q

# B+ V1 N6 J8 b, R, V4 r[ 本帖最后由 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
, B' D5 @$ u' e$ G( q+ R* _8 x: b( a2 C6 v/ S( I. X. M5 `

3 Y. n- r: S) J6 L7 U: U& A在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
) V( z6 K& X+ Z0 p
$ p" a* h3 ?) r  r8 d
偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子
4 F( S! \' }6 Y' E" k# {+ S; v
3 f/ g7 s$ B/ x: v) v利用 swAssemblyComponentMoveNotify 事件,1 d  G  e: X; _. }$ d2 Q1 m  }
5 A$ q% x" g9 H- F1 `& S
当装配体中有部件移动时,即重新计算圆球坐标/ Y. x/ T3 N0 v
7 Z5 ^$ Z# b  B
打开装配体,运行宏,然后拖动零部件,就可以看到效果了
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 )

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