QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
  1. 一个可以运动的部件" X. W. F$ @" `6 X$ K" y$ b

9 H, X& V+ k& o7 N: _: |9 ~8 b) B4 v5 ]  2. 画一个3D草图点,点与该部件重心重合
$ }& H7 T/ C6 r0 n( M4 G" ?0 y: m) m( s- J: X8 b7 |
  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。
! Q5 `% U' D  t" e" m7 l5 W9 w
    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.6 f: F# N; c; O4 k+ l

2 i8 y5 [, U3 v3 M! I/ ^/ y缺乏讨论的声音啊!!" E7 e' C$ J# Q# H9 U

/ q2 y8 E' O) v7 g8 F不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?
4 D' `4 Q) N/ M) V. W如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:
: k2 g  D1 S" t& G5 {2 `  qGetMassProperties
% O1 o; z. d. [* X6 {9 D0 ^可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。
1 E- g( U) o8 T3 _3 Y! ?4 bGetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:
2 i# N. s8 |. yzhongxin = Part.GetMassProperties5 r/ L' ?. x( O6 A
    Part.Insert3DSketch
. O* x* e2 y; u3 d4 i* M: g    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2)
) i$ v* G  i+ @      
6 u5 |: G' y+ _    Part.Insert3DSketch2 True    * x. r. E/ }' S8 f

) j; t$ B& d6 v0 [  K1 M2 f$ c    Part.FeatureByPositionReverse(0).Name = "重心位置" 9 l- [) F- \# U! J% U. O, Q

% m/ n/ W1 j. Z2 [; a以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。* l  `2 E) F4 K5 L! x3 d  y
关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。
- x. _' y, _4 Q1 K4 w- a除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点+ [% M# _0 ^- Y8 ~, `/ f

# A. V( I+ j  A# Y实现动态连接/ A5 ]9 r7 z$ O! \" {' V* c) `0 L

5 W3 n0 r$ ~! U. F5 p1 r[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

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

" \9 s) _( F6 w7 Z; ], d$ S1 `: }在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:# D* v) a' a7 ]/ h& P

: H6 a/ t! I5 DComponentMoveNotify2 - AssemblyDoc Event
, F. ]  G2 e8 G" F, ] 0 {3 f# v( Z* K5 o, M
Description( m8 b5 _+ S( o

: ]! |/ u2 m' k- }7 @% T& b' aPost-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination.
% O7 I4 R% P& B7 e8 {% d' w& L1 _: T4 h( y, S4 N: x
NOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.
) T$ ~+ p& u9 C) \; A$ X! }& A( l% t! i  R
status = ComponentMoveNotify2 ( Components As VARIANT) As Long: M  [# m& N% _
# ^/ E! ]) L# w/ w
Input:1 w- M3 |# E1 K, K" A& h- V! j
(VARIANT) Components
: K* }5 O" w6 J SafeArray of the Component2 objects selected to be moved7 I- Q! r% u( R/ h, _4 I0 U$ x

& A$ g) U' J. f, y( qReturn:
4 {1 ^9 U' c+ `; F5 I (HRESULT) status
, \8 B; a$ Y3 f' _4 [ 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
: x( w1 D$ f5 J% n 追蹤雁兄而來到這里來了

3 i- [  [. Q, I) Q
- W! ~3 T. V2 k6 V: u8 a: L$ I$ e( T5 f! k+ e! R8 I2 p7 t
头一次见闷大积分“如此低”,比我还低。:lol: % @! {9 b0 f2 C7 {$ c% I; y
嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!
7 m1 r. ?! s* A- z0 m2 F2 a
% }( {7 [6 z" E( s$ P, M[ 本帖最后由 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: ]' ~/ _: X# ]- L  A3 t9 ~

2 y, O1 O; t0 j) g" d- }
- ~! h; `( A& ^在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。

- h: ?6 v5 y, _* G" w3 q1 u
& D9 a" y( D. H! P( ?6 K9 L偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子
- R1 z: H) S6 x( I- q2 d- s: U2 w6 ^' `- ^4 \0 y  B
利用 swAssemblyComponentMoveNotify 事件,0 {! S; @( [( c6 ~

& S- {0 O3 w9 b; y5 q当装配体中有部件移动时,即重新计算圆球坐标
! x6 H7 K' o; r5 y& ^6 J( y  ]' J, F" ^( }  ?! w: H1 \: {: Y
打开装配体,运行宏,然后拖动零部件,就可以看到效果了
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 )

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