QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
1天前
查看: 6936|回复: 25
收起左侧

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

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

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

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

x
  1. 一个可以运动的部件; _5 T6 @: p# V

- G' E- A. {& P. U) w  u  2. 画一个3D草图点,点与该部件重心重合- a  v  B& D$ `4 \, @

: _5 z) Q8 F  y9 v- g# @  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。
$ N& t/ v) \" R( ^) e! ~' `( n1 h* N) m3 ]- A) j; n
    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.
0 I) m$ z! E1 V" }" u  n4 a
7 l* B" f* F7 R" f( n2 H缺乏讨论的声音啊!!) Z; s' I8 _2 k2 W

# k  b1 H& T' J, L不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?
* e* Z  ?8 N+ m; r/ G1 @) x' W" c& Q如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:
; W2 a( N/ m' q; N  PGetMassProperties
7 d8 u" F+ V- v; N可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。/ X: F2 M" v2 S8 D
GetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:/ F6 Q$ |! q* G! J9 y1 f' s
zhongxin = Part.GetMassProperties
9 J. @6 z  C; v# o    Part.Insert3DSketch+ R8 M; i- q& w; t* Y* z
    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2): I* O3 O+ l( O$ b
      
" u7 L0 U2 M; J, v7 g+ @    Part.Insert3DSketch2 True   
, d, h1 h, K. i  [. F8 x7 R
  \* |8 A6 L4 B; g: I; S& k0 j    Part.FeatureByPositionReverse(0).Name = "重心位置" , p% H' X5 p, j, ~4 D
! E1 S* x/ C) ]4 E
以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。
' d1 _0 W8 G9 q: p, R关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。4 j4 h* x2 R* p( Z# R& b
除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点
2 l/ _8 G# ]6 C0 Z1 i6 f) T2 l! @3 |
实现动态连接( H$ D; C2 B0 V5 z1 z

% i/ k: `% Z0 `' }( h' s[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

对啊,我知道那个程序的作用,和手动加是一个效果。1 l, X8 C5 Y: ]# c
就是说想实现动态的话,需要把这个值和方程式连接起来,有方程式了才可以自动的更新,要不然的话,还可以使用宏来做吧,前提是你对VBA比较熟悉。
/ [& M# v4 b. o我对VBA不懂,懂的话,完全可以做到这样的,不过需要自己写程序。
头像被屏蔽
发表于 2009-6-16 13:06:41 | 显示全部楼层 来自: 中国广西桂林
提示: 作者被禁止或删除 内容自动屏蔽
 楼主| 发表于 2009-6-16 14:49:14 | 显示全部楼层 来自: 中国江苏徐州
说的不错,我正打算学习一下编程。没办法,要用啊!- j) V8 }# Z" r6 e, i. ]
呵呵,一切皆有可能。
; Q9 L9 F6 A* A- b只是现在,一时找不到相应的命令。
发表于 2009-6-16 17:24:34 | 显示全部楼层 来自: 中国北京
还得自己写程序啊!!!
 楼主| 发表于 2009-6-16 22:03:52 | 显示全部楼层 来自: 中国河北唐山
呵呵,不劳无获啊!
1 T1 v3 m% Z/ k4 \" t( ~' d有这方面的高手,请现身指点一二。
发表于 2009-6-17 00:38:02 | 显示全部楼层 来自: 中国重庆
我觉得这个不是问题呀。
9 G8 u# \+ b2 n; L6 t0 [( B0 C2 P你把那个运动部分都做成一个部件,在这个部件环境中插入一个点。这个点的坐标是以本装配的坐标系来建立的。运动仿真的时候,这个点自然跟着运动部件走的。
/ C+ u: o& t* O2 {# j/ H# [另外,你要重心那个点,是不是想用它添加力什么的?
 楼主| 发表于 2009-6-17 16:35:36 | 显示全部楼层 来自: 中国江苏徐州
其实最终要求是:(一个或几个)运动部件位置变化,或某些零件尺寸改变(各种可能的重心改变),始终要求 3D草图点与 装配体重心 重合。# ^7 h1 r  ?) F
  如计算运动过程中某一位置翻转力矩,就需要知道重心位置,当然还有其他。
 楼主| 发表于 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! O1 B5 W( N5 h4 a
关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点) w+ W5 J& Z, w1 |

7 S7 q1 T% G# p. d: m# H实现动态连接。
% N5 c/ L% A# y$ g% ^# }3 j( W

+ S) G, K; c8 |! g在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:
+ i  d8 i2 Q: ?1 d5 q0 j" V' W' s) |
ComponentMoveNotify2 - AssemblyDoc Event( ], g1 ^, r2 P

5 n2 v! t) Z- O) \( P; r* {Description
% s) {1 k% x! g( P( y: |
0 ^2 L$ a5 G# h) ]2 r, a7 U* CPost-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination.
0 m# X4 I' ~  S
# C* |  C! _9 y: B  m# LNOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.% i+ g# l2 e( s! _' k9 S  j3 W

, S4 D0 I- ]$ k/ G+ \% ]status = ComponentMoveNotify2 ( Components As VARIANT) As Long* O& h. r! M7 f
% u7 P& x7 v9 }7 L; ?
Input:, z7 I  v1 P; e) k# p
(VARIANT) Components
$ D6 w- M0 r1 B9 M9 p SafeArray of the Component2 objects selected to be moved
8 U* G* R, v0 G & t- v' [; ~' c/ A% l1 S
Return:
  B: W5 @! m$ g* \2 R7 Y (HRESULT) status( M! V' K  s% h  p5 X1 W0 b
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
/ ^% A" S" ^" l 追蹤雁兄而來到這里來了
  M6 X: G/ t; D, S1 N
7 j9 j& {& R+ `% F) [* p

, ^6 K& Y; l0 x. v9 B7 v* [! o& L头一次见闷大积分“如此低”,比我还低。:lol: $ P; h6 o3 a# p' B" `  }2 h
嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!, ?% S1 ~  K$ g# `

; }% |  ?: t( U" N' 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. ?) p9 {* B5 b) p% Q* `8 w/ J
" g: Z/ h# s1 t5 F

, f7 _* r" J% m* L" ?在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
. ]8 k; Y* F1 |. s+ `( A* A

/ }  M- w) f, j9 Z1 A5 m偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子
+ ^) f. W. k- d6 K  ~( Z8 A0 u6 w# P7 e) e
利用 swAssemblyComponentMoveNotify 事件,8 g/ U" H: w0 O0 Y5 P; U1 U
# [* r, x! V6 W5 X" g; O# p
当装配体中有部件移动时,即重新计算圆球坐标
- I7 {6 Q, i2 h0 U$ _- j4 c. \8 W4 s4 h
打开装配体,运行宏,然后拖动零部件,就可以看到效果了
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 )

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