darrenemail 发表于 2017-3-6 14:00:56

NX二次开发 在曲面上做UV线

NX7.5,用C++开发,现在用函数是UF_MODL_create_isocurve
int UF_MODL_create_isocurve
(
tag_t face_id,
int uv_flag,
double parameter,
double dist_tol,
tag_t * * isocurve_id,
int * isocurve_cnt

)


tag_t (tag_t类型)face_idInput(输入)The face identifier.
int (整数型)uv_flagInput(输入)1 = create curve along u isoparameter.
2 = create curve along v isoparameter.
double (实数型)parameterInput(输入)Parameter at which to create the curve.
double (实数型)dist_tolInput(输入)Tolerance value. The tolerance is only used
when the input face is foreign or an offset of
a non analytic face.
tag_t * *isocurve_idOutput to be freed
输出并释放 Array of isoparametric curve identifiers. You may
get multiple curves if the face is trimmed. The
allocated arrays must be freed with UF_free().
int * (整数型指针)isocurve_cntOutput(输出)Number of curves created.




其中第三个参数parameter,是输入UV值的大小!


请教各位,有没有哪个函数可以指定一段距离(例如每500mm)在面上生成一段曲线!

我最正经 发表于 2017-3-6 15:35:38

论坛里有个叫 梅雷 的网友是二次开发的大神,楼主可以试试看到二次开发板块找这个网友

darrenemail 发表于 2017-3-6 16:55:12

我最正经 发表于 2017-3-6 15:35
论坛里有个叫 梅雷 的网友是二次开发的大神,楼主可以试试看到二次开发板块找这个网友

好的,谢谢你

dosun* 发表于 2017-3-31 22:44:52

这个很难实现,不过可以通过数量等分Uv,再适量取值间隔,就可以分布式创线

Jefft* 发表于 2017-4-5 12:28:00

这个功能肯定是可以实现的。
先要将曲面分类,如果是平面很好做。
但是,如果你要抽的面是一个任意曲面,就要多让用户选择一下,偏置的起点位置就可以了。

木子@LJJ 发表于 2018-7-31 15:40:56

如何提取UV线

THINK-believe 发表于 2020-4-9 10:06:33

杨访青 发表于 2021-10-26 19:04:06

Jefft* 发表于 2017-4-5 12:28
这个功能肯定是可以实现的。
先要将曲面分类,如果是平面很好做。
但是,如果你要抽的面是一个任意曲面, ...

用等参数做是好做改不了线型,其中uv_flag=1,parm=uv最大最小除2,一次u线,一次V线,里面有个
TAG**我不能取到他的TAG,新手,自己看那个梅雷和唐康林的几个视频,uv用uf_mold_ask_bounding_box()和uf_modl_ask_face_props,做出来中心和线是对的 可是长了,我太难了
请问大神这个要用哪几个命令来做

杨访青 发表于 2021-10-26 19:10:31

tag_t classTAG=theselectCLASSPros->Tag();                               
                                double bounding_Box;
                                UF_MODL_ask_bounding_box( theselectCLASSPros->Tag(), bounding_Box);
                                double x = (bounding_Box + bounding_Box)/2;
                                double y = (bounding_Box + bounding_Box)/2;
                                double z = (bounding_Box + bounding_Box)/2;       
                                double uv_min_max;
                                UF_MODL_ask_face_uv_minmax(classTAG, uv_min_max);
                                double parameter;                                                                               
                /*                double ref_pnt={x,y,z};
                                double face_pnt;                       
                                UF_MODL_ask_face_parm(classTAG,ref_pnt,parameter,face_pnt);                */
                                double point1;
                                double U1;                               
                                double V1;                               
                                double U2;                       
                                double V2;                       
                                double unit_norm;
                                double radii;
                                UF_MODL_ask_face_props (classTAG,parameter,point1,U1,V1,U2,V2,unit_norm,radii);                       
                                UF_CURVE_line_t Line_coords1;
                                Line_coords1.start_point =x+(U2+U1)/2;
                                Line_coords1.start_point =y+(U2+U1)/2;
                                Line_coords1.start_point =z+(U2+U1)/2;
                                Line_coords1.end_point =x-(U2+U1)/2;
                                Line_coords1.end_point =y-(U2+U1)/2;
                                Line_coords1.end_point =z-(U2+U1)/2;
                                Line_coords1.start_point =x+(V2+V1)/2;
                                Line_coords1.start_point =y+(V2+V1)/2;
                                Line_coords1.start_point =z+(V2+V1)/2;
                                Line_coords1.end_point = x-(V2+V1)/2;
                                Line_coords1.end_point = y-(V2+V1)/2;
                                Line_coords1.end_point =z-(V2+V1)/2;C:\Users\LLVSOO\Desktop\_model1.png
                                tag_t Line1;
                                UF_CURVE_create_line(&Line_coords1, &Line1);
                                UF_CURVE_create_line(&Line_coords1, &Line1);
页: [1]
查看完整版本: NX二次开发 在曲面上做UV线