青华模具培训学校

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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

[复制链接]
发表于 2015-4-18 09:41 | 显示全部楼层 |阅读模式
想用二次开发的方法获取零件的密度,质量体积形心信息
$ T3 \7 w5 I! J
发表于 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];
- K$ q/ Z. h. `! S; F( |        double*acc_value=new double[11];
$ l: ?5 n( u) X% T4 ]; {# g; X        double*mass_props=new double[47];
- b  }( D' v! m, j: Y. ^6 e& Q4 {        double*statistics=new double[13];
- ^! s- ?, V) v7 T" q5 w        UF_MODL_ask_mass_props_3d(&partTag,1,1,3,1,2,acc_value,mass_props,statistics);
* h! J  ^' f6 }        masscenter[0]=mass_props[3];
2 U$ s1 ^9 z- U# w8 e7 s        masscenter[1]=mass_props[4];
/ y" I$ \; y0 X$ ]1 u+ r( i$ O        masscenter[2]=mass_props[5];
( V; o* `6 {$ A$ X6 ?/ B* [我这样写得到的是
; E; m" c; t' \3 G0 P0 }质心x=-6.27744e+0669 i" Z# F; T7 ^+ I# k1 W! x
质心y=-6.27744e+066
6 l3 w8 o" l: N质心z=-6.27744e+066. B- N' o+ I* {* C
是不是那块有错啊@victor_tech

点评

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

使用道具 举报

发表于 2015-4-21 19:13 | 显示全部楼层
本帖最后由 ypcopy 于 2015-4-21 19:15 编辑 8 p. @9 V* {# y5 o2 S
% u2 f/ M9 M) o6 _2 d7 h7 H9 q
void masscenter()+ O$ a! p' D( j7 z: n
{5 `0 l+ w( O, b  ^- ^
        tag_t workpart=UF_PART_ask_display_part        (        );
! k/ b. \( I" X6 w! `        
$ c4 R, I, ~7 b1 Q, M        UF_WEIGHT_properties_s properties;
1 i7 x3 Q% K' `$ x* P' X, r                UF_WEIGHT_exceptions_t exceptions ;9 ^$ a: F! x" m& }# C) z& S. ?
6 s9 }+ e$ f, i
                UF_WEIGHT_init_exceptions(& exceptions );
: v5 l2 S- X" r: O3 A                UF_WEIGHT_estab_part_props(% W) C8 h! F- b0 Y# [
                workpart, 7 _5 b/ G; k) @6 }) d1 {
                0.999,
5 F5 @7 Y! q- H( ~5 a' t7 I% g                true ,                UF_WEIGHT_units_gm, 7 U) l: Y. c% t+ i% u

. u+ ]1 A7 \* }2 {2 T4 B- v                & properties,
$ |  p4 g; {, Q                &exceptions " q" T4 T- \+ n! t# U; v
                );
% h+ B( @6 V- E7 W        double masscenter[3]={/ |0 d; B4 K7 F1 T
                properties.center_of_mass[0],
2 ]1 C  a, O, T# C: B3 ]                properties.center_of_mass[1],& l: c' Y2 E  X3 q3 S6 ~
                properties.center_of_mass[2]' S1 Z$ W# \; \3 z" J+ ~
        };
' l& J8 e+ f& Y  C        Session::GetSession()->ListingWindow()->Open();
2 ?8 R5 \, \2 M/ r; _        char tt[132];4 Y' Z0 s4 q! s* H- W
        sprintf(tt, "x:%f\ny:%f\nz:%f\n ",
% F, Q. d! j( d. I% h                masscenter[0], masscenter[1], masscenter[2]);
$ w5 a: V2 B  {+ t. |        Session::GetSession()->ListingWindow()->WriteLine(tt);
  a) d6 c* \; `9 Z$ t8 q4 L+ W+ w8 p0 s
}

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) @* o9 O3 R+ w0 t% n3 e
void masscenter()
- G0 q7 Z+ D- T7 a$ w2 [/ c{
/ t5 h+ [3 g6 o, ~        tag_t workpart=UF_PART_ask_display_part        (        );
8 K. _% x* N9 H& k7 S% n
大师,能把生成DLL文件的整个程序代码发一下吗?
回复 支持 反对

使用道具 举报

发表于 2015-4-22 19:14 | 显示全部楼层
西尔贝 发表于 2015-4-21 15:50$ S% A) Y( M, o4 d% }8 I
double *masscenter=new double[3];+ B/ ^$ Q( |+ ]
        double*acc_value=new double[11];
9 D. [& Z5 d- E: V6 F8 Z9 {        double*mass_props=new double ...
" z) V' h6 L  N2 F1 z' i
masscenter这些不用动态内存,直接数组就行了!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:19 | 显示全部楼层
victor_tech 发表于 2015-4-22 19:14
" q# A. H8 ?8 H" X( ^) f8 lmasscenter这些不用动态内存,直接数组就行了!

/ O' z2 @$ G' u! H, Q2 r用数组了,还是不行啊,,,着急
5 H# I* c+ V' z4 p
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:31 | 显示全部楼层
这是我的全代码,那块是不是有错,怎么一直得不到实体的重心位置和密度值呢* U- \6 N* G" E& W1 [
#include "afx.h"
3 R. s2 c& y. V7 z' }/ Z#include <iostream>
/ O) O- b# K: O( x: `9 x3 \+ V+ q4 F. ?#include <uf.h>( j: m6 [) q% y8 r, U+ p
#include "uf_part.h"5 E$ S% T) G: W( o9 K1 d
#include <uf_attr.h>* v; u% \! r' N2 ?  C" ~
#include <uf_ui.h>
! H0 g/ b8 O5 A$ x" O. \1 l; S2 m#include <uf_obj.h>
# p# m* w( y( ~; f( b3 \2 i0 L#include "uf_modl.h"
* `+ k. W# j: j! B" ~#include "uf_weight.h"
. k5 F% u) }9 M4 N0 v0 B' E+ f#include "uf_modl_types.h "
% d/ g, Z; t# S7 C$ {, r% d9 V#include "stdafx.h"
5 W) B' H: T( U# m& U* E0 C
0 W: k! \% T- R* ~- G' _9 ]using namespace std;
& L. A0 B# {5 b2 H
9 R' w5 g9 v" a2 P9 @: eint main()
% ^4 ]2 R1 D9 ^- [7 J{
% ?, y3 P5 ?2 K- X4 L4 J8 E3 t7 w        int                    nRetCode = 0;
7 W9 y; d# u& D        int                    rcode;
8 G  j3 V2 O$ ^1 f    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名
/ \3 Y  h  }" h) v! w# c        tag_t                  partTag = NULL_TAG;
, I, Z+ E" Y8 Q. p& B        tag_t                  attrTag = NULL_TAG;" `, C6 L; h" ]( u
        tag_t                  obj1 = NULL_TAG;" _7 o, ?" @9 _# A1 x
        UF_PART_load_status_t  error_status;
" I4 P+ S/ ~. f1 M. y
& H: o% @+ W# i; ~6 M        // initialize UG and print and error on failure
# h! O9 }$ E% n+ m0 x, ?        rcode = UF_initialize();6 r  F" Q9 x8 j7 Y, J# L
8 p7 e; p" Q# b# R9 F! s
        if ( rcode )& X; \) Q8 s- P& {( g1 }" c
        {
5 x3 z2 _4 R( F5 N% j* Z. H" y                // TODO: change error code to suit your needs; A6 P$ U( W# x( f  t2 I7 |$ u. z
                cerr << _T("Fatal Error: UG initialization failed") << endl;& _* ^. p9 C( ^# R
                nRetCode = 1;
" ]8 l: J. u  e+ w. P7 l! V        }
2 |* P% l! ]; p' e# I0 k        else
8 b6 ]  D) p- v  \. ^! ^' \        {
  a! d/ d6 p  o: i4 k8 v                // TODO: code your application's behavior here.
! l3 j, m" q$ V3 q; r        //把部件载入内存% k' A5 x. x5 y
                UF_PART_open_quiet((char *)(LPCTSTR)  partName,
* F: Y( r2 e: y; a) n                                             &partTag,
3 l! ]. m# C$ z9 T7 z; A. Y( i                                             &error_status);  : K7 n# g( P% @6 T1 [( o$ s

  Z  e) s7 x1 b                //得到对象标识2 y8 ^$ K6 |: i3 j6 o! p
        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 ); " i5 x# W4 R( I5 ?
% J- P. c8 N! K
                //使用这个函数把部件做为工作部件& c+ ~. T9 ^' }8 i) O
  UF_PART_set_display_part(partTag);
" M! }3 Y. ~3 W( s& Z6 Y                int i;
8 H8 p( K4 Y& w                char *size[3];4 U3 s! C: ], V7 n. Q
                UF_UI_open_listing_window();3 w# t0 H/ {& j1 L
                UF_MODL_ask_block_parms(obj1,1,size);+ n; j. C! T$ M3 D( W- B% }4 u" w" ^. [

7 Z0 @! {4 K# c; P7 f                for(i=0;i<3;i++)1 x: Q5 b) X# }6 q3 @* Z
                {
9 K7 W- }+ j5 W                        UF_UI_write_listing_window(size[i]);1 L. c  d! P# h2 g
            UF_UI_write_listing_window("\n");
7 F2 z$ c# H& |% m; h9 L$ R0 c                }
+ I5 w& ~. e  P, I) R! P        tag_t bodies[1];
* ]- S) A# D$ Q6 y- O& t, `        bodies[0]=partTag;
( f9 V' c8 t* {4 k" H0 k        double acc_value[11];
: b! X8 x$ J( S1 o) _        double mass_props[47];
* I# e8 E# d  g3 P; |4 B/ k7 C        double statistics[13];+ }4 N* N( d6 g; F4 W) m; `+ V
        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,1,acc_value,mass_props,statistics);
& G# K# V8 @: Z; h6 A5 T% \2 x# G                double masscenter[3]={, y; |5 _7 a9 b  |4 Q# E9 F
                mass_props[3]*10,4 h( B" K! S  Y+ u/ _; |. u8 t! n
                mass_props[4]*10,
& V6 w5 W& A" _: T                mass_props[5]*10};
/ m, E3 ]( [, e6 S% V    cout << "质心x="<<masscenter[0]<< endl;
; K" ~3 ^4 ^* t0 |% P# W        cout << "质心y="<<mass_props[4]<< endl;
3 _4 g3 e+ ?( d% Q# B1 Y        cout << "质心z="<<mass_props[5]<< endl;
& b1 ^5 y# f4 F4 r0 c$ s9 g3 h9 x        cout << "密度="<<mass_props[46]<< endl;
6 Q. Q* D3 U0 @, \          1 V  _6 g; f: g/ F! I, \
    UF_terminate();
" g3 N" d9 i. E6 d6 h! Y3 n        }
0 _% R! p8 G, S; L- n; H6 P  l- z- j
        return nRetCode;
+ f2 S+ o9 c. j$ Y( |}4 Z) W/ g& a4 n) u5 i
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-4-23 21:37 | 显示全部楼层
victor_tech 发表于 2015-4-18 11:50; ~% y# Z( d' _0 Z" u, b$ k
UF_MODL_ask_mass_props_3d
6 H, r& i9 ~: C5 R0 U+ y% \& Y* M
帮我看看把那块错了
8 V: A) m: I/ F- S' J& Z8 R#include "afx.h"
$ K& F! |' j+ U$ W+ y8 E#include <iostream>" u. \3 n) a+ e& r8 {5 w; Z% n
#include <uf.h>
7 N% j$ C9 W' F. I; \#include "uf_part.h"
0 d2 O3 t7 P' [8 C2 O#include <uf_attr.h>
! [. m5 j' k& k1 k' p/ E#include <uf_ui.h>0 z/ X9 [! @2 O6 Y6 f8 U2 n" Y0 {
#include <uf_obj.h>1 W! z- K& b, o- Q/ R
#include "uf_modl.h"& _; M; m: C3 _$ R5 o  t
#include "uf_weight.h"1 _7 Q. {4 W; P1 }
#include "uf_modl_types.h "' A5 z# K3 w6 n/ g' l
#include "stdafx.h": y' y. E- U6 p
8 v& D: z2 C  ?7 P
using namespace std;. O3 Q6 k; }/ n1 Q
; O/ u, N9 x6 ]9 Y& Z
int main()
8 T, p2 f. g2 u8 `* j  Z+ ^& l{
: q* Z" y+ W) x# ^' m9 Q        int                    nRetCode = 0;
% x; ?0 P% C# Y        int                    rcode;; k. [7 E% B7 n* q9 [% D
    CString                partName = "e:\\a.prt";  //此处为创建block的全路径名# U  h; v9 R& H9 Y. ?/ j+ @
        tag_t                  partTag = NULL_TAG;
8 N' H: R0 ^" L7 Y        tag_t                  attrTag = NULL_TAG;# {2 T2 O! Q: v) i1 A. }
        tag_t                  obj1 = NULL_TAG;
7 |5 u( J: i9 }- ~% O( z        UF_PART_load_status_t  error_status;
5 P/ `# i5 e9 l  \* B) S6 b+ Y
9 A9 @2 M7 `' J        // initialize UG and print and error on failure2 l+ `4 a2 h7 q) h5 I$ p9 s
        rcode = UF_initialize();% H2 V0 v4 C( ?0 c, x
. O3 W# _4 U1 O9 U' B
        if ( rcode )
! a$ ]/ |& ^# U+ ]# n        {+ B1 n' U) b0 s! ?( ]
                // TODO: change error code to suit your needs
" v) V0 P% b' Y# @/ y3 |9 d                cerr << _T("Fatal Error: UG initialization failed") << endl;
: [- |9 K' T  S8 E- s                nRetCode = 1;; i1 S, d! `  Y
        }
+ Z# X7 l0 D. ]5 J9 j  n        else! G0 M& h, M! e5 }
        {
+ f; S8 s& R8 J& r% q                // TODO: code your application's behavior here.
3 O& {5 r; @5 h5 ~0 ~1 z        //把部件载入内存  s2 W9 K1 V( C& p/ y- i
                UF_PART_open_quiet((char *)(LPCTSTR)  partName,
3 a9 a1 C+ h) U! b, R+ H: a: ?+ r                                             &partTag, / s) t: e3 ^2 r. Y$ @
                                             &error_status);  
! {  G- X1 X# f8 W
# S$ A8 K. c" l: l6 }" c                //得到对象标识6 E  H( y' f+ O8 _' P
        UF_OBJ_cycle_objs_in_part( partTag, UF_feature_type, &obj1 );
" c2 `8 z! k* v$ r0 L1 V' E( \0 {! p0 @) ?5 P
                //使用这个函数把部件做为工作部件+ ~/ F& D, g: @( E' v' V
  UF_PART_set_display_part(partTag);3 Q& d# ~6 b" U6 F' r
                int i;2 B5 D% Y- D/ H' }) [0 V" T
                char *size[3];7 x0 B) K+ q8 j# R* c* g0 C
                UF_UI_open_listing_window();
2 R' e7 y. H% w+ F1 \% ]                UF_MODL_ask_block_parms(obj1,1,size);
" B3 ^5 p# P4 r# k6 u
( r7 N; c# D; s                for(i=0;i<3;i++)- E0 ]; F8 M" l- t/ g6 M! d
                {
( O6 d9 ^- _- @! i1 `* p                        UF_UI_write_listing_window(size);
0 b7 t1 q9 Y- A            UF_UI_write_listing_window("\n");
% D( y# @1 C% f1 w                }
0 q- F0 A' |1 d( R7 I4 J4 T7 A        tag_t bodies[1];
- Q1 K& p+ s$ m1 g; H& i1 X        bodies[0]=partTag;
# T( L- ^: \( o; e4 R! ^, W        double acc_value[11];  }5 W& K- K) f7 ]1 W( o
        double mass_props[47];
: b; R' z1 J) `) ~        double statistics[13];9 H; y" t1 Q" ?9 l5 h5 r
        UF_MODL_ask_mass_props_3d(bodies,1,1,3,1,2,acc_value,mass_props,statistics);. U% m  v# ~' e: \* M  v) @- v4 m
        double masscenter[3]={* z& A& f; Q4 U0 r' c
                mass_props[3]*10,) R! l1 u1 j. Q
                mass_props[4]*10,! \5 p2 \/ ?% Z+ i0 K7 P
                mass_props[5]*10};
( O$ o+ f" T8 C8 @' q    cout << "质心x="<<masscenter[0]<< endl;* c5 Y9 b3 ?) K2 _
        cout << "质心y="<<mass_props[4]<< endl;
) {/ x# r5 M$ _0 ?$ h1 Z        cout << "质心z="<<mass_props[5]<< endl;
' ^# ]  T5 v1 v' X9 w# a        cout << "密度="<<mass_props[46]<< endl;
/ Y/ L0 c7 L3 S- ~          ' `) C  [, D6 q- ^! R4 `
    UF_terminate();
' C( O6 {0 J3 a" s        }
  e' I$ Y6 N4 v5 Q
: I% o2 R9 Z0 I5 n; J0 k- g        return nRetCode;
. {8 [. P# F0 l$ s' {  U( S}
% F4 j7 T, j7 }, S9 a1 D$ |( c) ]& n, I6 r3 t* r
2 c$ _: _3 F5 L# J* c3 ]+ m
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-16 11:19 , Processed in 0.228945 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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