記事の著者: Caspian
出典ウェブサイト: https://blog.csdn.net/WangPaiFeiXingYuan
UF_VEC2_midpt
定義場所: uf_vec.h
void UF_VEC2_midpt(const double pnt1 [ 2 ] 、 const double pnt2 [ 2 ] 、 double mid_pnt [ 2 ] )
概要 概要
線分の中点の座標を計算します
線分の中点の座標を計算します。
UFUN の例
「Caspian NX 二次開発 3000 例コラム」 https://blog.csdn.net/wangpaifeixingyuan/category_8840986.htmlの購読へようこそ。リンクをクリックしてコードをスキャンして購読します (継続的に更新されます)。何百人もの人が購読しています。購読は永久的で、無期限に読むことができます。サポートが必要な場合は、プライベート メッセージを送信してください。
パラメータ パラメータ
定数倍 | pnt1 [ 2 ] | 入力 | 線分の終点 #1 線分の終点 #1 |
定数倍 | pnt2 [ 2 ] | 入力 | 線分の終点 #2 線分の終点 #2 |
ダブル | ミッド_pnt [ 2 ] | 出力 | 線分の中点 mid_pnt = (0.5 pnt1) + (0.5 pnt2) 線分の中点 = (0.5 pnt1) + (0.5 pnt2) |
UG二次開発におけるC++言語の応用と総合解析
- C++ は C 言語を拡張したもので、C 言語の手続き型プログラミング、抽象データ型を特徴とするオブジェクトベースの設計、およびオブジェクト指向プログラミングを実行できます。C++ は、処理する問題の規模に非常に適応します。
- C++ は、効率的なコンピュータ操作という実用的な特性を備えているだけでなく、大規模プログラムのプログラミング品質やプログラミング言語の問題記述機能の向上にも取り組んでいます。
UGの二次開発において、C++言語は以下のような特徴を持っています。
- C++ 言語は複数のプログラミング スタイルをサポートしています
- C++ の多くの機能はライブラリの形式で存在し、言語の単純さと開発と運用の効率を確保します。
- C 言語と比較して、C++ にはオブジェクト指向の概念が導入されており、UG によって開発された人間とコンピューターの対話インターフェイスがより簡潔になっています。
- UG に付属する 2,000 を超える API 関数と、高級言語 C++ およびプログラミング ソフトウェア Visual Studio を組み合わせることで、UG の二次開発が可能になります。
- 市場には Visual Studio と UG の多くのバージョンがあり、すべてのバージョンに互換性があるわけではないことに注意してください。
プログラミング プロセスには通常、次の手順が含まれます。
- 問題分析: 解決すべき問題を詳細に分析し、問題の具体的なニーズと制限を理解します。
- 要件定義: ユーザーのニーズ、システム要件など、プログラムの目的と機能を明確にします。
- 設計:アルゴリズム設計、データ構造設計、インターフェース設計など、ニーズに応じた設計を行います。
- コーディング: 設計結果に基づいて、プログラミング言語を使用してプログラム コードを実装します。
- テスト: 単体テスト、結合テスト、システムテストなどのさまざまなテスト方法を通じてプログラムの正確性を確認します。
- メンテナンス: 考えられる問題を解決したり、新しいニーズに対応したりするために、プログラムを変更および改善すること。
- ドキュメント作成:プログラムの機能、操作方法、注意事項などを説明するプログラムドキュメントを作成します。
以下は、ボクセル フィーチャ (ブロック、円柱、円錐、球) を作成する二次開発の例です。
#include <stdio.h>
#include <stdarg.h>
#include <uf_modl_primitives.h>
#include <uf_ui_ugopen.h>
#include <uf.h>
#include <uf_defs.h>
//封装打印函数,用于将信息打印到信息窗口
//QQ3123197280
int ECHO(const char* szFormat, ...)
{
char szMsg[5000] = "";
va_list arg_ptr;
va_start(arg_ptr, szFormat);
vsprintf_s(szMsg, szFormat, arg_ptr);
va_end(arg_ptr);
UF_UI_open_listing_window();
UF_UI_write_listing_window(szMsg);
return 0;
}
extern DllExport void ufusr(char* param, int* returnCode, int rlen)
{
UF_initialize();
//创建块
UF_FEATURE_SIGN sign = UF_NULLSIGN;
//块起点相对于ABS
double block_orig[3] = {
0.0,0.0,0.0 };
//方向相对于WCS
char* block_len[3] = {
"10", "30", "10" };
tag_t blk_obj;//体特征
UF_MODL_create_block1(sign, block_orig, block_len, &blk_obj);
int iEdit = 0;
char* size[3];
UF_MODL_ask_block_parms(blk_obj, iEdit, size);
ECHO("%s,%s,%s\n", size[0], size[1], size[2]);//输出: p6=10,p7=30,p8=10
//创建圆柱
UF_FEATURE_SIGN sign1 = UF_NULLSIGN;
double origin[3] = {
10.0,0.0,10.0 };
char height[] = "20";
char diam[] = "10";
double direction[3] = {
0,0,1 };//方向
tag_t cyl_obj_id;
UF_MODL_create_cyl1(sign1, origin, height, diam, direction, &cyl_obj_id);
int iEdit2 = 0;
char* cDiameter;
char* cHeight;
UF_MODL_ask_cylinder_parms(cyl_obj_id, iEdit2, &cDiameter, &cHeight);
ECHO("%s,%s\n", cDiameter, cHeight);//输出:p9=10,p10=20
UF_free(cDiameter);
UF_free(cHeight);
//创建圆锥
UF_FEATURE_SIGN sign2 = UF_NULLSIGN;
double origin2[3] = {
0.0,0.0,10.0 };
char height2[] = "20";
char* diam2[2] = {
"10" ,"5" };
double direction2[3] = {
0,0,1 };//方向
tag_t cone_obj_id;
UF_MODL_create_cone1(sign2, origin2, height2, diam2, direction2, &cone_obj_id);
int iEdit3 = 0;
char* cD1;
char* cD2;
char* cH;
char* cAngle;
UF_MODL_ask_cone_parms(cone_obj_id, iEdit3, &cD1, &cD2, &cH, &cAngle);
ECHO("%s,%s,%s,%s\n", cD1, cD2, cH, cAngle);//输出:p11=10,p12=5,p13=20,p14=7.1250163489018
UF_free(cD1);
UF_free(cD2);
UF_free(cH);
UF_free(cAngle);
//创建球
UF_FEATURE_SIGN sign3 = UF_NULLSIGN;
double douCenter2[3] = {
0.0,0.0,30.0 };
char cDiam[] = "8";
tag_t sphere_obj_id;
UF_MODL_create_sphere1(sign3, douCenter2, cDiam, &sphere_obj_id);
int iEdit4 = 0;
char* cDiam_parm;
UF_MODL_ask_sphere_parms(sphere_obj_id, iEdit4, &cDiam_parm);
ECHO("%s\n", cDiam_parm);//输出:p15=8
UF_free(cDiam_parm);
UF_terminate();
}
extern int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
効果: