青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

青华模具培训学院
查看: 1911|回复: 19

[疑难] UG二次开发获取零件的密度和质量信息

[复制链接]
发表于 2015-4-18 09:41 | 显示全部楼层 |阅读模式
想用二次开发的方法获取零件的密度,质量体积形心信息
& x+ M* ^' T/ x+ [- U1 e
发表于 2015-4-18 11:50 | 显示全部楼层
UF_MODL_ask_mass_props_3d
回复 支持 反对

使用道具 举报

发表于 2015-4-18 11:50 | 显示全部楼层
UF_MODL_ask_body_density
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-21 15:50 | 显示全部楼层
        double *masscenter=new double[3];1 r" h0 ~  c, I% B
        double*acc_value=new double[11];. l; l! V* q( [4 T/ P& w
        double*mass_props=new double[47];1 P) q( C" c- T+ c; c) ?( t
        double*statistics=new double[13];
. i: X; H" e$ i6 q        UF_MODL_ask_mass_props_3d(&partTag,1,1,3,1,2,acc_value,mass_props,statistics);
- T2 G. k/ B4 Y2 `( b+ U        masscenter[0]=mass_props[3];
* q( t" v- T8 u( s$ B        masscenter[1]=mass_props[4];% z+ x/ l! Z& |2 D* j8 b9 k
        masscenter[2]=mass_props[5];
) c# c2 {: t5 N! a# C我这样写得到的是
) c. F- Z8 K2 h  o4 k3 `3 y: i4 J0 x+ n质心x=-6.27744e+066( L+ k8 y4 \4 E% p# C# d
质心y=-6.27744e+066
- y& F1 V1 Z4 _" t质心z=-6.27744e+0660 M0 D/ G' c; N" e6 t" l
是不是那块有错啊@victor_tech

点评

masscenter这些不用动态内存,直接数组就行了!  详情 回复 发表于 2015-4-22 19:14
回复 支持 反对

使用道具 举报

发表于 2015-4-21 19:13 | 显示全部楼层
本帖最后由 ypcopy 于 2015-4-21 19:15 编辑 8 ~5 r2 `! L" T

2 P! P* w# ~  z/ p; mvoid masscenter(), K. ]% u# `' J+ Z  ]/ f
{
1 H/ S8 x/ y6 e' J* O# H2 Z        tag_t workpart=UF_PART_ask_display_part        (        );
! \+ [5 c6 R# ^: n/ `        
6 S" s2 t5 j$ a$ H" M        UF_WEIGHT_properties_s properties;
" J- N* q6 j- [                UF_WEIGHT_exceptions_t exceptions ;, Y- J6 U: j1 s$ u: x
, H  D+ q9 k1 m$ a
                UF_WEIGHT_init_exceptions(& exceptions );# I; G; i8 Z4 A8 e( D( a, Z: B  E
                UF_WEIGHT_estab_part_props(
/ Z  G0 K0 j- c1 @                workpart,
( t( {* C* N8 n; @2 O6 j                0.999,
( g1 S7 Z/ v$ j1 i1 Y# c                true ,                UF_WEIGHT_units_gm,
7 U3 Q8 i' k5 f0 ?' H1 M, |0 |% I( n  Z) r! {" h$ q- q+ `
                & properties, 3 W  ]9 z1 n+ l+ G
                &exceptions
2 C* |9 O4 R6 A  S, `5 o9 q7 O                );
& q, F( V( \" e' `$ a* `  Y        double masscenter[3]={
5 V. i- J" [  ]6 n1 F% D  k                properties.center_of_mass[0],9 Y! k3 |  p; ?# X8 @+ {8 J. u
                properties.center_of_mass[1],
* e) E+ j7 z2 b2 T, X; v                properties.center_of_mass[2]5 h: K8 g: v$ A, {8 T8 E* X
        };5 d" ]# W1 s- @4 V
        Session::GetSession()->ListingWindow()->Open();7 q. }% d' M8 F& x
        char tt[132];$ z# o) x* X- `9 M7 U
        sprintf(tt, "x:%f\ny:%f\nz:%f\n ",
2 U# X- c8 C, v/ J9 x' ~                masscenter[0], masscenter[1], masscenter[2]);
0 |4 D: {5 h" ^        Session::GetSession()->ListingWindow()->WriteLine(tt);
% i/ `* d! N: W. z* F, H) a
+ J- f$ y  ^& F, Y! Q}

NX8_Open2.rar

8.36 KB, 下载次数: 16, 下载积分: G币 -1

售价: 3 G币  [记录]

评分

参与人数 1流量 +2 技术 +1 激情 +6 G币 +10 收起 理由
victor_tech + 2 + 1 + 6 + 10 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-22 17:13 | 显示全部楼层
ypcopy 发表于 2015-4-21 19:13, J0 D2 N5 J: A8 M3 ?! j. c
void masscenter()
5 x# c/ A/ L2 Q7 y! @) A{6 p9 O2 U: O" z  g, N
        tag_t workpart=UF_PART_ask_display_part        (        );
9 v1 X1 M" x/ k- G# l: }+ K3 e
大师,能把生成DLL文件的整个程序代码发一下吗?
回复 支持 反对

使用道具 举报

发表于 2015-4-22 19:14 | 显示全部楼层
西尔贝 发表于 2015-4-21 15:508 G/ P9 `8 S8 P
double *masscenter=new double[3];
% o+ E5 n: u% j3 m        double*acc_value=new double[11];
8 [3 _9 T+ G. L, g3 A9 k8 f( q        double*mass_props=new double ...

0 d$ P; L9 O0 K+ g* ~5 S, hmasscenter这些不用动态内存,直接数组就行了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:19 | 显示全部楼层
victor_tech 发表于 2015-4-22 19:14
, d2 _1 [( r4 E2 J& f+ d" N" @* I$ Mmasscenter这些不用动态内存,直接数组就行了!

4 X$ Y, Z+ W2 {/ M3 E: ]  R用数组了,还是不行啊,,,着急+ ~7 T' l1 ]& s$ i! w3 j
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:31 | 显示全部楼层
这是我的全代码,那块是不是有错,怎么一直得不到实体的重心位置和密度值呢
4 G: H  d4 v6 m) ]#include "afx.h"9 K* m1 O/ w, {2 s, y
#include <iostream>
  O- M$ |4 k5 z/ _0 M7 _4 j% l' p#include <uf.h>; r# R+ m, y1 m
#include "uf_part.h"4 p) l/ G* F  K; J: B: k' \
#include <uf_attr.h>
" u" X! a' ~* c$ Y6 G#include <uf_ui.h>
0 O; j- J0 U2 l5 M. g#include <uf_obj.h>
# s9 d2 x( c3 B) K3 v) K) u8 h#include "uf_modl.h"5 G; O5 v+ s6 }9 H* a. n
#include "uf_weight.h"; D) B1 J! x6 S$ E# N8 i
#include "uf_modl_types.h "# \5 }3 E! T& Q/ Y7 ?8 b
#include "stdafx.h"5 N# W2 W3 M* n  {
* b, s3 B3 I5 t8 S7 C0 z& V
using namespace std;
: j, C* X$ X$ {$ Y( g
7 t7 y; D! Q) G9 r! q* V$ Q$ Xint main()
9 `; J5 z8 D' X! @{% K0 _6 t- u/ d
        int                    nRetCode = 0;
* n5 U* G- d6 G' K9 R& e9 h        int                    rcode;
9 ]: u- M+ F8 r5 k* t    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名1 J. D3 v, G! n. J. c0 V. J, w
        tag_t                  partTag = NULL_TAG;' A; q' c  T, j  A5 B' {
        tag_t                  attrTag = NULL_TAG;
. _! m7 g9 y) h# ~: W2 j! h% |- ?, c. z        tag_t                  obj1 = NULL_TAG;
: S  m% b7 b3 I4 e% z        UF_PART_load_status_t  error_status;6 s  N  {* _6 x) D) g5 E

  r# ]6 D6 `0 Q! Q% `' @$ w        // initialize UG and print and error on failure- t. J, T" D; d# x
        rcode = UF_initialize();
+ e* j, B/ ^; `4 @
/ F6 @8 m% }# K  g$ m( m        if ( rcode )
4 t/ B/ F# x% |# ~  b, x        {1 B; i0 ]8 a. n0 U! a
                // TODO: change error code to suit your needs
9 w2 l+ V' L. `. ?7 H                cerr << _T("Fatal Error: UG initialization failed") << endl;( ~3 r8 T4 o" i- J
                nRetCode = 1;
9 q" ~7 w& q( i: E        }
( q& f+ \6 d. v+ K2 \' {" ]        else+ |/ w* Z  a! M4 f, J) ^: [( R9 a( y
        {
: i3 w5 x7 V1 ^' n  A                // TODO: code your application's behavior here. / r; I' U4 I$ ~, {0 @* r# L+ W
        //把部件载入内存
" @  w1 Y7 \9 a                UF_PART_open_quiet((char *)(LPCTSTR)  partName,
! [, P# N- G  K                                             &partTag,
4 K$ Z8 h  Q3 R. e7 w8 V; J2 w                                             &error_status);  
3 I3 ?0 ~( |9 z. u: a3 |0 ~! |( R1 c6 n( z" k2 Q  z
                //得到对象标识: L' E" M) Y( b
        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 );
: G4 t0 [, N, ^& D8 T2 D
' V2 Q8 u* S0 C                //使用这个函数把部件做为工作部件6 w; p$ ]. P- m% b8 h1 @$ [7 v% y
  UF_PART_set_display_part(partTag);
2 Q: _1 t5 M4 E. x- f" t                int i;
3 m/ x% ^9 F" n2 L9 F                char *size[3];( P' u, R$ w2 `( ~* s
                UF_UI_open_listing_window();. D) G5 h0 }: w8 X0 @# g' Y7 I
                UF_MODL_ask_block_parms(obj1,1,size);! N/ R: }6 r3 _9 ]4 P
3 d6 f6 }8 _4 q' \+ }' F
                for(i=0;i<3;i++)8 p/ C  p* a% ]% ]  I
                {$ {% I' z  _4 E
                        UF_UI_write_listing_window(size[i]);
0 J: k- |8 C" \8 _( p# o            UF_UI_write_listing_window("\n");
! n! A4 c1 d" Z                }7 O  W1 ]( r& K* v! w. f
        tag_t bodies[1];: G' i+ Q! ]6 b. o0 z
        bodies[0]=partTag;
! |8 [# H  o% g, i; C$ h        double acc_value[11];
% |) e  Z& k4 D; O. ?* h. ~        double mass_props[47];
7 r0 i$ B1 }# ~! [6 U, ]5 B6 D) e        double statistics[13];
7 C3 S  K$ ~* K9 ]        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,1,acc_value,mass_props,statistics);
7 H; a1 f$ Z$ }) M  ^                double masscenter[3]={
% t& A7 F/ @* Y7 J4 x                mass_props[3]*10,
. G5 J1 P1 x. J$ G( C$ A                mass_props[4]*10,
( }6 L4 \3 w- L9 W# a; a$ z/ D3 ~                mass_props[5]*10};' @% F' S$ X  E! a- g: w0 A
    cout << "质心x="<<masscenter[0]<< endl;
+ m) G& M% q* F        cout << "质心y="<<mass_props[4]<< endl;& c2 O  O. l3 p9 M+ G" d
        cout << "质心z="<<mass_props[5]<< endl;
  B- o* c+ N/ Z5 i; ~        cout << "密度="<<mass_props[46]<< endl;
( O( ?, q* C" T0 E2 ~& V' ?          
- h  ], Z% d" X, V  H    UF_terminate();
  k& ~8 L8 y9 v# x5 a: y4 _" Q        }' z' i1 m: Z/ X
; h3 L9 o  p' A# g& ]3 S0 S, Y4 W
        return nRetCode;) a6 g4 n. k7 S# i# C
}
2 b5 j/ D5 F1 ]  S4 w% Y
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:37 | 显示全部楼层
victor_tech 发表于 2015-4-18 11:50
  R" R! ?5 g1 v! nUF_MODL_ask_mass_props_3d

2 @) n8 e8 N' B- B: r" I' w帮我看看把那块错了
9 q% {  Q/ O9 h( h" z#include "afx.h"  U4 I% f, U/ \6 T0 H$ |- I2 G: x
#include <iostream>  g+ @  R. B5 y  Q
#include <uf.h>) L3 O$ j; h4 v9 k
#include "uf_part.h"6 |8 J( `( M3 c! c" |1 W# J. \
#include <uf_attr.h>7 d* I- K" N! `" i3 b5 B  i9 @4 l( S
#include <uf_ui.h>
# g' e6 E3 L! F2 M% g2 p; f& h& E#include <uf_obj.h>$ f; k* \1 p8 S: U( E! |6 W4 R
#include "uf_modl.h"
8 j# ?0 h2 M) v1 ~#include "uf_weight.h"# ~$ O- |% o. u8 l! |  p
#include "uf_modl_types.h "
0 x& U8 {0 T+ p1 Y' T#include "stdafx.h"' v5 D& M( Q" |% j

' b  h8 }, G. j5 vusing namespace std;
* @4 T6 P- q. |/ z' k/ r2 Z
9 {# g) t( w8 cint main()
! P% |8 C6 E: K- Y9 i; ^2 w, Q{/ a  X# E0 L, p% Q( e1 j6 t
        int                    nRetCode = 0;- Z! H- M; {, h
        int                    rcode;. F5 u  P* l$ y3 c0 ]
    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名
4 i6 V% e  t6 N& e3 n9 w        tag_t                  partTag = NULL_TAG;
0 ]/ c( V( W& g7 u1 a6 m, z5 p9 T8 N        tag_t                  attrTag = NULL_TAG;
2 \1 k' l) k& z) L2 a# }        tag_t                  obj1 = NULL_TAG;
- z# Z2 [& l1 @0 b; Q+ L9 N        UF_PART_load_status_t  error_status;2 [( n* p2 }8 q" Q+ ]" w
* C# r5 r: S. |4 ^
        // initialize UG and print and error on failure; R4 b4 R- B! k1 I8 {9 Q
        rcode = UF_initialize();
6 X; ?1 w5 |* l
$ A9 }7 ?! |; q        if ( rcode )/ t0 M/ \. Q5 A7 R5 y
        {
" K1 W3 h; s6 |                // TODO: change error code to suit your needs
1 \! d, e9 Y$ K4 R) I                cerr << _T("Fatal Error: UG initialization failed") << endl;4 K4 f; ~* Z1 c1 G/ S# ^
                nRetCode = 1;" o  w* L3 y0 i2 s+ N
        }: t* p% T8 L1 u( l4 d: z4 Z+ f
        else
) u. A8 c/ a1 ^        {
/ f+ E& O! j5 ^% [                // TODO: code your application's behavior here.
. Y  F0 R( Z6 \: m5 x) ?+ A5 m: H        //把部件载入内存, g9 j$ M( e" [3 l) L
                UF_PART_open_quiet((char *)(LPCTSTR)  partName, + A& @- s6 D% Y
                                             &partTag, $ }, v. {, V& q% }* d
                                             &error_status);  + N) M- t' p) ?# h$ Q
+ `0 }$ b5 _1 s% b6 c9 z3 D( |
                //得到对象标识
% J$ w3 \1 Q" p9 {; ~- R        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 );
. A5 ?/ R6 l6 C6 q+ E7 k  N3 e" F+ `1 }2 x: G
                //使用这个函数把部件做为工作部件6 b( b' B6 @6 |. z# S
  UF_PART_set_display_part(partTag);7 m3 p2 F. N3 G( f3 B
                int i;
5 G- K$ s! y6 t7 e$ Z5 m                char *size[3];- d# D% {2 ^% ]" E4 q/ i' a
                UF_UI_open_listing_window();
  e9 Y# W- ]- k% q                UF_MODL_ask_block_parms(obj1,1,size);" v$ t) f( X& z* x

5 _5 ]1 T" }! y& }                for(i=0;i<3;i++)9 I  p, B. l# R# t  T5 ?1 T6 O
                {  z$ _, v& U5 K5 S. u8 e, `; k
                        UF_UI_write_listing_window(size);
0 R$ e; e9 c. r1 f" }3 ]0 e            UF_UI_write_listing_window("\n");( L, d9 R% U/ G  B' x% N
                }
# e- L* t6 i8 ?3 Z        tag_t bodies[1];
  w& B6 r+ M; ?. L        bodies[0]=partTag;. T7 i4 Z6 V. H+ V' g
        double acc_value[11];
3 @/ f6 @+ n9 a! \6 e        double mass_props[47];) T  M8 e% r' T; `' l$ j3 S5 y% ]+ N) R# l
        double statistics[13];
( r# z+ w$ Y: }. z' g        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,2,acc_value,mass_props,statistics);+ n" d9 [- l: }' {4 m7 N+ K
        double masscenter[3]={- j7 L% ^; x: C8 A7 _
                mass_props[3]*10,
  K: {/ m% J/ `                mass_props[4]*10,
$ n  @4 V( t6 U3 z, n+ O0 ]& \                mass_props[5]*10};
: s, T) P- W, O# C& T    cout << "质心x="<<masscenter[0]<< endl;  Z/ p$ O* X! ?; h; K" d" V4 x
        cout << "质心y="<<mass_props[4]<< endl;
0 p) K' A; n- ^% {        cout << "质心z="<<mass_props[5]<< endl;) P5 M9 ~5 Z; M
        cout << "密度="<<mass_props[46]<< endl;
& [6 V) b0 f9 W) R$ y# o          ; U1 L  T8 M4 S1 g- Y/ [2 ?
    UF_terminate();
1 ]* M; U; f# V" M        }
. X6 H# y) m+ o3 \4 r3 m' ]0 Z  V
* Y& J, a8 |7 e; ~( c4 U6 i8 m" i        return nRetCode;
4 x8 [: Z4 A. ?: c3 Y# z}
: R+ W+ e; G& l0 g5 w5 ?
1 d" _9 S" V* a6 K  j
( J1 [+ V5 m' _7 c! j) U9 B3 y
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|关于我们|sitemap|小黑屋|Archiver|手机版|UG网-UG技术论坛-青华数控模具培训学校 ( 粤ICP备15108561号 )

GMT+8, 2025-2-19 06:24 , Processed in 0.065877 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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