青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2015-4-18 09:41 | 显示全部楼层 |阅读模式
想用二次开发的方法获取零件的密度,质量体积形心信息5 ?- B! P6 M" r: T. P) t9 V
发表于 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];2 F' `4 U; |% r$ U: T
        double*acc_value=new double[11];
  I3 v. m! T+ g* ^7 t8 K1 M        double*mass_props=new double[47];* n, w# W5 X/ V' s2 D# @# ~2 h6 B
        double*statistics=new double[13];* G+ K# _& x5 z' x! H7 I# s
        UF_MODL_ask_mass_props_3d(&partTag,1,1,3,1,2,acc_value,mass_props,statistics);
* ~0 z7 E, S: C& R' ~, S        masscenter[0]=mass_props[3];
! ^! V* ~" U4 s) ^8 r( ?        masscenter[1]=mass_props[4];
6 Z( K9 k" G6 w" ^  ^2 |& [9 j0 o        masscenter[2]=mass_props[5];9 r: C5 `0 k8 [7 V- G
我这样写得到的是& S+ V1 V* i! W
质心x=-6.27744e+066
9 o5 i- p6 K( V6 l& h质心y=-6.27744e+0663 {1 H3 x7 R. P6 `  X  p
质心z=-6.27744e+066. c, t* J% X- M( d% {# q9 m# n* {+ L
是不是那块有错啊@victor_tech

点评

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

使用道具 举报

发表于 2015-4-21 19:13 | 显示全部楼层
本帖最后由 ypcopy 于 2015-4-21 19:15 编辑
. \4 i# L# |! `$ m* }0 v$ c
5 N  C. H2 X: x# g' z$ Uvoid masscenter()" @7 U3 C+ q7 n. t2 t7 A+ L- J
{" E& n" ?8 V/ {
        tag_t workpart=UF_PART_ask_display_part        (        );1 A+ H. M! }: ~4 l2 |2 O
        
- m0 Q% R. a: ]3 T2 ^! \; {$ D9 o        UF_WEIGHT_properties_s properties;
* g$ I, _7 ?# a+ P9 r5 Z                UF_WEIGHT_exceptions_t exceptions ;
+ h+ O3 {; {8 r5 a! x
% ]9 W3 p, o( l  X                UF_WEIGHT_init_exceptions(& exceptions );. y; |0 Y( z7 i3 l# K+ o9 e
                UF_WEIGHT_estab_part_props(9 b" |* V& p( H( ], t( ]
                workpart,
% k% H8 t6 }, O8 E                0.999, ; e% V1 x' }$ Q, F
                true ,                UF_WEIGHT_units_gm,
/ W1 X- P! V. V4 `; e+ z3 ?' Z4 f6 T
                & properties,
5 B+ s! m) c& C                &exceptions
" v* ]& L4 j. b9 A! G& H( t  q                );( R. A" T, b' f  N& Q! @7 {( L4 `
        double masscenter[3]={
/ K& L5 Q. ]4 Y# s! m                properties.center_of_mass[0],
  K6 l& n" x& a* L. ^                properties.center_of_mass[1],
" H" g5 O, X' z2 Y" t8 H. d                properties.center_of_mass[2]
6 K" q& F1 ?3 [6 ^  G5 Y( q        };
  L4 f# d/ W- U, }8 J        Session::GetSession()->ListingWindow()->Open();
8 X3 v# a  ?( e4 i4 H! f, ~        char tt[132];$ X* t1 H5 S/ i. D  b; H
        sprintf(tt, "x:%f\ny:%f\nz:%f\n ",
2 o  w/ B3 i4 v6 H) F                masscenter[0], masscenter[1], masscenter[2]);
8 c* h% {- V6 c- @* d4 x( E        Session::GetSession()->ListingWindow()->WriteLine(tt);
% F$ O* T$ o: p; H
6 Y7 u$ r: N5 P. _8 r6 \+ w}

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
/ @  R6 M$ X2 t0 ?2 R6 X/ s! {5 Jvoid masscenter()
) L/ u% r0 N! G( Y{3 e6 z, F  G" Q  n, d
        tag_t workpart=UF_PART_ask_display_part        (        );
2 Z8 c+ M" y, J: E# e
大师,能把生成DLL文件的整个程序代码发一下吗?
回复 支持 反对

使用道具 举报

发表于 2015-4-22 19:14 | 显示全部楼层
西尔贝 发表于 2015-4-21 15:50
% P* Y7 l, d' r7 W* m- ]double *masscenter=new double[3];
3 J/ y5 P5 J/ Y9 @8 a8 f* G        double*acc_value=new double[11];
  V/ Y; @1 |. \; ^0 H        double*mass_props=new double ...
& {( L) A" ?$ D; a/ r
masscenter这些不用动态内存,直接数组就行了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:19 | 显示全部楼层
victor_tech 发表于 2015-4-22 19:14
- `% O* i  b; k) A1 h) ^masscenter这些不用动态内存,直接数组就行了!

: j" t! p6 L" A1 J' K用数组了,还是不行啊,,,着急
. [; N4 W" H) z. V
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:31 | 显示全部楼层
这是我的全代码,那块是不是有错,怎么一直得不到实体的重心位置和密度值呢
8 w# c. Y3 ^+ Z# D  w) w2 @- Z! f  a#include "afx.h"
! W( m8 K' c9 Z. y#include <iostream>% F2 G  M  K- K+ `! Q
#include <uf.h>
* W  T0 M  A7 [8 ]- c6 b#include "uf_part.h"
0 @6 {, f) m& \' P! q, P9 D#include <uf_attr.h>
: B* {; q- F  i8 Q6 X#include <uf_ui.h>
9 z% x1 [# T: V% q; [& W0 }#include <uf_obj.h>: i* J, a/ h$ K9 u1 S
#include "uf_modl.h", U  R$ e6 D8 m7 U$ a% G$ j
#include "uf_weight.h"; i: d. s1 p: Z$ }" |0 w/ X
#include "uf_modl_types.h "
3 x$ i  p- [2 c5 }+ `3 M#include "stdafx.h"+ ^' Q4 x0 A+ k+ j

* k8 M! n! w% z! R( D& Gusing namespace std;7 N! P# w' {1 p6 X" V1 C8 v# g

' T3 X5 C. g5 l! n8 T" g) {int main()8 m: y% m, c% p' O* v
{7 z2 c! t: J" i( T1 W6 A/ d4 D4 f+ p6 N
        int                    nRetCode = 0;
& q$ E9 A# s2 O' T        int                    rcode;2 g9 t+ e( G) j
    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名
$ W: `, C( [) w7 |. J, q        tag_t                  partTag = NULL_TAG;; u  D6 f6 L8 t: e" y" X  J
        tag_t                  attrTag = NULL_TAG;
- d) ], p5 `( J! M1 H# M( B        tag_t                  obj1 = NULL_TAG;, A7 p) i% |; B
        UF_PART_load_status_t  error_status;# P( d0 c+ q4 b3 b

( ]- J. p" s  T, h6 U) U! N        // initialize UG and print and error on failure
8 r  |' @! [; s        rcode = UF_initialize();
& q: Y! J* W  ^4 Z. I" }6 B) B1 c! {7 q% S. F- x) P
        if ( rcode )
$ `) S! Q  |7 A5 P( r  v! {7 S        {. ~; x/ u, }0 i" u
                // TODO: change error code to suit your needs
0 s) |" p$ z* ^& p; w                cerr << _T("Fatal Error: UG initialization failed") << endl;
* |8 A1 q) E2 y8 F) g8 G2 c; ^0 k                nRetCode = 1;
$ T2 Q& H' D* L* m) j5 Q6 Q        }
! Z( L( f2 [7 [  U4 u        else
7 P( _- E9 i. E- a+ ]        {( a7 x# S+ y( d
                // TODO: code your application's behavior here. 3 W! @1 X  G. i( e  \
        //把部件载入内存
1 h. n5 u! `3 }, n/ I                UF_PART_open_quiet((char *)(LPCTSTR)  partName,
6 d" D7 y" i7 |* s                                             &partTag, ; [# }* R, q; Q# K9 o4 \) j; O7 q' o
                                             &error_status);  9 w7 M8 R# b, @8 \- w: b% r# ^
3 z$ y* j) i  O
                //得到对象标识$ D( ]& X2 i& A, L: H9 Q; q9 t
        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 ); 8 d# b# i9 C. ]  Z' x
6 x  s2 \/ g$ n/ O
                //使用这个函数把部件做为工作部件
7 j, _9 S: z. P6 p) T  UF_PART_set_display_part(partTag);
6 A, M% T6 o9 ]                int i;' q6 s3 F' t$ J/ o8 Y0 k4 |
                char *size[3];
0 e- c# Y( U' S; H( U% @                UF_UI_open_listing_window();
4 ?1 R/ D1 a9 }* M/ D                UF_MODL_ask_block_parms(obj1,1,size);
6 a& y2 {* z8 G% A# V
& o2 R! K, G9 q3 j- n7 G                for(i=0;i<3;i++)1 O" m, u4 \3 C4 `
                {
: r5 Y1 T) |' r( Y3 k* Z- S                        UF_UI_write_listing_window(size[i]);" C7 ~1 b" A0 p
            UF_UI_write_listing_window("\n");
( ]1 r) y! h& R) Z" J6 F; ]                }) W0 i; L6 B1 H
        tag_t bodies[1];
5 F) F# C7 ?1 S        bodies[0]=partTag;( |/ v/ \* s$ q2 l1 k1 h- v; q! f
        double acc_value[11];
/ i% ^1 \# G7 b, F1 Q: x        double mass_props[47];
3 k/ Q) ^: D* f' z8 O' P+ E        double statistics[13];: g* S) |2 @7 w' [( M1 [
        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,1,acc_value,mass_props,statistics);
1 G# [! c! s+ w5 S  j                double masscenter[3]={" M. p. n7 Z) b4 t  D
                mass_props[3]*10,6 J! K5 z% n  z5 k$ P! w1 D
                mass_props[4]*10,4 u7 n8 p1 f! Z# H2 E6 O
                mass_props[5]*10};! @( @' K9 m: d* M( s
    cout << "质心x="<<masscenter[0]<< endl;
' Y1 P+ G2 X* ~: s# j. g! |* w- V, J5 ~        cout << "质心y="<<mass_props[4]<< endl;2 V# I) {! X$ M4 a7 s
        cout << "质心z="<<mass_props[5]<< endl;
' k& @5 r0 o+ i' x+ I1 u% K" O        cout << "密度="<<mass_props[46]<< endl;
* t! [5 j! w# Q9 G6 Y' t5 g          
' y2 p, {2 x8 `+ F7 u( }    UF_terminate();
) D9 w3 D- W, @5 @/ T8 e        }
& h& ^3 K! }  ^$ _  j7 ~" D
1 H8 B, }$ S9 @        return nRetCode;6 Y2 k5 Q  ]" |- ]6 M7 y, G; u
}% f# ~  [9 O$ D, R" \  A4 H
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:37 | 显示全部楼层
victor_tech 发表于 2015-4-18 11:50
4 ^3 x& d6 a. q% S* v; }4 r6 F- |8 BUF_MODL_ask_mass_props_3d

0 }1 |; o5 A# c8 B) U帮我看看把那块错了' F/ \; \  N1 G$ m9 C9 e/ k
#include "afx.h"
; l/ Q- }+ a- w7 b' q! v# T#include <iostream>) _/ R. j1 j  T3 r2 H6 a9 ]
#include <uf.h>
5 S9 v6 m7 N! R; Y2 c' i#include "uf_part.h"( ~% T" b4 h5 ?3 {7 E
#include <uf_attr.h>
/ Q% r4 y# M& G+ a5 \# m#include <uf_ui.h>
. ]6 l$ T3 L4 G#include <uf_obj.h>& [( b" t+ z% E4 y
#include "uf_modl.h"
* |) O4 l% [! c$ A+ ]2 D, b#include "uf_weight.h"% m# @) o8 s. k" ?
#include "uf_modl_types.h "* |" \6 d2 \3 E
#include "stdafx.h"
. ]2 u) I3 g. s! S& N3 h% ^3 f. D) G# ?) R
using namespace std;
( F' w3 M, J" T- _2 \8 |' ]3 H/ _1 N( w5 j0 e4 @, w0 @
int main()0 V. U. t: ~! w! ^: ^- ^# k
{
- d- {1 f) H6 H1 J5 B* W        int                    nRetCode = 0;1 f' w* K; N( b' F
        int                    rcode;7 t, W- r* w" a' a2 B+ ]
    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名
  p5 o) h: r- i        tag_t                  partTag = NULL_TAG;5 a( M& F1 i$ e
        tag_t                  attrTag = NULL_TAG;8 ]) L' c% X# s. [/ v
        tag_t                  obj1 = NULL_TAG;
0 M8 N7 O. v! Q/ m% G, h        UF_PART_load_status_t  error_status;( m* V/ K4 D) g6 Y$ Z6 `* Y
) n' h* B+ q, f
        // initialize UG and print and error on failure6 u9 t, k+ B) `
        rcode = UF_initialize();4 L0 p6 B6 s3 L- d
/ ^. z; h/ W7 f& p
        if ( rcode )0 ?" p: M1 k) T2 R6 T
        {8 V, y8 K0 [2 u1 T6 }+ K! {
                // TODO: change error code to suit your needs
0 n3 l" ?/ h0 r) Z; R( w7 M& U                cerr << _T("Fatal Error: UG initialization failed") << endl;3 V0 f$ |" `) m- w  Q$ k
                nRetCode = 1;
$ E3 }" c3 C. ^! b        }! B! m7 J3 Y* I% a' x
        else
# E" P: h  ~- t6 G3 f, ~- i        {1 [1 x  b; t' D# q# X, D: R# K# L+ I
                // TODO: code your application's behavior here. , T' R' g( ~7 h) M& s& t
        //把部件载入内存2 z5 C  s; x# I+ [7 d
                UF_PART_open_quiet((char *)(LPCTSTR)  partName, * h  b. S3 L' C: q/ l
                                             &partTag, 8 c$ X. U9 [1 C0 {( {8 T/ R
                                             &error_status);  3 M# ^% Z, N; [9 L. ~+ @# A
+ S' D# ]1 H7 n/ \- ~# m* H- n
                //得到对象标识
1 P- u6 e3 R5 v" Y8 {8 b& r        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 ); 9 D  U  }% H( c- O

* z0 J+ }$ y+ A/ G, N) Y$ c9 s                //使用这个函数把部件做为工作部件) E3 \  F1 D4 ]: }7 T8 Z* S0 r
  UF_PART_set_display_part(partTag);
7 i0 {+ P5 }- U5 f- }! y# b                int i;
5 t8 |4 o- Z6 [0 x( w% {! K, `                char *size[3];2 N9 P7 [, k+ V" ~
                UF_UI_open_listing_window();
3 _6 [5 N& V8 p* R                UF_MODL_ask_block_parms(obj1,1,size);: O5 o3 O3 ^) t( I

5 g+ O" H  n6 O/ _; j2 L% @) a! \+ m                for(i=0;i<3;i++)
# q0 f+ \  ^( i, O                {
$ P0 R( [0 q0 d/ m. D3 Y8 K5 N1 M/ o                        UF_UI_write_listing_window(size);
* D+ [8 p9 E( S            UF_UI_write_listing_window("\n");( u' P  V, U% H! V$ R% k; G$ u
                }; l  n+ A* a! Y: t
        tag_t bodies[1];# X2 K" B# D& n& Q( `
        bodies[0]=partTag;3 k) G3 v, S) v7 m9 \+ \1 w7 S8 ]# W
        double acc_value[11];
% p: Q' L/ U' |( n: w5 J        double mass_props[47];
5 Y7 I2 d* U/ M* T  I( S  I# A        double statistics[13];
; q! m; M- V- R( V' p' N        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,2,acc_value,mass_props,statistics);) D2 D7 N2 x' O: A
        double masscenter[3]={
2 S: }7 V: |) o/ D: v7 b6 W                mass_props[3]*10,7 K5 i$ j# L# P* N
                mass_props[4]*10,9 C4 Y" @( I# M4 A( M
                mass_props[5]*10};+ F6 `, y$ z: ?1 V( B- n
    cout << "质心x="<<masscenter[0]<< endl;
0 t: w4 z$ k) e$ c* c, m1 u        cout << "质心y="<<mass_props[4]<< endl;4 L% x! N) n' n4 |/ c1 f8 B4 G
        cout << "质心z="<<mass_props[5]<< endl;* ~, T& N3 `4 O
        cout << "密度="<<mass_props[46]<< endl;
' U4 S0 k" U, D2 K5 e* S0 z: O- I; J7 ~          $ L) D1 a; l8 R; k8 Q; Y, |, J4 G8 f
    UF_terminate();
. Y; i/ B9 L( C, Z- J) ]        }
3 g5 b( k) r7 ]* F3 f
$ c5 J1 x2 e( G7 ?. }* o7 `0 P        return nRetCode;
" G0 K3 j5 i2 p) {/ g}
. X8 W5 z: X' R
( U* e- A  @$ z- L1 `! ^0 d
" G1 }, {4 z& J' V
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 07:48 , Processed in 0.083277 second(s), 29 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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