QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
10小时前
查看: 6932|回复: 25
收起左侧

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

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

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

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

x
  1. 一个可以运动的部件: K7 o( o$ X! D- T5 i

+ M/ _4 g1 m. ~* C' B; h  2. 画一个3D草图点,点与该部件重心重合
' h$ S( w; [/ f  k  o8 M3 f0 I* z
3 `, q2 y) C+ v: B7 Z1 }  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。  b9 f" v4 p/ c5 p

7 L9 J' }6 N7 c, E    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.
# A/ s: S. {4 X* t 1 q1 N7 H. P8 ]
缺乏讨论的声音啊!!
$ H. n' V4 p$ t3 G$ _0 h4 R
  _: X* k% c, ^8 n! U& e$ H! i& k不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?
  N' H- b) x6 f如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:
' W/ l" N7 g" m8 \6 q6 CGetMassProperties
4 y: C" _1 R5 l6 c( a! }% T. G可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。
) Q% Q' T  Q9 }) c" CGetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:0 t0 z8 d; h1 g  g9 c
zhongxin = Part.GetMassProperties
0 Q9 u' w, q0 i; Y    Part.Insert3DSketch
+ C$ C% _$ F) p8 Y4 g: w    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2)
' _! J' y* _( V; h+ t      
( ~6 X4 I; U* k  {2 H  r# p% i+ ]8 y    Part.Insert3DSketch2 True    6 b" E; q0 w( v" s" E0 ~
9 z* b. P& J5 S
    Part.FeatureByPositionReverse(0).Name = "重心位置" % {0 a% G8 K) V( b/ X# e: |& }
; |  e( u1 n$ J4 m- Z* P% z$ |
以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。  |! M1 K  N! e9 h
关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。
+ U; p  J: e& p5 w' D/ e2 G# k, G除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点% A9 Y/ l8 D2 R" a7 r) E9 T( R$ M/ g
& \5 n8 {7 y. n  e
实现动态连接
6 h8 v5 V- Y8 S
" x$ R. H* R+ ]$ n. \[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

对啊,我知道那个程序的作用,和手动加是一个效果。( {7 M+ m; b; z; w8 L
就是说想实现动态的话,需要把这个值和方程式连接起来,有方程式了才可以自动的更新,要不然的话,还可以使用宏来做吧,前提是你对VBA比较熟悉。
! X# k! y( s& f, L$ s5 ~我对VBA不懂,懂的话,完全可以做到这样的,不过需要自己写程序。
头像被屏蔽
发表于 2009-6-16 13:06:41 | 显示全部楼层 来自: 中国广西桂林
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-6-16 14:49:14 | 显示全部楼层 来自: 中国江苏徐州
说的不错,我正打算学习一下编程。没办法,要用啊!
' ^  b2 ^+ ]7 l3 j- n9 `2 P0 {呵呵,一切皆有可能。+ Z1 b% k. q- |. y0 B0 |! ~
只是现在,一时找不到相应的命令。
发表于 2009-6-16 17:24:34 | 显示全部楼层 来自: 中国北京
还得自己写程序啊!!!
 楼主| 发表于 2009-6-16 22:03:52 | 显示全部楼层 来自: 中国河北唐山
呵呵,不劳无获啊!3 d" q  ]9 O; r# n
有这方面的高手,请现身指点一二。
发表于 2009-6-17 00:38:02 | 显示全部楼层 来自: 中国重庆
我觉得这个不是问题呀。
! r4 F' {+ M: C) v2 }7 v4 x. y3 o5 X你把那个运动部分都做成一个部件,在这个部件环境中插入一个点。这个点的坐标是以本装配的坐标系来建立的。运动仿真的时候,这个点自然跟着运动部件走的。
8 t- W+ n5 s# K另外,你要重心那个点,是不是想用它添加力什么的?
 楼主| 发表于 2009-6-17 16:35:36 | 显示全部楼层 来自: 中国江苏徐州
其实最终要求是:(一个或几个)运动部件位置变化,或某些零件尺寸改变(各种可能的重心改变),始终要求 3D草图点与 装配体重心 重合。0 F2 W6 _+ W+ Q# i4 [
  如计算运动过程中某一位置翻转力矩,就需要知道重心位置,当然还有其他。
 楼主| 发表于 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
' r% U8 }: q5 o4 I9 t关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点/ \7 [# Z1 {/ h6 D0 \' |
  _2 u) n; @# p0 Q
实现动态连接。

8 k; t' y4 w% s$ ]( o
. M# D- s' v/ s. x在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:
& D" x/ O1 t8 M$ B0 B  r. [9 d3 p2 K- `8 g$ \+ d
ComponentMoveNotify2 - AssemblyDoc Event5 a4 [/ r! R6 G* F  {; Y. [4 ~
; i/ y' h) n* G2 _
Description" T+ }# |: b2 m* Z

" e9 r5 l( w" _+ oPost-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination.
; z' g- z  H# R0 a* Z8 n8 u
% I6 k, H$ F8 ^3 ~: X* ]NOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.* ?' X9 x: l  t7 [; V. [

* {, n/ N5 ?# r! A" t% {  Qstatus = ComponentMoveNotify2 ( Components As VARIANT) As Long
2 u. h; c/ \, u: o2 }! F* f; q
& \" \; z& A" D6 {$ A* gInput:3 x" q1 R- T& @$ L
(VARIANT) Components
" S8 S4 D! p( ~. m5 S- o SafeArray of the Component2 objects selected to be moved, z3 Z- T# Z; `3 d8 I' R% w1 D
4 n  v' W3 n6 f0 o: G7 {
Return:/ ~3 m5 _, q. m* C& v# T* d5 W
(HRESULT) status
/ G5 L: E+ L/ S, x7 A1 ` 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
: Q  J# X, A( F2 \/ O$ s! T 追蹤雁兄而來到這里來了

) m! h3 t, l" m% H  G& C* L, ~' A9 M& c

; ^: L3 [  J; T头一次见闷大积分“如此低”,比我还低。:lol: * R) q& J. N2 |, F7 {! j' L' W8 y
嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!6 m- f& Q6 e; u. D" _4 \) k9 r
1 I5 j' G+ q" @8 \- w: W
[ 本帖最后由 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* G& g7 c. f6 n3 R5 z  h
' N6 ^0 X8 e, g5 S/ }
8 r% f; p# G1 R: z" Z- `
在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
7 T! h9 w& L  i8 ~9 o( U! d% t

1 k6 U& a, h# Y: F6 X: b偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子
/ t( ]; b2 L, m7 N% j1 o! c3 P* c$ ]! c) R5 r6 S
利用 swAssemblyComponentMoveNotify 事件,
- M; F2 ?+ r3 H$ h8 z. d1 d3 k) \% p
当装配体中有部件移动时,即重新计算圆球坐标& T  y+ B9 P9 \0 [) B5 J
9 X2 K% r6 D1 @: O1 N
打开装配体,运行宏,然后拖动零部件,就可以看到效果了
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 )

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