QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
  1. 一个可以运动的部件
8 S; x- M0 ^& Z7 X* r
6 C3 I) a# V8 {% m% E2 c4 n) b  2. 画一个3D草图点,点与该部件重心重合
3 I5 @% g) [% D  O3 j, w9 \8 T2 r9 n2 _8 c" m
  3. 该部件在运动过程中,要求 3D草图点始终与部件重心 重合。
( I4 M) p9 x! I1 Z9 W
$ I' p6 l" k4 ~8 Y    应该怎么做呢?
 楼主| 发表于 2009-6-12 09:14:47 | 显示全部楼层 来自: 中国江苏徐州
如图,重心变化
重心005.gif
 楼主| 发表于 2009-6-13 09:51:57 | 显示全部楼层 来自: 中国江苏徐州
问题在第三步.
4 T1 y* M4 @' ?* u" d8 E4 d0 t 7 \& \5 C/ ~8 }' W
缺乏讨论的声音啊!!: n* ^( U2 d7 c6 R, w9 f4 E

8 K$ o! ]# [* {( i  Z不一定解决后再说话,可以探讨可能的做法。
发表于 2009-6-13 10:47:52 | 显示全部楼层 来自: 中国北京
我怎么第二步都搞不定啊?
! j9 d- c* P! d. O3 K5 J如何搞定第二步?能搞定第二步,我觉得第三步问题不大的
 楼主| 发表于 2009-6-14 19:10:50 | 显示全部楼层 来自: 中国河北唐山
第二步,自动找重心位置,网上流行的程序也比较多的,就不要再说了吧?
 楼主| 发表于 2009-6-14 20:40:08 | 显示全部楼层 来自: 中国河北唐山
利用此函数:/ p! h4 Y3 W4 S5 j2 U% s$ O9 V
GetMassProperties ( J7 W+ B) d3 _( B
可得到零部件重心坐标、体积、面积等参数,用重心坐标插入草图点即可。
发表于 2009-6-15 16:37:08 | 显示全部楼层 来自: 中国北京

回复 6# gan5969 的帖子

你是说先知道重心数值了,然后手动去添加一个点啊。2 d. f/ B' ]* W0 ~
GetMassProperties这个函数有啥用?能自动生成重心点的点吗?不能的话,这函数有必要吗:L 利用SW自带工具就可以得到坐标啊,但是这个坐标不能自动生成点,所以难办,好像也不能加到方程式里面,如果可以加到方程式里的话就可以搞定了
 楼主| 发表于 2009-6-15 20:38:44 | 显示全部楼层 来自: 中国河北唐山
当然可以插入草图点,如下:1 P& g. k, f3 l
zhongxin = Part.GetMassProperties. t6 Q2 F, w0 Q$ `2 Y, e4 j# m$ D9 W
    Part.Insert3DSketch* [+ h$ j' V( @  H( B
    Part.CreatePoint2 zhongxin(0), zhongxin(1), zhongxin(2). m+ R3 G7 @' d1 E
      
/ w( X2 N: k  R3 d5 \2 p' J    Part.Insert3DSketch2 True   
' s9 W: j, o7 [; F( Q& g! u* c0 R
& A' [7 D, r7 G) o* m/ j    Part.FeatureByPositionReverse(0).Name = "重心位置" . X$ b9 L! p1 A( }: L2 r" u
0 o5 ~' }4 r* i# Y
以上插入了一个名为"重心位置" 的点
 楼主| 发表于 2009-6-15 21:45:39 | 显示全部楼层 来自: 中国河北唐山
还是发个图清楚:如下
重心获取.gif
发表于 2009-6-16 11:44:30 | 显示全部楼层 来自: 中国北京
看明白了,你那个自动生成和手动是没有区别的。手动生成的时候在创建点的时候也可以输入坐标点的。* Q6 ~7 \, p9 N- }- ]& ~2 }* N
关键是这个坐标点具体数值是不是可以利用SW的方程式自动提取过来。如果不行的话,实现动画基本上就不可能了。
' O4 M1 N3 j5 A8 d  G* z; z- ]* b除非你手动一步一步的来变化,一步一步的截图,然后再拼到一起也是动画
2009-6-16 11-39-58.jpg
 楼主| 发表于 2009-6-16 12:48:55 | 显示全部楼层 来自: 中国江苏徐州
晕!8楼程序不在那么?关键是接下来:如何在 刷新 后把获得的新坐标  赋予 原  已生成 的 草图点! ^  P  m% Q; p+ G8 p/ D% P6 b9 t
5 a+ v1 V/ l, K
实现动态连接
' x3 T) p9 m. n7 I7 h! R3 r) L' k8 D* H5 L  u+ ~6 V
[ 本帖最后由 gan5969 于 2009-6-16 12:50 编辑 ]
发表于 2009-6-16 13:02:38 | 显示全部楼层 来自: 中国北京

回复 11# gan5969 的帖子

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

$ q  _8 }# U& f' c3 ^% W: N) D! @实现动态连接。
+ X  x5 `/ w) ]$ A8 ?; ]
/ Q' a# P1 f! U6 J" H
在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。
pic01.jpg
发表于 2009-6-19 09:07:15 | 显示全部楼层 来自: 中国广东深圳
在API中相关的说明如下:* f8 ^- j( X- U& L

2 j& P/ d% A# {0 h! H5 o: d6 vComponentMoveNotify2 - AssemblyDoc Event$ _8 v1 B; z* f2 D1 k% A
* Z' J8 v$ ]6 |% u
Description$ J2 ~- x' l1 M7 i! t' r/ T

* A$ v: P/ L2 a( J/ \Post-notification that is sent when a user releases the mouse button indicating that the components have been moved to the desired destination.
6 |: w: c7 Y- P# m0 X# T
! s6 E7 q4 P! E; ONOTE: If developing a C++ application, use swAssemblyComponentMoveNotify to register for this notification.
: g" \" @, |9 V% ]5 \
& L# l0 t- F3 j. fstatus = ComponentMoveNotify2 ( Components As VARIANT) As Long
7 W0 U, T1 q( t* ^  X, ^
  F# A5 m9 m" J0 d; i  y' TInput:# R; B: B. u; N/ `2 q* W
(VARIANT) Components
- x& U& _. l0 z9 @. W" V; t SafeArray of the Component2 objects selected to be moved  e! P" N5 F6 e. |

: Z: ?3 F6 C8 ^( `8 y& w3 [& oReturn:' M2 N& Q, t& Q5 T  U+ Q' g
(HRESULT) status
% T# J) {' ^; | 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* U/ ]+ A9 a% W
追蹤雁兄而來到這里來了
, }! n, U4 x' E% Q

' H: g. }1 ]; h2 p8 i7 c: ]( \. \& P+ d; v
头一次见闷大积分“如此低”,比我还低。:lol:
' J" ~3 M/ ~5 e/ h嗯,看看时间,2009年6月19日11时38分,等以后看到闷大是我N倍分的时候不要疑惑哦,上述说法仅此时此刻成立!
. q. Q* X9 K3 F: T/ X
5 U  T% t9 m1 Q# y/ X# C[ 本帖最后由 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; U  W  k) w5 P# m: _
6 t0 @: ^$ Z0 z. b8 C' B+ G

/ `( k- ^5 t6 G$ S在SW的宏中,有些东西似乎可以达到你的目的,可惜没找到使用使用方法。

1 L. X5 e3 {- v" M' C6 }, e" }! O2 H) l! I
偶还没找出头绪,也许半自动更新比宏特征更有利于计算、使用(⊙o⊙)。
发表于 2009-8-8 19:45:18 | 显示全部楼层 来自: 中国上海
做了个简单的例子
/ [* R, G0 L: U+ E
! g. C4 b. j' @9 l利用 swAssemblyComponentMoveNotify 事件,4 T6 L' K# d# c# I0 L

* G6 p$ h( s* P当装配体中有部件移动时,即重新计算圆球坐标( A7 S2 J: `  m+ @3 I: Z, x! {" I) A
8 a/ X! D' w! G
打开装配体,运行宏,然后拖动零部件,就可以看到效果了
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 )

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