找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
打印 上一主题 下一主题

【建议】要学UG装配二次开发的请进!

[复制链接]
11
发表于 2003-6-7 15:51:46 | 只看该作者
给大家一个例子。
#include <uf_ui.h>
#include <uf_defs.h>
#include <uf_part.h>
#include <uf_assem.h>
  
void RetrieveAllParts(tag_t child_tag)
{
    tag_t* ChildPartOccs;
    int PartNum = UF_ASSEM_ask_part_occ_children(child_tag , [$ChildPartOccs)]
    for( int i = 0 ; i < PartNum ; i++)
    {
        char PartName[ MAX_LINE_SIZE + 1 ];
        char RefsetName[ MAX_ENTITY_NAME_SIZE + 1 ];
        char InstanceName[ MAX_ENTITY_NAME_SIZE + 1 ];
        double Origin[3];
        double CsysMatrix[9];
        double Transform[4][4];
        char Buf[ 1024 ] = "";
  
        UF_ASSEM_ask_component_data(ChildPartOccs,PartName , RefsetName ,
            InstanceName , Origin , CsysMatrix , Transform);      
  
        UF_UI_write_listing_window( "art name is " );
        UF_UI_write_listing_window( PartName );
        UF_UI_write_listing_window( "\nInstance name is " );
        UF_UI_write_listing_window( InstanceName );
  
        tag_t ProtoTypeTag =  
            UF_ASSEM_ask_prototype_of_occ ( ChildPartOccs );
        sprintf( Buf, "\t The Proto type tag is %d", ProtoTypeTag);
        UF_UI_write_listing_window( Buf );
          
        sprintf( Buf, "\t The occ tag is %d \n", ChildPartOccs);
        UF_UI_write_listing_window( Buf );
        UF_UI_write_listing_window( "\n" );
  
        RetrieveAllParts(ChildPartOccs);
    }
  
    UF_free(ChildPartOccs);
}
  
void RetrieveAssem()
{
    char PartName[ UF_CFI_MAX_PATH_NAME_SIZE ] = "";
    char Buf[ 1024 ] = "";
    UF_UI_open_listing_window();
  
    tag_t DisplayPart = UF_PART_ask_display_part();
    UF_PART_ask_part_name( DisplayPart, PartName);
    UF_UI_write_listing_window( "Display Part Name is " );
    UF_UI_write_listing_window( PartName );
    sprintf(Buf,"\nPart Tag :%d\n",DisplayPart);
    UF_UI_write_listing_window( Buf );
  
    tag_t RootPartOcc = UF_ASSEM_ask_root_part_occ(DisplayPart);   
    UF_PART_ask_part_name( RootPartOcc, PartName);
    UF_UI_write_listing_window( "Root Part Occ Name is " );
    UF_UI_write_listing_window( PartName );
    sprintf( Buf,"\nPart Tag :%d\n", RootPartOcc );
    UF_UI_write_listing_window( Buf );
  
    RetrieveAllParts(RootPartOcc);
  
}
12
发表于 2003-6-7 16:17:52 | 只看该作者
::{谢谢Spline遍历装配的例子。能不能讲一讲创建一个装配的基本思路:比如我创建了两个PART,分别为part1(一个带孔的BLOCK),PART2(一个CYLINDER)。如何创建一个装配PART(PART3)并将PART1,PART2加进来,形成装配。是不是我的问题太简单了,不要笑我啊。:-P:-P::l::l
13
发表于 2003-6-7 16:49:10 | 只看该作者
哪里,你太客气了,你提的问题是最基本的问题了,如果做对了,就算入门了。
  
清华那本书上的就有这样一个例子,如果没有哪本书,我就去找找我以前做的练习。也许可以找到。
其实思路很简单,倒是那几个概念很绕人。
14
发表于 2003-6-7 17:16:57 | 只看该作者
不会吧,这么少????///
15
发表于 2003-6-8 09:24:57 | 只看该作者
::g::g谢谢Spline的回复。你说的是书上“API、UIStyler、MenuScript联合开发”的例子吧,这个程序好像是在现有装配文件内创建一个装配组件,并和原装配体进行配合定位。我想知道:
1.新建一个PART3,然后用UF_MODL_add_part_to_assembly()分别将PART1、PART2加进PART3中,是不是PART3就是包含PART1,PATR2的装配文件,也就是说装配的根是PART3?
2.如果在PART1中用UF_ASSEM_create_component_part()函数是否是将PART1变成装配文件?这时用UF_MODL_add_part_to_assembly()将PART2加进来,是不是就形成包含PART1,PATR2的装配文件,这时装配的根就是PART2?
16
发表于 2003-6-8 09:26:05 | 只看该作者
现在忙呀!等我的项目结了,我总结一下。很快了,就在最近了
17
发表于 2003-6-8 09:29:39 | 只看该作者
::r3q.I will always be here waiting for your help!::
18
发表于 2003-6-8 11:31:39 | 只看该作者
第一个问题,我认为装配的根是PART3。
第二个问题,我认为PART1变成装配文件,PART1是装配的根,假设UF_ASSEM_create_component_part()生成的文件为Part_X,那就形成了包含Part_X,PATR2的装配文件,PART1是装配的根。
不知道我的理解是不是有错误。
19
发表于 2003-6-8 18:33:40 | 只看该作者
我试了一下,你说的对。第二中情况装配根是part1。3ks!
20
发表于 2003-6-9 12:29:19 | 只看该作者
顶!!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-31 01:53 , Processed in 0.031438 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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