nx

NX二次开发-NxOpenC++类例子【持续更新】

妖精的绣舞 提交于 2019-11-27 19:04:50
NXOpen::WCS Class Reference NXOpen::CartesianCoordinateSystem* NXOpen::WCS::CoordinateSystem()获取WCS相关信息 https://www.cnblogs.com/nxopen2018/p/11368763.html NXOpen::Point3d NXOpen::WCS::Origin()获得WCS的原点坐标 https://www.cnblogs.com/nxopen2018/p/11368763.html void NXOpen::WCS::Rotate(NXOpen::WCS::Axis rotationAxis,double angle)围绕指定的轴旋转WCS https://www.cnblogs.com/nxopen2018/p/11368763.html NXOpen::CartesianCoordinateSystem* NXOpen::WCS::Save()在工作部件中创建一个新的笛卡尔坐标系,即使WCS属于显示部件 https://www.cnblogs.com/nxopen2018/p/11368763.html NXOpen::CartesianCoordinateSystem* NXOpen::WCS::SetCoordinateSyste(NXOpen:

20190817

允我心安 提交于 2019-11-27 15:45:59
EX1 翻转游戏 如图,有这样一个4*4的棋盘。每次可以操作一个棋子,这个棋子本身及其周围四个方向的棋子(如果存在)都会被翻转,翻转即由黑变白由白变黑。问最少需要多少步能够使所有棋子都变成同种颜色。 【输入】 输如一个4*4的矩阵,w表示白色,b表示黑色,不会出现其他字符。 【输出】 输出只有一行,包含所求的最小步数。 咦,等于4,我就算搜也就2^16=65536 还想什么,看我一发暴力把他A了 #include<bits/stdc++.h> #define re return #define inc(i,l,r) for(int i=l;i<=r;++i) using namespace std; template<typename T>inline void rd(T&x) { char c;bool f=0; while((c=getchar())<'0'||c>'9')if(c=='-')f=1; x=c^48; while((c=getchar())>='0'&&c<='9')x=x*10+(c^48); if(f)x=-x; } int dx[6]={0,0,1,-1,0,0},dy[6]={0,0,0,0,1,-1}; int n,m,col[10][10],vis[10]; int ans=17; inline void dfs(int x,int y,int

NX二次开发-NXOpen::WCS Class Reference

╄→尐↘猪︶ㄣ 提交于 2019-11-27 15:41:46
1 NX11+VS2013 2 3 #include <NXOpen/Part.hxx> 4 #include <NXOpen/PartCollection.hxx> 5 #include <NXOpen/Session.hxx> 6 #include <NXOpen/WCS.hxx> 7 #include <NXOpen/CartesianCoordinateSystem.hxx> 8 #include <NXOpen/CoordinateSystem.hxx> 9 #include <NXOpen/CoordinateSystemCollection.hxx> 10 using namespace NXOpen; 11 12 13 NXOpen::Session *theSession = NXOpen::Session::GetSession(); 14 NXOpen::Part *workPart(theSession->Parts()->Work()); 15 NXOpen::Part *displayPart(theSession->Parts()->Display()); 16 17 //获取WCS相关信息 18 NXOpen::CartesianCoordinateSystem* WcsData = workPart->WCS()->CoordinateSystem

POJ1154 LETTERS(DFS)

醉酒当歌 提交于 2019-11-27 12:21:45
题意:给出一个n*m 的大写字母矩阵,一开始的位置为左上角,你可以向上下左右四个方向移动,并且不能移向曾经经过的字母。问最多可以经过几个字母。 分析:一开始我错误的理解为,从(1,1)出发,最多能到达多少个字母,虽然样例对但WA声一片,再次审题后发现,题干的意思为从(1,1)出发找一条经过不重复字母 数最多的路径,因此就搜索,然后回溯就ok。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm> 5 6 using namespace std; 7 8 const int dx[4]={-1,0,1,0}; 9 const int dy[4]={0,-1,0,1}; 10 11 char g[25][25]; 12 bool vis[25][25],num[205]; 13 int n,m,res; 14 15 inline void dfs(int ans,int x,int y) 16 { 17 res=max(ans,res); 18 for(int i=0;i<4;i++) 19 { 20 int nx=x+dx[i],ny=y+dy[i]; 21 if(nx>=1&&nx<=n&&ny>=1&&ny<=m&&num[g[nx][ny]-'A']==false)

noip模拟测试18

痴心易碎 提交于 2019-11-27 08:23:04
T1:引子   呃呃呃……   大(?)模拟,好像也不难写?   模拟灌水过程就完了??? 1 #include<cstring> 2 #include<cmath> 3 #include<algorithm> 4 #include<cstdio> 5 #include<queue> 6 #include<vector> 7 #include<cstdlib> 8 using namespace std; 9 const int MAXN=2500; 10 int n,m,idmx,id[MAXN][MAXN],dx[4]={0,0,1,-1},dy[4]={1,-1,0,0}; 11 char s[MAXN][MAXN]; 12 vector<int> ver[MAXN]; 13 bool vis[MAXN][MAXN]; 14 struct node { 15 int u,d,l,r; 16 }blk[MAXN]; 17 struct sta { 18 int x,y; 19 sta(int _x,int _y) { 20 x=_x;y=_y; 21 } 22 }; 23 void bfs1(int x,int y) { 24 int c=0; 25 for(int i=y;i<=m;i++) 26 if(s[x][i]>='0'&&s[x][i]<='9') c=c*10+s

洛谷 P2360 地下城主

随声附和 提交于 2019-11-27 05:59:29
题目传送门 解题思路: 一道三维的迷宫,bfs即可(因为要求最短步数). 读入的时候总是出错,经过twh的耐心教导后,知道如果直接用字符数组读,每行会多读一个回车,直接读字符串就可以避免这个问题. AC代码: 1 #include<cstdio> 2 #include<iostream> 3 #include<queue> 4 #include<cstring> 5 6 using namespace std; 7 8 int l,r,c,x,y,h,ans[31][31][31],ansx,ansy,ansh; 9 char a[31][31][31]; 10 int way[6][3] = {{-1,0,0},{1,0,0},{0,-1,0},{0,1,0},{0,0,-1},{0,0,1}}; 11 bool p[31][31][31]; 12 string ll; 13 14 inline void _scanf() { 15 scanf("%d%d%d",&l,&r,&c); 16 for(int i = 1;i <= l; i++) { 17 for(int j = 1;j <= r; j++){ 18 cin >> ll; 19 for(int o = 1;o <= ll.length(); o++) { 20 a[i][j][o] = ll[o-1]; 21 if

NX二次开发-UFUN替换组件UF_ASSEM_substitute_component

孤街醉人 提交于 2019-11-27 03:55:53
1 NX9+VS2012 2 3 4 #include <uf.h> 5 #include <uf_ui.h> 6 #include <uf_assem.h> 7 #include <uf_part.h> 8 9 10 static int select_filter_proc_fn(tag_t object, int type[3], void* user_data, UF_UI_selection_p_t select) 11 { 12 if (object == NULL) 13 { 14 return UF_UI_SEL_REJECT; 15 } 16 else 17 { 18 return UF_UI_SEL_ACCEPT; 19 } 20 } 21 22 static int init_proc(UF_UI_selection_p_t select, void* user_data) 23 { 24 int num_triples = 1;//可选类型的数量 25 UF_UI_mask_t mask_triples[] = 26 { UF_component_type, UF_UI_SEL_NOT_A_FEATURE, 27 };//可选对象类型 28 UF_UI_set_sel_mask(select, UF_UI_SEL_MASK_CLEAR_AND_ENABLE

NX二次开发-重命名装配组件

假装没事ソ 提交于 2019-11-27 03:46:32
在GC工具里面是有一个重命名装配组件的命令的,除了这个外,好像没看到NX里还有其他可以重命名装配组件的命令,本来以为在UFUN ASSEM装配的头文件里会有更改装配部件名字的函数,但是没有找到,可能没有。本来以为UF_ASSEM_rename_instance这个可以,后来发现还不行,这个只能改右键属性名字。 但是我找到了替换组件的函数,我觉得这个是可以实现功能的。后来我按照自己想到的思路,对照着GC工具就写了一下。 我的思路是这样的:一个单选对话框->选择装配组件->得到tag->由tag得到装配组件的part名字->把名字显示到一个字符串窗口->用户更改名字->copy本地那个装配组件.prt文件->把新名字命名给copy后的那个.prt文件-> 然后用替换组件函数替换copy后的那个.prt文件->最后在把copy前那个旧的.prt文件删掉 1 //RenameComponent 2 3 // Mandatory UF Includes 4 #include <uf.h> 5 #include <uf_object_types.h> 6 7 // Internal Includes 8 #include <NXOpen/ListingWindow.hxx> 9 #include <NXOpen/NXMessageBox.hxx> 10 #include <NXOpen/UI

CF891E Lust 生成函数

别等时光非礼了梦想. 提交于 2019-11-27 00:26:10
传送门 设在某一次操作之后的 \(a\) 数组变为了 \(a'\) 数组,那么 \(\prod\limits_{i \neq x} a_i = \prod a_i - \prod a_i'\) 。那么就不难发现我们需要求的是进行这 \(k\) 次操作之后的 \(a\) 数组所有数的乘积的期望值。 注意到当第 \(i\) 个数被减去 \(p_i\) 次,那么方案数就是 \(\frac{k!}{\prod p_i!}\) ,那么考虑指数型生成函数求解。那么第 \(i\) 个数的生成函数就是 \(\sum\limits_{j \geq 0} \frac{a_i - j}{j!}x^j = (a_i - x)e^x\) 。那么答案就是 \(k![x^k]e^{nx}\prod (a_i - x)\) 。暴力求出 \(\prod (a_i - x)\) 的表示,求出它的每一项对应的 \(e^{nx}\) 的项的系数,然后就可以求出这个值了。值得注意的是 \(k!\) 太大,但是 \(e^{nx}\) 中也有一个阶乘,这两个可以进行抵消使得需要计算的量在 \(O(n)\) 范围内。复杂度 \(O(n^2)\) 。 代码 来源: https://www.cnblogs.com/Itst/p/11336534.html

【题解】JZOJ 提高A组 19.8.10 挖宝藏

女生的网名这么多〃 提交于 2019-11-26 22:27:11
二进制枚举子集 先给出代码: for(int o = s; o; o = (o - 1) & s) 其中 \(s\) 为当前的状态, \(o\) 为枚举的子集。根据与运算的性质我们得到的显然是s的子集,但是为什么这样做可以得到 \(s\) 所有的子集? 网上的一种说法是把状态 \(s\) 看做忽略 \(0\) 的二进制数,只考虑每次对这个二进制数减一,过程大概是: 假如 \(s=(0101101)_2\quad s_0=(1111)_2\) \(s_1=(s_0-1)\&s=(1110)_2\) \(s_2=(s_1-1)\&s=(1101)_2\) \(s_3=(s_2-1)\&s=(1100)_2\) \(...\) 因为 \(s_0\) 是一个所有位都为 \(1\) 的二进制数,所以与 \(s_0\) 不会对答案造成影响。很明显,去掉了与之后 \(s_i\) 每次都减一,这样一定可以取到 \([0,s_0]\) 内的所有状态。 而 \(0\) 可以被忽略的原因就是在与运算下原来为 \(0\) 的位不管怎么做都不会变成 \(1\) 影响枚举。这段代码的复杂度是 \(s\) 的子集数。 挖宝藏 一个矿工在一个三维立方体 \((h\times n\times m)\) 中挖矿。每个格子内有一个挖掘需要的体力 \(a_{i,j,k}\) ,初始时都没有挖过;矿工只能挖开 前后左右下