Einführung in die NX-Sekundärentwicklung UF_VEC2_affine_comb-Funktion

Autor des Artikels: Caspian
Quellwebsite:https://blog.csdn.net/WangPaiFeiXingYuan

UF_VEC2_affine_comb

Definiert in: uf_vec.h 
void UF_VEC2_affine_comb(const double vec [ 2 ] , double scale, const double vec_to_scale [ 2 ] , double vec_comb [ 2 ] )

Übersicht Übersicht

Führt eine vektoraffine Kombination aus, die darin besteht, einen
unskalierten Vektor zu einem skalierten Vektor hinzuzufügen. Der erste Vektor, den Sie eingeben, ist vec[2],
, der unskaliert ist. Der zweite Vektor, den Sie eingeben, ist vec_to_scale[2],
, der durch die Skalierung des Eingabearguments skaliert wird. Der resultierende Vektor wird
ausgegeben vec_comb[2].

Führt eine affine Kombination von Vektoren durch, die aus dem Hinzufügen eines unskalierten Vektors zu einem skalierten Vektor besteht. Der erste Vektor, den Sie eingeben, ist vec[2] , der unskaliert ist. Der zweite von Ihnen eingegebene Vektor ist vec_to_scale[2], der durch den Eingabeparameter „scale“ skaliert wird. Der resultierende Vektor wird als vec_comb[2] ausgegeben.

UFUN-Beispiel

Willkommen zum Abonnieren der Kolumne „3000 Fälle von Caspian NX Secondary Development“https://blog.csdn.net/wangpaifeixingyuan/category_8840986.html Klicken Sie auf den Link, um den Code zum Abonnieren zu scannen (wird fortlaufend aktualisiert). Hunderte von Menschen haben sich angemeldet. Das Abonnement ist dauerhaft und kann auf unbestimmte Zeit gelesen werden. Wenn Sie Hilfe benötigen, senden Sie bitte eine private Nachricht.

Parameter Parameter

const double Ding [ 2 ] Eingang Unskalierter Vektor
Unskalierter Vektor
doppelt Skala Eingang Skalierung zur Anwendung auf vec_to_scale[2]
Skalierung zur Anwendung auf vec_to_Scale[2]
const double vec_to_scale [ 2 ] Eingang Der zweite zweidimensionale Vektor, der skaliert wird.
Der zweite zweidimensionale Vektor, der skaliert wird.
doppelt vec_comb [ 2 ] Ausgabe Vektorsumme aus unskaliertem Vektor und skaliertem Vektor, wobei vec_comb = vec + (skalieren vec_to_scale)
Vektorsumme aus unskaliertem Vektor und skaliertem Vektor, wobei vec_comb = vec + (skalieren vec_to _ Skala)

Teilt

Anwendung und umfassende Analyse der C++-Sprache in der UG-Sekundärentwicklung

  1. C++ ist eine Erweiterung der C-Sprache. Es kann prozedurale Programmierung der C-Sprache, objektbasiertes Design, das durch abstrakte Datentypen gekennzeichnet ist, und objektorientierte Programmierung durchführen. C++ lässt sich hervorragend an die Größe der von ihm behandelten Probleme anpassen.
  2. C++ verfügt nicht nur über die praktischen Eigenschaften eines effizienten Computerbetriebs, sondern ist auch bestrebt, die Programmierqualität umfangreicher Programme und die Problembeschreibungsfähigkeiten von Programmiersprachen zu verbessern.

In der Sekundärentwicklung von UG weist die Sprache C++ die folgenden Merkmale auf

  1. Die Sprache C++ unterstützt mehrere Programmierstile
  2. Viele Funktionen von C++ liegen in Form von Bibliotheken vor, die die Einfachheit der Sprache und die Effizienz bei Entwicklung und Betrieb gewährleisten.
  3. Im Vergleich zur C-Sprache führt C++ das Konzept der Objektorientierung ein und macht die von UG entwickelte Mensch-Computer-Interaktionsschnittstelle prägnanter.
  4. Durch die Verwendung der mehr als 2.000 API-Funktionen, die UG mit sich bringt, kombiniert mit der Hochsprache C++ und der Programmiersoftware Visual Studio, kann UG sekundär entwickelt werden.
  5. Es ist zu beachten, dass es viele Versionen von Visual Studio und UG auf dem Markt gibt und nicht alle Versionen kompatibel sind.

Der Programmiervorgang umfasst in der Regel die folgenden Schritte:

  1. Problemanalyse: Führen Sie eine eingehende Analyse des zu lösenden Problems durch und verstehen Sie die spezifischen Bedürfnisse und Einschränkungen des Problems.
  2. Anforderungsdefinition: Klären Sie die Ziele und Funktionen des Programms, einschließlich Benutzeranforderungen, Systemanforderungen usw.
  3. Design: Design nach Bedarf, einschließlich Algorithmusdesign, Datenstrukturdesign, Schnittstellendesign usw.
  4. Codierung: Basierend auf den Designergebnissen wird eine Programmiersprache verwendet, um den Programmcode zu implementieren.
  5. Testen: Stellen Sie die Korrektheit des Programms durch verschiedene Testmethoden sicher, einschließlich Unit-Tests, Integrationstests, Systemtests usw.
  6. Wartung: Änderung und Verbesserung des Programms, um mögliche Probleme zu lösen oder neue Anforderungen zu erfüllen.
  7. Schreiben von Dokumenten: Schreiben Sie eine Programmdokumentation, um die Funktionen, Betriebsmethoden, Vorsichtsmaßnahmen usw. des Programms zu beschreiben.

Das Folgende ist ein Beispiel für die Sekundärentwicklung zur Erstellung von Voxel-Features (Blöcke, Zylinder, Kegel, Kugeln).

#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);
}

Wirkung:
Wirkung

Guess you like

Origin blog.csdn.net/WangPaiFeiXingYuan/article/details/134939341