iCAx开思工具箱

标题: 关于使用点构造器创建方块的方法之我见... [打印本页]

作者: sincosxu    时间: 2007-10-22 12:40
标题: 关于使用点构造器创建方块的方法之我见...
  主要是看有人在问,所以小弟我瞎整了个出来...下面是原代码和.dll文件(已通过调试)
作者: sincosxu    时间: 2007-10-22 13:09
   还有一种可以控制端点画方块的方法:1.使用UISTYER做好输入点的三个坐标X,Y,Z的界面.
                                                                     2.使用函数UF_CURVE_create_point创建点.
                                                                     3.使用UISTYER做好输入方块的三个边X,Y,Z的界面.
                                                                     4.使用函数创建方块
   想到这里,我想到了一个题目:
                                               对snap point工具栏的功能进行扩充....(方法不限,思路不限)
                                               比如说:有了取直线中点的功能和取圆弧的四段点,可以自己做出取直线的三分点,四分点;取圆弧的三段点,五段点;取曲线的曲率为零的点等等类似的功能..................

作者: 小老大    时间: 2007-10-22 20:23
太感谢了!
作者: 小老大    时间: 2007-10-22 20:33
再问如何将他钳入按钮?假如想选取点后再输入长宽高又应怎么样?

作者: 小老大    时间: 2007-10-23 08:10
为什么我用NX API向导创建的编译不能过过?
d:\asm\123\123.cpp(36) : error C2065: 'UF_MODL_create_block1' : undeclared identifier
作者: 小老大    时间: 2007-10-23 08:14

extern int UF_MODL_create_block1 (
    UF_FEATURE_SIGN sign,
        double corner_pt[ 3 ],
    char * edge_len[ 3 ],
        tag_t * blk_obj_id );
后编译通过,但不能组建?
作者: sincosxu    时间: 2007-10-23 08:38
使用向导做程序,比较方便,适合简单功能开发...
1:NX API向导创建的编译不能过过----------------------看头文件uf_modl.h和类似的头文件包含进去了没。
2.编程时,对于初学者,少用指针..因为它需要分配内存,就是使用malloc之类的函数.[/color]
作者: sincosxu    时间: 2007-10-23 08:45
对于加入长宽高这些对话框,你可以好好看看对UF_UI的编程,在我共享的程序中,有一部分是包含这些的,好象是第二章,还是第三章...
还有一种偷懒的方法,由于使用UF_MODL_CREATBLOCK创建的方块是有参数的,你可以双击方块,修改参数.
作者: 小老大    时间: 2007-10-23 21:48
原帖由  于 2007-10-23 08:38 发表
使用向导做程序,比较方便,适合简单功能开发...
1:NX API向导创建的编译不能过过----------------------看头文件uf_modl.h和类似的头文件包含进去了没。
2.编程时,对于初学者,少用指针..因为它需要分配内存,就是 ...

多谢!今天去广州了,明天再试
郁闷~购书中心都没找到UG二次开发的书
作者: sincosxu    时间: 2007-10-24 08:39
网上买书不好??
便宜,而且方便...
作者: cam-yp    时间: 2007-10-24 08:39
原帖由  于 2007-10-23 08:14 发表

extern int UF_MODL_create_block1 (
    UF_FEATURE_SIGN sign,
        double corner_pt,
    char * edge_len,
        tag_t * blk_obj_id );
后编译通过,但不能组建?

指定UF_FEATURE_SIGN的输入函数,原点,边长,在就是这个BLOCK的TAG就可以了
作者: cam-yp    时间: 2007-10-24 08:40
/******************************************************************************
             Copyright (c) 1999 Unigraphics Solutions, Inc.
                       Unpublished - All Rights Reserved

*******************************************************************************/
/*

The following example creates two blocks. The first block is created
as a new solid and the second block is added (unioned) to the first
block.

*/

#include <stdio.h>
#include <uf.h>
#include <uf_modl.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
    if (irc)
    {
        char    messg[133];
        printf("%s, line %d:  %s\n", file, line, call);
        (UF_get_fail_message(irc, messg)) ?
            printf("    returned a %d\n", irc) :
            printf("    returned error %d:  %s\n", irc, messg);
    }
    return(irc);
}
static void do_ugopen_api(void)
{
  UF_FEATURE_SIGN sign = UF_NULLSIGN;
  UF_FEATURE_SIGN sign1 = UF_POSITIVE;
  double block_orig[3] = {0.0,0.0,0.0};
  double block_orig1[3] = {0.0,0.0,2.5};
  char *block_len[3] = {"1","2","3"};
  char *block_len1[3] = {"1", "1", "1"};
  tag_t blk_obj;
  tag_t blk1_obj;
  UF_CALL(UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj));
  UF_CALL(UF_MODL_create_block1(sign1, block_orig1, block_len1, &blk1_obj));
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int paramLen)
{
  if (!UF_CALL(UF_initialize()))
  {
      do_ugopen_api();
      UF_CALL(UF_terminate());
  }
}
int ufusr_ask_unload(void)
{
    return (UF_UNLOAD_IMMEDIATELY);
}
作者: 小老大    时间: 2007-10-24 10:31
原帖由  于 2007-10-24 08:39 发表

指定UF_FEATURE_SIGN的输入函数,原点,边长,在就是这个BLOCK的TAG就可以了


作者: 小老大    时间: 2007-10-24 10:40
原帖由  于 2007-10-23 08:38 发表
使用向导做程序,比较方便,适合简单功能开发...
1:NX API向导创建的编译不能过过----------------------看头文件uf_modl.h和类似的头文件包含进去了没。
2.编程时,对于初学者,少用指针..因为它需要分配内存,就是 ...

搞掂了
是uf_modl.h没加上

作者: 小老大    时间: 2007-10-24 11:49
原帖由  于 2007-10-24 08:39 发表

指定UF_FEATURE_SIGN的输入函数,原点,边长,在就是这个BLOCK的TAG就可以了

要的后输入而不是先指定
作者: cam-yp    时间: 2007-10-24 12:32
原帖由  于 2007-10-24 11:49 发表

要的后输入而不是先指定

UF_FEATURE_SIGN sign = UF_NULLSIGN;
  UF_FEATURE_SIGN sign1 = UF_POSITIVE;

  double block_orig[3] = {0.0,0.0,0.0};
  double block_orig1[3] = {0.0,0.0,2.5};
  char *block_len[3] = {"1","2","3"};
  char *block_len1[3] = {"1", "1", "1"};
  tag_t blk_obj;
  tag_t blk1_obj;
  UF_CALL(UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj));
  UF_CALL(UF_MODL_create_block1(sign1, block_orig1, block_len1, &blk1_obj));

这不是先指定它吗?
作者: 小老大    时间: 2007-10-24 12:49
原帖由  于 2007-10-24 12:32 发表

UF_FEATURE_SIGN sign = UF_NULLSIGN;
  UF_FEATURE_SIGN sign1 = UF_POSITIVE;
  double block_orig = {0.0,0.0,0.0};
  double block_orig1 = {0.0,0.0,2.5};
  char *block_len = {"1"," ...

就是啊
我要的是手工输入
作者: cam-yp    时间: 2007-10-24 13:02
原帖由  于 2007-10-24 12:49 发表

就是啊
我要的是手工输入

那你创建对话框呀
内部的,UI都可以
作者: sincosxu    时间: 2007-10-24 15:16
,这样一个话题,你们两发这么多回复来讨论..
好好好学下UISTYLE编程啊啊,资料上写的很详细了..无非是:
1.使用UISTYLE创建对话框
2.使用UF_STYLER_ASK_VALUE();来获取对话框中你输入的值
3.把你获取的值,传递给函数来完成你的功能...   

作者: cam-yp    时间: 2007-10-25 08:37
原贴由发表:
,这样一个话题,你们两发这么多回复来讨论..
好好好学下UISTYLE编程啊啊,资料上写的很详细了..无非是:
1.

我是菜鸟....
作者: 春泉    时间: 2007-10-25 23:38
uc1613




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3