QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
  1. 一个可以运动的部件4 p' k) _# i/ i, R( F# A

3 F0 k( H0 V( U$ O. P  2. 画一个3D草图点,点与该部件重心重合
5 K/ _9 B" x. F9 G; e
5 ?. U7 E& L2 p  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。
$ e0 `- m3 _$ f
0 L, P2 Q! C( h2 U# }) ^    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.
9 _) I; o2 q# a8 a6 y6 f5 H2 J1 X * v3 |! `7 v2 g% ~# G  ^+ g3 D9 J0 h
缺乏讨论的声音啊!!  s; n% A  i2 b4 J

5 B5 F) y/ u; Z+ d不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?+ i) A0 ^/ z6 d6 ^
如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:
2 `7 c& _" B$ SGetMassProperties
2 t2 }. N+ F) i/ E可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。
2 `1 L) v( S; ~) oGetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:' o2 \9 b2 f" Z. t  G
zhongxin = Part.GetMassProperties
: `; H! h  p2 w    Part.Insert3DSketch
" e2 u0 E6 O7 J    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2)
6 e! c9 L' `4 E; _  y9 z      
# m8 A: M1 T  ]' C    Part.Insert3DSketch2 True    / X& e* p! E5 P( a
  V! @8 K: g, W1 ^9 ]3 c$ S8 w# a
    Part.FeatureByPositionReverse(0).Name = "重心位置"
) G- d# c) _/ r  B& ]/ b( n. e7 J7 l8 D9 f+ o
以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。% C, a1 f$ k" H$ \; a/ B
关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。" u1 B3 s. x: }+ n3 }  s
除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点
# J, ?: k- |$ [( M: R1 r/ l9 u3 v# L3 _8 q- f
实现动态连接. @$ L' @5 b2 _6 x( k) F- F

3 t2 c. K# ]- H# u) m8 k0 |4 Z: B[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

对啊,我知道那个程序的作用,和手动加是一个效果。
' y) T. N" W" S$ _& t" D9 s1 W就是说想实现动态的话,需要把这个值和方程式连接起来,有方程式了才可以自动的更新,要不然的话,还可以使用宏来做吧,前提是你对VBA比较熟悉。
  [6 q) S8 O$ p" M+ `! [我对VBA不懂,懂的话,完全可以做到这样的,不过需要自己写程序。
头像被屏蔽
发表于 2009-6-16 13:06:41 | 显示全部楼层 来自: 中国广西桂林
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-6-16 14:49:14 | 显示全部楼层 来自: 中国江苏徐州
说的不错,我正打算学习一下编程。没办法,要用啊!8 H  N+ u; M9 i8 z! n
呵呵,一切皆有可能。4 ]0 ^  U! s2 s3 `+ b; E
只是现在,一时找不到相应的命令。
发表于 2009-6-16 17:24:34 | 显示全部楼层 来自: 中国北京
还得自己写程序啊!!!
 楼主| 发表于 2009-6-16 22:03:52 | 显示全部楼层 来自: 中国河北唐山
呵呵,不劳无获啊!
4 p- M% D+ M0 }: V3 K/ `; e有这方面的高手,请现身指点一二。
发表于 2009-6-17 00:38:02 | 显示全部楼层 来自: 中国重庆
我觉得这个不是问题呀。$ F7 T4 I3 \- t# M) I5 T; N
你把那个运动部分都做成一个部件,在这个部件环境中插入一个点。这个点的坐标是以本装配的坐标系来建立的。运动仿真的时候,这个点自然跟着运动部件走的。
; L! Y# _" w+ Z/ I另外,你要重心那个点,是不是想用它添加力什么的?
 楼主| 发表于 2009-6-17 16:35:36 | 显示全部楼层 来自: 中国江苏徐州
其实最终要求是:(一个或几个)运动部件位置变化,或某些零件尺寸改变(各种可能的重心改变),始终要求 3D草图点与 装配体重心 重合。
1 {, T& t3 ~" U; L9 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+ u6 N3 O0 [" r  r' O0 d
关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点+ d* k% d9 j5 l; I, _
/ }+ ~- t- D7 z1 v* V1 t# r+ {
实现动态连接。
' u# c- j" [& S$ s5 ^+ O: Z; O4 e/ O
* [3 k1 g% T. P
在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:- z2 n% p* Z$ W% v5 D

9 v& u+ @0 H. ^+ VComponentMoveNotify2 - AssemblyDoc Event
3 j: m5 f+ ]- W1 | 0 N3 ~5 N) K6 m; a; B8 W' ]
Description
2 e8 l- {! ?1 j3 q( \$ C0 F; ^! g% U+ V/ r% Q) {( \3 I# x
Post-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination. % ^+ v; L. y4 G% Q7 u4 [

) L/ F" O. N% CNOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.
, v( v7 X: H- I! Y2 n4 ^0 f
6 k. L, W) D" {status = ComponentMoveNotify2 ( Components As VARIANT) As Long3 x0 E4 w# N4 N8 Y. T1 R

- w! D; q: L7 |. d$ j$ H: }Input:  E, ~0 p2 N* c- f, U
(VARIANT) Components
4 a' t  P; ~' r7 a" n- Y, d, k# e SafeArray of the Component2 objects selected to be moved: }0 W. ^4 u* r1 o  x8 ?) H

' f3 P9 \8 u( l. s$ XReturn:
! b5 G/ s. B( W (HRESULT) status
9 ?9 J) t8 B" c4 O4 R 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
& L& ~; }+ ^/ x0 p) C+ _ 追蹤雁兄而來到這里來了

6 m. l& g# I+ C: |8 \6 k/ ]7 j, v: @& m- r  I
. G, H- W% u6 S! q" O
头一次见闷大积分“如此低”,比我还低。:lol:
/ C$ L4 M6 q( J* j( T2 c( s嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!
6 ^# [+ m0 l  E2 \: o: N8 E1 [: F' {2 a
[ 本帖最后由 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+ q$ ?4 s4 T/ U- M; W# n! ?- }
6 k  F/ i) }" [& H' h# l

3 z/ ~9 q& i# Z- x4 U$ J在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
# K$ t; c5 ^9 h- T

, R# h$ A) S% E1 R5 M  b9 b偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子
4 M# k. ?& h' J/ c* o
% i+ s0 e- ~! j* U: q8 y利用 swAssemblyComponentMoveNotify 事件,1 h& m& T& t1 R) w. ^' m$ V

) X3 F8 T5 V0 ^当装配体中有部件移动时,即重新计算圆球坐标
) r/ q! {0 F' V2 ?; v
8 j% X6 C5 T* Y# c打开装配体,运行宏,然后拖动零部件,就可以看到效果了
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 )

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