青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2015-4-18 09:41 | 显示全部楼层 |阅读模式
想用二次开发的方法获取零件的密度,质量体积形心信息
( R' g; }  q+ K/ L
发表于 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];& \6 S; O% X$ h( E
        double*acc_value=new double[11];% K: t: s+ H, ?7 ?$ J" @5 C
        double*mass_props=new double[47];
6 |0 A1 s7 f. i; j) o8 |        double*statistics=new double[13];; H$ A# `5 f; S: H; C
        UF_MODL_ask_mass_props_3d(&partTag,1,1,3,1,2,acc_value,mass_props,statistics);
: t& Q* R2 x9 g/ I, E0 P+ B        masscenter[0]=mass_props[3];
4 L/ K8 b( }% d2 Z1 k5 {        masscenter[1]=mass_props[4];+ l; h7 w: p; q% O% }8 H1 Y
        masscenter[2]=mass_props[5];) g1 w% b1 A6 u7 x
我这样写得到的是5 [# z5 d: {4 n1 F$ v3 M
质心x=-6.27744e+066! E4 [# X4 ^: P4 k( V( g
质心y=-6.27744e+066
( A1 U  S% v& n3 f质心z=-6.27744e+066. V  ?$ a3 v/ V* W! a. s
是不是那块有错啊@victor_tech

点评

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

使用道具 举报

发表于 2015-4-21 19:13 | 显示全部楼层
本帖最后由 ypcopy 于 2015-4-21 19:15 编辑 & |# _8 s* ~. I& t0 V' ^/ P* V, U
( Z. T; z6 ]2 O6 {4 W
void masscenter()
( X: V/ T2 U, A2 s5 g{
5 I9 |* t$ {$ T! Q        tag_t workpart=UF_PART_ask_display_part        (        );9 ^- e/ U, b# M8 ?% j
        
2 g) D) q  }2 D; J' h/ ]        UF_WEIGHT_properties_s properties;8 g, M% u# \3 e/ L: w
                UF_WEIGHT_exceptions_t exceptions ;: Z7 r' Q. X9 D& W) B0 M5 ^$ A

" b: Y. A8 E& G. I+ o                UF_WEIGHT_init_exceptions(& exceptions );; v- B. j! x' f; l+ V- b* c
                UF_WEIGHT_estab_part_props(
+ @- N! n7 T, Q& G4 P' k                workpart, 4 Z$ T8 n2 o; |, A1 c
                0.999,
4 S7 r  ^2 Z: m- ?  i! p$ P                true ,                UF_WEIGHT_units_gm,
0 X9 O+ a1 m( m; C, {. T
  v* Z. P/ k. G7 R                & properties,
* o3 P+ w5 `# m$ R0 k0 L: I5 L                &exceptions 2 u! Q" B- _- ?2 m" _+ U: G- y
                );
# Z9 Y+ L( K+ y, U" F, b        double masscenter[3]={
( m. H' J, U% x" k                properties.center_of_mass[0],3 G! G; w3 E, h& Y8 T; l
                properties.center_of_mass[1],
+ t# W# `1 y6 O                properties.center_of_mass[2]
) C: O# ?, M4 y* W8 w        };
1 n) y; s2 y9 Z# d1 X+ U* \        Session::GetSession()->ListingWindow()->Open();
. b8 o5 S3 v" \) D        char tt[132];! n7 c) K) F4 w4 C6 V0 ?. ^- A
        sprintf(tt, "x:%f\ny:%f\nz:%f\n ",. X* U: }7 c# [$ @0 F
                masscenter[0], masscenter[1], masscenter[2]);: l, a; M3 z5 v0 j( m. k, R
        Session::GetSession()->ListingWindow()->WriteLine(tt);, q, l* L( a: k$ _
" M. p* B4 D8 o
}

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' ^/ e+ _' \8 [  Y' T3 r! |
void masscenter()4 ?# ~8 V3 b) @0 r6 {
{$ k$ @( V7 l2 D9 }
        tag_t workpart=UF_PART_ask_display_part        (        );
+ I! n+ r6 D  h1 Y- X. I
大师,能把生成DLL文件的整个程序代码发一下吗?
回复 支持 反对

使用道具 举报

发表于 2015-4-22 19:14 | 显示全部楼层
西尔贝 发表于 2015-4-21 15:506 [- t; ^% S7 Q6 p( H
double *masscenter=new double[3];
3 r& D( x+ s% f5 @        double*acc_value=new double[11];
) d) ]+ B$ @( E4 J$ z  V        double*mass_props=new double ...
5 `' C& s; b, X' |& F) i, P0 D
masscenter这些不用动态内存,直接数组就行了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:19 | 显示全部楼层
victor_tech 发表于 2015-4-22 19:14
- m4 @# L/ A7 S) a4 r7 o6 m: A: N3 hmasscenter这些不用动态内存,直接数组就行了!
! q8 f' G- ?6 ^% R5 T/ z3 R8 J* ?
用数组了,还是不行啊,,,着急
$ F' ]* O) _, j
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:31 | 显示全部楼层
这是我的全代码,那块是不是有错,怎么一直得不到实体的重心位置和密度值呢
' E! K6 W0 |# W#include "afx.h") R# T. t; F1 q0 S9 _/ ?+ F
#include <iostream>3 M8 F2 Y4 }5 K8 d" F, E
#include <uf.h>
/ {" A9 P! n+ t' ~$ J( n9 K) O/ l#include "uf_part.h"8 {8 z# E8 g: @& a# C% ?) m
#include <uf_attr.h>
$ i3 R% ]3 \' ~* Q+ |#include <uf_ui.h>3 ^0 N/ n. X3 `! y
#include <uf_obj.h>5 Y; y* s8 }$ _
#include "uf_modl.h"
8 M  r8 h" |- }% I: a#include "uf_weight.h"& v& @' |! i2 W/ H
#include "uf_modl_types.h "
4 O7 x- F  J/ n7 s" x& E#include "stdafx.h"
5 r6 D# x! Q$ _9 m. c; T1 K
3 x# g4 I: y" A2 G% K! yusing namespace std;9 w, l7 V5 f2 {
6 m0 p5 n: ]/ b$ t4 L/ V
int main()7 L" l& D2 ]- J5 u) x% c4 S. k! D
{
' Z, a8 I  q9 E' Y" m        int                    nRetCode = 0;
4 T: e5 m& S4 G8 K2 c4 g8 d3 _        int                    rcode;( _& K" Z& G  P- j5 s% l
    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名2 g1 B* s( W1 Q  Y9 B" N
        tag_t                  partTag = NULL_TAG;
& B8 h) u7 Y& t. J7 C        tag_t                  attrTag = NULL_TAG;$ U2 J9 x3 B+ X2 h9 E! }/ [7 ~. v% r2 T
        tag_t                  obj1 = NULL_TAG;6 q0 o2 L. ]; j3 Z/ Y. a/ {/ \& v
        UF_PART_load_status_t  error_status;# u* z- @5 S) J7 `) K

1 e; a- h7 j" W+ e1 {        // initialize UG and print and error on failure: u  O/ O' k0 \* [  x& a
        rcode = UF_initialize();
; M& U3 w! A( Z+ }" L' \- Y& e; Y/ F
        if ( rcode )
' _8 |* ]4 t5 P* u$ y! v/ Y4 u- H# y* E        {7 c  N: N3 u* d/ e( m4 |2 w
                // TODO: change error code to suit your needs3 U  C" X; ]$ q* [/ R0 `
                cerr << _T("Fatal Error: UG initialization failed") << endl;0 [0 P6 Z9 q2 R! e1 l
                nRetCode = 1;
% b3 C& X$ ^5 o        }
, P4 d9 `: O- L# W. q! x3 z8 C        else
9 H8 m: a2 I$ h# ~7 O! V6 `% w5 g        {
0 \( p" e5 V3 ~+ ?                // TODO: code your application's behavior here. $ D8 b8 e5 H- m- O! E0 c7 M
        //把部件载入内存
/ A  C+ Q/ I% y& A4 L                UF_PART_open_quiet((char *)(LPCTSTR)  partName, / n7 G3 k( K) |% f
                                             &partTag, # L, q7 N& H) u
                                             &error_status);  , j' S6 d, @: x( ~/ ]+ g4 x1 x; z, @

+ J0 }' b: d9 g% a                //得到对象标识1 z. M4 S7 N, l$ s
        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 ); " o/ y' H4 w, K
0 o6 p7 T4 f2 ]/ b9 Y
                //使用这个函数把部件做为工作部件* _1 _% F# I$ i! F# o# O
  UF_PART_set_display_part(partTag);
( O& c& O) X1 ^* i7 p                int i;
, Z9 s9 u+ y& O+ K4 E                char *size[3];
) j1 Q! o0 ]7 q( X5 ^$ d+ d                UF_UI_open_listing_window();( c3 H, R3 b4 N  u) J
                UF_MODL_ask_block_parms(obj1,1,size);
/ d) M# u( _4 [* p- Q8 \3 g) A; h* Q% [- A- _
                for(i=0;i<3;i++)
+ k1 e: h! v6 C" s                {4 {) |8 w4 |) f% O. r$ L
                        UF_UI_write_listing_window(size[i]);1 b9 |/ S' B) C( o
            UF_UI_write_listing_window("\n");
  i% U5 g+ A( }# C" g9 r                }/ m. }9 T8 {# r# K- v! P# n1 t
        tag_t bodies[1];; `! D; X$ J4 P+ z' B4 W: T5 g
        bodies[0]=partTag;
4 w, E; K, v2 E5 e" A  `' B        double acc_value[11];
% ^/ A# J4 h( f: Z' d        double mass_props[47];3 q6 l4 @& M* @, H0 ?8 |; h, j
        double statistics[13];) a  ?; V7 {  i: h
        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,1,acc_value,mass_props,statistics);5 B. J/ b# _; B: O3 ]! I4 {
                double masscenter[3]={- C1 ?. r. z! D& R- d
                mass_props[3]*10,' B/ e9 H3 T% T" b& t9 B
                mass_props[4]*10,1 h( ?  `0 a) _
                mass_props[5]*10};  _5 W* Q2 ~+ ?+ |
    cout << "质心x="<<masscenter[0]<< endl;. q3 u2 b+ u4 ?$ u6 r( W) s
        cout << "质心y="<<mass_props[4]<< endl;
+ L& T! T% M4 ^0 i$ Q        cout << "质心z="<<mass_props[5]<< endl;3 H5 K/ |6 |9 [7 W& {% j
        cout << "密度="<<mass_props[46]<< endl;
; Z2 V' O# @7 U7 ^0 c. H" J8 U          
$ h2 v5 l9 x6 w. E    UF_terminate();& T+ K2 D/ P# o! F4 D
        }
, n: y  e9 q6 b$ a$ R) Y5 `, k6 {  D; l1 o! n
        return nRetCode;7 O( @; r) t! ?: `* E0 f* P
}6 t4 w. f! V. K1 o/ o9 `
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:37 | 显示全部楼层
victor_tech 发表于 2015-4-18 11:50' D9 s: Y  Y: V" x2 {$ n
UF_MODL_ask_mass_props_3d
" k! v. s: I+ S- [5 o, E9 i; @
帮我看看把那块错了  O' [+ x3 X# K$ C" _. M
#include "afx.h"* p5 @% x8 ^) r$ }# L* \
#include <iostream>7 M- u$ J( s$ G. K
#include <uf.h>& k1 m8 |) q& x; t2 W; S/ B$ D" @
#include "uf_part.h"
5 D2 g4 m& g/ w8 P#include <uf_attr.h>
4 y, e8 A1 U( f7 S7 J2 F( \#include <uf_ui.h>: Q% H1 |2 F- Y
#include <uf_obj.h>
8 q2 ^) u9 P$ J#include "uf_modl.h"
4 F: b* S* [6 ~) i#include "uf_weight.h"7 \; z4 \  p7 m# _
#include "uf_modl_types.h "/ ^( j1 E& x' ^* y4 ?
#include "stdafx.h"
5 E4 ]  x& i3 u% `& {
! x0 g7 t  o% A" q& @% Musing namespace std;
# \& G* ^# {; c/ L9 h) S
; i+ [* c2 K( f- P0 j1 [int main()
  ]; i: D9 M* I: h{& C# Z: r8 f; I5 a. n: N; B( z4 C
        int                    nRetCode = 0;+ v8 G# e3 b1 K% {2 x( |
        int                    rcode;6 \/ i2 j3 E3 l: Y$ m1 E; y
    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名
; ]& n; ?$ w( Z* d  {' ^        tag_t                  partTag = NULL_TAG;/ J$ Y. e2 ^# H* A
        tag_t                  attrTag = NULL_TAG;
0 `/ N$ J( S/ d5 K$ {$ t        tag_t                  obj1 = NULL_TAG;, u; G$ H  W0 ?# F; t$ L2 X
        UF_PART_load_status_t  error_status;" X/ Z6 n" |5 y( Z- L: X7 M
" C4 ~. C: o4 n; i0 f0 V  z  Q
        // initialize UG and print and error on failure
8 u( L8 i& p' e8 w        rcode = UF_initialize();
5 C; V" ]7 J1 z$ J
: P7 t, Z3 I5 ]% _' g' n        if ( rcode )
4 ]2 X1 p  J* ~8 h        {
. Z% w" m) D( y3 p: C1 y0 Y                // TODO: change error code to suit your needs
8 B# n% ^. s& g; d( m                cerr << _T("Fatal Error: UG initialization failed") << endl;
: F: H% z3 ~5 f) Q& c$ i                nRetCode = 1;
  s8 g! [& t$ M6 ]! c% \3 T5 [& C8 c        }
" I3 M& q7 P' [# b0 E        else
! O# x$ i8 v6 h% C  u/ p2 D        {
; o5 \5 S$ F0 W+ _, l* n/ ^8 {! o                // TODO: code your application's behavior here.
+ b0 |2 G$ v% i% [% w$ ?8 K: s( L        //把部件载入内存6 S+ s. Y' E: Y
                UF_PART_open_quiet((char *)(LPCTSTR)  partName,
& U( W0 z, B4 q. n! U. Y- ?) _8 M                                             &partTag, 7 |: I) p  e3 K0 \0 B; ~: C
                                             &error_status);  
$ a. y0 A$ W1 i  W+ s: l1 I* a/ y# Y  S7 O' F0 ^* P; y
                //得到对象标识. b, ]0 u  H6 p) e* y
        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 ); 9 X8 X2 b# e; z+ K7 S% d* H

# m( d) z& f- i                //使用这个函数把部件做为工作部件  e: l. J! t- }! B! k- u
  UF_PART_set_display_part(partTag);
% f' l' L  T5 R$ Y% o' a                int i;
3 @, Y( D3 }3 G$ B% M9 `                char *size[3];% b* p, z# C* c3 e( Z  n
                UF_UI_open_listing_window();
: V, Q0 X: ^( ^7 c- O                UF_MODL_ask_block_parms(obj1,1,size);* f) Z' Z& |6 J( O$ P
* Q; |3 J; M9 ]3 W
                for(i=0;i<3;i++)
+ T' D6 o$ \- ?                {: l4 Y5 B6 l3 E
                        UF_UI_write_listing_window(size);
& x, Y- A) {$ n! o# i            UF_UI_write_listing_window("\n");% [# r7 h* \+ h) R
                }5 K: f9 C8 E; m: b( i( C8 Q1 ^
        tag_t bodies[1];
+ {+ {$ S  @( ?8 S% A        bodies[0]=partTag;4 E7 D/ L% H# W7 M, p
        double acc_value[11];
2 a$ W& t/ \- l) E: d        double mass_props[47];+ q/ \* ~3 p7 ~$ Q3 w$ ?
        double statistics[13];
- l3 H$ C& r. o; M# P& L        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,2,acc_value,mass_props,statistics);6 i6 o* Y: T  l* G$ U8 Q2 X* g/ h( J
        double masscenter[3]={
$ T" z2 o" S* Z) W7 t2 w% W                mass_props[3]*10,  T7 U- a3 M' _/ P7 a9 j$ M
                mass_props[4]*10,
& }* |( P) d7 U6 l9 R' \8 p$ }                mass_props[5]*10};
/ i: ~& e. u% S: W2 T! q    cout << "质心x="<<masscenter[0]<< endl;: B5 J4 g3 ?. h0 O; ?; {6 V
        cout << "质心y="<<mass_props[4]<< endl;
, a* T- h  m: S- Q! {# L        cout << "质心z="<<mass_props[5]<< endl;
' }3 k4 \! d3 S0 c" K        cout << "密度="<<mass_props[46]<< endl;
& o) F& ^; Z! @8 ?4 H' V  n0 A7 J! k          1 }8 S' c2 V. |; K
    UF_terminate();; h; @/ ^+ @: V
        }
1 h( K9 z! q/ T, X' Z$ }$ k( y7 `6 k
        return nRetCode;' R. @& b# O1 m: M# Q1 K
}
; y+ ]% O  _+ Q9 z" o
8 H1 Q# }! |2 `
( A% e. d4 @( }( z
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 16:43 , Processed in 0.063731 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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