//////////////////////////////////////////////////////////////////////
			// Code Example: Importing data: B-rep method 
			//
			//////////////////////////////////////////////////////////////////////

			// This function is passed the step number. This allows for an application to
			// produce code with several steps as demonstrated.
			// Return 1 if you have finished, 0 if otherwise and -1 to exit.

			int CMyCode::RunMyCode(int step)
			{

			// The code below is sample code. On exiting the function the bodies that
			// exist will be drawn

				int n_topols = 61;
				int n_relations = 135;

				PK_CLASS_t classes[61] = { 
					PK_CLASS_body,   PK_CLASS_region, PK_CLASS_shell,  PK_CLASS_face,   PK_CLASS_loop,
					PK_CLASS_edge,   PK_CLASS_vertex, PK_CLASS_vertex, PK_CLASS_edge,   PK_CLASS_vertex,
					PK_CLASS_edge,   PK_CLASS_vertex, PK_CLASS_edge,   PK_CLASS_loop,   PK_CLASS_edge,
					PK_CLASS_vertex, PK_CLASS_edge,	  PK_CLASS_vertex, PK_CLASS_edge,   PK_CLASS_loop,
					PK_CLASS_edge,   PK_CLASS_vertex, PK_CLASS_loop,   PK_CLASS_edge,   PK_CLASS_vertex,
					PK_CLASS_edge,	 PK_CLASS_loop,   PK_CLASS_edge,   PK_CLASS_vertex, PK_CLASS_edge,
					PK_CLASS_edge,	 PK_CLASS_vertex, PK_CLASS_loop,   PK_CLASS_edge,   PK_CLASS_vertex,
					PK_CLASS_edge,	 PK_CLASS_loop,   PK_CLASS_edge,   PK_CLASS_vertex, PK_CLASS_edge,
					PK_CLASS_edge,	 PK_CLASS_loop,   PK_CLASS_edge,   PK_CLASS_loop,   PK_CLASS_edge,
					PK_CLASS_face,	 PK_CLASS_face,   PK_CLASS_loop,   PK_CLASS_face,   PK_CLASS_face,
					PK_CLASS_face,	 PK_CLASS_face,   PK_CLASS_face,   PK_CLASS_face,   PK_CLASS_loop,
					PK_CLASS_face,	 PK_CLASS_region, PK_CLASS_shell,  PK_CLASS_face,   PK_CLASS_region,
					PK_CLASS_shell};
				
				int parents[135]= {0, 0, 0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 4, 4, 5, 5, 8, 8, 10, 10, 12,
					12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 16, 16, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 20, 22, 22,
					22, 22, 23, 23, 25, 25, 26, 26, 26, 26, 27, 27, 29, 29, 30, 30, 30, 30, 30, 32, 32, 32, 32, 33,
					33, 35, 35, 36, 36, 36, 36, 37, 37, 39, 39, 40, 40, 40, 40, 40, 41, 41, 41, 41, 42, 42, 43, 43, 43,
					43, 44, 44, 45, 46, 47, 47, 47, 47, 48, 49, 50, 51, 52, 53, 54, 54, 54, 54, 55, 56, 57, 57, 57, 57,
					57, 57, 58, 59, 60, 60, 60, 60, 60, 60};
				
				int children[135] = {1, 56, 59, 2, 3, 45, 46, 48, 49, 50, 51, 52, 53, 55, 4, 5, 8, 10, 12, 6, 7, 7, 9, 11,
					9, 11, 6, 4, 13, 19, 14, 12, 16, 18, 15, 6, 17, 11, 17, 15, 20, 12, 30, 40, 6, 21, 22, 26, 19, 20, 23,
					25, 5, 21, 24, 24, 7, 27, 29, 20, 14, 15, 28, 28, 21, 31, 11, 32, 36, 19, 10, 33, 35, 30, 9, 34, 31, 
					34, 16, 30, 37, 39, 38, 31, 38, 17, 21, 31, 41, 43, 19, 35, 42, 23, 40, 34, 24, 37, 40, 29, 44, 28, 
					38, 22, 47, 8, 25, 42, 33, 32, 41, 13, 36, 43, 54, 27, 18, 39, 44, 26, 57, 58, 3, 45, 46, 48, 49, 19,
					60, 58, 50, 53, 55, 51, 52}; 
				
				PK_TOPOL_sense_t senses[135] = {
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c, 
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c, 
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_positive_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_none_c,     PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_none_c,
					PK_TOPOL_sense_none_c,     PK_TOPOL_sense_positive_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c,
					PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c, PK_TOPOL_sense_negative_c};
				
				PK_BODY_create_topology_2_o_t options;
				PK_BODY_create_topology_2_r_t const_creation;
				PK_EDGE_attach_curves_o_t options_attach;
				PK_ENTITY_track_r_t tracking;

				CString text;
				int finished = 0;
				int n_faces = 0;
				int n_edges = 0;
				int n_vertices = 0;
				
				PK_LOGICAL_t face_senses[11] = {PK_LOGICAL_false};
				
				PK_FACE_t faces[11] = {PK_ENTITY_null};
				PK_SURF_t planes[11] = {PK_ENTITY_null};
				PK_EDGE_t edges[20] = {PK_ENTITY_null};
				PK_CURVE_t curves[20] = {PK_ENTITY_null};
				PK_VERTEX_t vertices[12] = {PK_ENTITY_null};
				PK_POINT_t points[12] = {PK_ENTITY_null};

				switch( step )
				{
				case 1:
					CExampleAppDoc::ExAppSetStatusBarString("Using the boundary representation method to import a cellular block to Parasolid");
					
					// Create topology

					PK_BODY_create_topology_2_o_m(options);
					options.body_type = PK_BODY_type_general_c;
					PK_BODY_create_topology_2(n_topols, classes, n_relations, parents, children, senses, &options, &const_creation);
					
					if (const_creation.create_faults[0].state == PK_BODY_state_ok_c)
					{
						// Faces
						faces[0] = const_creation.topols[45]; // Topology 46
						faces[1] = const_creation.topols[3]; // Topology 4
						faces[2] = const_creation.topols[46]; // Topology 47
						faces[3] = const_creation.topols[49]; // Topology 50
						faces[4] = const_creation.topols[48]; // Topology 49
						faces[5] = const_creation.topols[50]; // Topology 51
						faces[6] = const_creation.topols[55]; // Topology 56
						faces[7] = const_creation.topols[52]; // Topology 53
						faces[8] = const_creation.topols[53]; // Topology 54
						faces[9] = const_creation.topols[51]; // Topology 52
						faces[10] = const_creation.topols[58]; // Topology 59

						// Edges
						edges[0] = const_creation.topols[25]; // Topology 25
						edges[1] = const_creation.topols[8]; // Topology 8
						edges[2] = const_creation.topols[33]; // Topology 33
						edges[3] = const_creation.topols[42]; // Topology 42
						edges[4] = const_creation.topols[23]; // Topology 23
						edges[5] = const_creation.topols[10]; // Topology 10
						edges[6] = const_creation.topols[35]; // Topology 35
						edges[7] = const_creation.topols[20]; // Topology 20
						edges[8] = const_creation.topols[12]; // Topology 12
						edges[9] = const_creation.topols[30]; // Topology 30
						edges[10] = const_creation.topols[40]; // Topology 40
						edges[11] = const_creation.topols[29]; // Topology 29
						edges[12] = const_creation.topols[16]; // Topology 16
						edges[13] = const_creation.topols[37]; // Topology 37
						edges[14] = const_creation.topols[27]; // Topology 27
						edges[15] = const_creation.topols[18]; // Topology 18
						edges[16] = const_creation.topols[39]; // Topology 39
						edges[17] = const_creation.topols[44]; // Topology 44
						edges[18] = const_creation.topols[5]; // Topology 5
						edges[19] = const_creation.topols[14]; // Topology 14
						
						// Vertices
						vertices[0] = const_creation.topols[7]; // Topology 8
						vertices[1] = const_creation.topols[24]; // Topology 25
						vertices[2] = const_creation.topols[34]; // Topology 35
						vertices[3] = const_creation.topols[9]; // Topology 10
						vertices[4] = const_creation.topols[21]; // Topology 22
						vertices[5] = const_creation.topols[6]; // Topology 7
						vertices[6] = const_creation.topols[11]; // Topology 12
						vertices[7] = const_creation.topols[31]; // Topology 32
						vertices[8] = const_creation.topols[28]; // Topology 29
						vertices[9] = const_creation.topols[15]; // Topology 16
						vertices[10] = const_creation.topols[17]; // Topology 18
						vertices[11] = const_creation.topols[38]; // Topology 39

						CExampleAppDoc::ExAppShowMessage("Created Topology");
					}
					else
					{
						CExampleAppDoc::ExAppShowMessage("Failed to Create Topology - stopping");
						return -1;
					}
					
					// Free the memory associated with the return structure
					PK_BODY_create_topology_2_r_f(&const_creation);	
					
					
					// Create Geometry

					// Plane 1 - Attach to topology 45
					PK_PLANE_sf_t plane1_sf;
					plane1_sf.basis_set.location.coord[0] = 20.0;
					plane1_sf.basis_set.location.coord[1] = -5.0;
					plane1_sf.basis_set.location.coord[2] = 5.0;
					plane1_sf.basis_set.axis.coord[0] = 0.0;
					plane1_sf.basis_set.axis.coord[1] = 0.0;
					plane1_sf.basis_set.axis.coord[2] = 1.0;
					plane1_sf.basis_set.ref_direction.coord[0] = 1.0;
					plane1_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane1_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane1_sf, &planes[0]);

					// Plane 2 - Attach to topology 3
					PK_PLANE_sf_t plane2_sf;
					plane2_sf.basis_set.location.coord[0] = 20.0;
					plane2_sf.basis_set.location.coord[1] = 5.0;
					plane2_sf.basis_set.location.coord[2] = -5.0;
					plane2_sf.basis_set.axis.coord[0] = 0.0;
					plane2_sf.basis_set.axis.coord[1] = 1.0;
					plane2_sf.basis_set.axis.coord[2] = 0.0;
					plane2_sf.basis_set.ref_direction.coord[0] = 1.0;
					plane2_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane2_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane2_sf, &planes[1]);

					// Plane 3 - Attach to topology 46
					PK_PLANE_sf_t plane3_sf;
					plane3_sf.basis_set.location.coord[0] = 20.0;
					plane3_sf.basis_set.location.coord[1] = 5.0;
					plane3_sf.basis_set.location.coord[2] = 5.0;
					plane3_sf.basis_set.axis.coord[0] = 1.0;
					plane3_sf.basis_set.axis.coord[1] = 0.0;
					plane3_sf.basis_set.axis.coord[2] = 0.0;
					plane3_sf.basis_set.ref_direction.coord[0] = 0.0;
					plane3_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane3_sf.basis_set.ref_direction.coord[2] = 1.0;
					PK_PLANE_create(&plane3_sf, &planes[2]);

					// Plane 4 - Attach to topology 49
					PK_PLANE_sf_t plane4_sf;
					plane4_sf.basis_set.location.coord[0] = 20.0;
					plane4_sf.basis_set.location.coord[1] = -5.0;
					plane4_sf.basis_set.location.coord[2] = 5.0;
					plane4_sf.basis_set.axis.coord[0] = 0.0;
					plane4_sf.basis_set.axis.coord[1] = -1.0;
					plane4_sf.basis_set.axis.coord[2] = 0.0;
					plane4_sf.basis_set.ref_direction.coord[0] = 1.0;
					plane4_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane4_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane4_sf, &planes[3]);

					// Plane 5 - Attach to topology 48
					PK_PLANE_sf_t plane5_sf;
					plane5_sf.basis_set.location.coord[0] = 20.0;
					plane5_sf.basis_set.location.coord[1] = 5.0;
					plane5_sf.basis_set.location.coord[2] = -5.0;
					plane5_sf.basis_set.axis.coord[0] = 0.0;
					plane5_sf.basis_set.axis.coord[1] = 0.0;
					plane5_sf.basis_set.axis.coord[2] = -1.0;
					plane5_sf.basis_set.ref_direction.coord[0] = 1.0;
					plane5_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane5_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane5_sf, &planes[4]);

					// Plane 6 - Attach to topology 50
					PK_PLANE_sf_t plane6_sf;
					plane6_sf.basis_set.location.coord[0] = 10.0;
					plane6_sf.basis_set.location.coord[1] = 5.0;
					plane6_sf.basis_set.location.coord[2] = -5.0;
					plane6_sf.basis_set.axis.coord[0] = 0.0;
					plane6_sf.basis_set.axis.coord[1] = 1.0;
					plane6_sf.basis_set.axis.coord[2] = 0.0;
					plane6_sf.basis_set.ref_direction.coord[0] = 1.0;
					plane6_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane6_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane6_sf, &planes[5]);

					// Plane 7 - Attach to topology 55
					PK_PLANE_sf_t plane7_sf;
					plane7_sf.basis_set.location.coord[0] = 10.0;
					plane7_sf.basis_set.location.coord[1] = -5.0;
					plane7_sf.basis_set.location.coord[2] = 5.0;
					plane7_sf.basis_set.axis.coord[0] = 0.0;
					plane7_sf.basis_set.axis.coord[1] = 0.0;
					plane7_sf.basis_set.axis.coord[2] = 1.0;
					plane7_sf.basis_set.ref_direction.coord[0] = 0.0;
					plane7_sf.basis_set.ref_direction.coord[1] = 1.0;
					plane7_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane7_sf, &planes[6]);
							
					// Plane 8 - Attach to topology 52
					PK_PLANE_sf_t plane8_sf;
					plane8_sf.basis_set.location.coord[0] = 10.0;
					plane8_sf.basis_set.location.coord[1] = -5.0;
					plane8_sf.basis_set.location.coord[2] = 5.0;
					plane8_sf.basis_set.axis.coord[0] = 0.0;
					plane8_sf.basis_set.axis.coord[1] = -1.0;
					plane8_sf.basis_set.axis.coord[2] = 0.0;
					plane8_sf.basis_set.ref_direction.coord[0] = 1.0;
					plane8_sf.basis_set.ref_direction.coord[1] = 0.0;
					plane8_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane8_sf, &planes[7]);

					// Plane 9 - Attach to topology 53
					PK_PLANE_sf_t plane9_sf;
					plane9_sf.basis_set.location.coord[0] = 0.0;
					plane9_sf.basis_set.location.coord[1] = 5.0;
					plane9_sf.basis_set.location.coord[2] = -5.0;
					plane9_sf.basis_set.axis.coord[0] = -1.0;
					plane9_sf.basis_set.axis.coord[1] = 0.0;
					plane9_sf.basis_set.axis.coord[2] = 0.0;
					plane9_sf.basis_set.ref_direction.coord[0] = 0.0;
					plane9_sf.basis_set.ref_direction.coord[1] = 1.0;
					plane9_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane9_sf, &planes[8]);

					// Plane 10 - Attach to topology 51
					PK_PLANE_sf_t plane10_sf;
					plane10_sf.basis_set.location.coord[0] = 10.0;
					plane10_sf.basis_set.location.coord[1] = 5.0;
					plane10_sf.basis_set.location.coord[2] = -5.0;
					plane10_sf.basis_set.axis.coord[0] = 0.0;
					plane10_sf.basis_set.axis.coord[1] = 0.0;
					plane10_sf.basis_set.axis.coord[2] = -1.0;
					plane10_sf.basis_set.ref_direction.coord[0] = 0.0;
					plane10_sf.basis_set.ref_direction.coord[1] = 1.0;
					plane10_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane10_sf, &planes[9]);

					// Plane 11 - Attach to topology 58
					PK_PLANE_sf_t plane11_sf;
					plane11_sf.basis_set.location.coord[0] = 10.0;
					plane11_sf.basis_set.location.coord[1] = 5.0;
					plane11_sf.basis_set.location.coord[2] = -5.0;
					plane11_sf.basis_set.axis.coord[0] = -1.0;
					plane11_sf.basis_set.axis.coord[1] = 0.0;
					plane11_sf.basis_set.axis.coord[2] = 0.0;
					plane11_sf.basis_set.ref_direction.coord[0] = 0.0;
					plane11_sf.basis_set.ref_direction.coord[1] = 1.0;
					plane11_sf.basis_set.ref_direction.coord[2] = 0.0;
					PK_PLANE_create(&plane11_sf, &planes[10]);

					// Curve 1 - Attach to topology 25
					PK_LINE_sf_t curve1_sf;
					curve1_sf.basis_set.location.coord[0] = 20.0;
					curve1_sf.basis_set.location.coord[1] = -5.0;
					curve1_sf.basis_set.location.coord[2] = 5.0;
					curve1_sf.basis_set.axis.coord[0] = 0.0;
					curve1_sf.basis_set.axis.coord[1] = 1.0;
					curve1_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve1_sf, &curves[0]);

					// Curve 2 - Attach to topology 8
					PK_LINE_sf_t curve2_sf;
					curve2_sf.basis_set.location.coord[0] = 20.0;
					curve2_sf.basis_set.location.coord[1] = 5.0;
					curve2_sf.basis_set.location.coord[2] = 5.0;
					curve2_sf.basis_set.axis.coord[0] = 0.0;
					curve2_sf.basis_set.axis.coord[1] = 0.0;
					curve2_sf.basis_set.axis.coord[2] = -1.0;
					PK_LINE_create(&curve2_sf, &curves[1]);
				
					// Curve 3 - Attach to topology 33
					PK_LINE_sf_t curve3_sf;
					curve3_sf.basis_set.location.coord[0] = 20.0;
					curve3_sf.basis_set.location.coord[1] = 5.0;
					curve3_sf.basis_set.location.coord[2] = -5.0;
					curve3_sf.basis_set.axis.coord[0] = 0.0;
					curve3_sf.basis_set.axis.coord[1] = -1.0;
					curve3_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve3_sf, &curves[2]);

					// Curve 4 - Attach to topology 42
					PK_LINE_sf_t curve4_sf;
					curve4_sf.basis_set.location.coord[0] = 20.0;
					curve4_sf.basis_set.location.coord[1] = -5.0;
					curve4_sf.basis_set.location.coord[2] = -5.0;
					curve4_sf.basis_set.axis.coord[0] = 0.0;
					curve4_sf.basis_set.axis.coord[1] = 0.0;
					curve4_sf.basis_set.axis.coord[2] = 1.0;
					PK_LINE_create(&curve4_sf, &curves[3]);

					// Curve 5 - Attach to topology 23
					PK_LINE_sf_t curve5_sf;
					curve5_sf.basis_set.location.coord[0] = 10.0;
					curve5_sf.basis_set.location.coord[1] = -5.0;
					curve5_sf.basis_set.location.coord[2] = 5.0;
					curve5_sf.basis_set.axis.coord[0] = 1.0;
					curve5_sf.basis_set.axis.coord[1] = 0.0;
					curve5_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve5_sf, &curves[4]);

					// Curve 6 - Attach to topology 10
					PK_LINE_sf_t curve6_sf;
					curve6_sf.basis_set.location.coord[0] = 10.0;
					curve6_sf.basis_set.location.coord[1] = 5.0;
					curve6_sf.basis_set.location.coord[2] = -5.0;
					curve6_sf.basis_set.axis.coord[0] = 1.0;
					curve6_sf.basis_set.axis.coord[1] = 0.0;
					curve6_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve6_sf, &curves[5]);

					// Curve 7 - Attach to topology 35
					PK_LINE_sf_t curve7_sf;
					curve7_sf.basis_set.location.coord[0] = 10.0;
					curve7_sf.basis_set.location.coord[1] = -5.0;
					curve7_sf.basis_set.location.coord[2] = -5.0;
					curve7_sf.basis_set.axis.coord[0] = 1.0;
					curve7_sf.basis_set.axis.coord[1] = 0.0;
					curve7_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve7_sf, &curves[6]);
					
					// Curve 8 - Attach to topology 20
					PK_LINE_sf_t curve8_sf;
					curve8_sf.basis_set.location.coord[0] = 10.0;
					curve8_sf.basis_set.location.coord[1] = 5.0;
					curve8_sf.basis_set.location.coord[2] = 5.0;
					curve8_sf.basis_set.axis.coord[0] = 0.0;
					curve8_sf.basis_set.axis.coord[1] = -1.0;
					curve8_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve8_sf, &curves[7]);

					// Curve 9 - Attach to topology 12
					PK_LINE_sf_t curve9_sf;
					curve9_sf.basis_set.location.coord[0] = 10.0;
					curve9_sf.basis_set.location.coord[1] = 5.0;
					curve9_sf.basis_set.location.coord[2] = -5.0;
					curve9_sf.basis_set.axis.coord[0] = 0.0;
					curve9_sf.basis_set.axis.coord[1] = 0.0;
					curve9_sf.basis_set.axis.coord[2] = 1.0;
					PK_LINE_create(&curve9_sf, &curves[8]);

					// Curve 10 - Attach to topology 30
					PK_LINE_sf_t curve10_sf;
					curve10_sf.basis_set.location.coord[0] = 10.0;
					curve10_sf.basis_set.location.coord[1] = -5.0;
					curve10_sf.basis_set.location.coord[2] = -5.0;
					curve10_sf.basis_set.axis.coord[0] = 0.0;
					curve10_sf.basis_set.axis.coord[1] = 1.0;
					curve10_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve10_sf, &curves[9]);

					// Curve 11 - Attach to topology 40
					PK_LINE_sf_t curve11_sf;
					curve11_sf.basis_set.location.coord[0] = 10.0;
					curve11_sf.basis_set.location.coord[1] = -5.0;
					curve11_sf.basis_set.location.coord[2] = 5.0;
					curve11_sf.basis_set.axis.coord[0] = 0.0;
					curve11_sf.basis_set.axis.coord[1] = 0.0;
					curve11_sf.basis_set.axis.coord[2] = -1.0;
					PK_LINE_create(&curve11_sf, &curves[10]);

					// Curve 12 - Attach to topology 29
					PK_LINE_sf_t curve12_sf;
					curve12_sf.basis_set.location.coord[0] = 0.0;
					curve12_sf.basis_set.location.coord[1] = -5.0;
					curve12_sf.basis_set.location.coord[2] = 5.0;
					curve12_sf.basis_set.axis.coord[0] = 1.0;
					curve12_sf.basis_set.axis.coord[1] = 0.0;
					curve12_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve12_sf, &curves[11]);

					// Curve 13 - Attach to topology 16
					PK_LINE_sf_t curve13_sf;
					curve13_sf.basis_set.location.coord[0] = 0.0;
					curve13_sf.basis_set.location.coord[1] = 5.0;
					curve13_sf.basis_set.location.coord[2] = -5.0;
					curve13_sf.basis_set.axis.coord[0] = 1.0;
					curve13_sf.basis_set.axis.coord[1] = 0.0;
					curve13_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve13_sf, &curves[12]);

					// Curve 14 - Attach to topology 37
					PK_LINE_sf_t curve14_sf;
					curve14_sf.basis_set.location.coord[0] = 0.0;
					curve14_sf.basis_set.location.coord[1] = -5.0;
					curve14_sf.basis_set.location.coord[2] = -5.0;
					curve14_sf.basis_set.axis.coord[0] = 1.0;
					curve14_sf.basis_set.axis.coord[1] = 0.0;
					curve14_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve14_sf, &curves[13]);

					// Curve 15 - Attach to topology 27
					PK_LINE_sf_t curve15_sf;
					curve15_sf.basis_set.location.coord[0] = 0.0;
					curve15_sf.basis_set.location.coord[1] = 5.0;
					curve15_sf.basis_set.location.coord[2] = 5.0;
					curve15_sf.basis_set.axis.coord[0] = 0.0;
					curve15_sf.basis_set.axis.coord[1] = -1.0;
					curve15_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve15_sf, &curves[14]);

					// Curve 16 - Attach to topology 18
					PK_LINE_sf_t curve16_sf;
					curve16_sf.basis_set.location.coord[0] = 0.0;
					curve16_sf.basis_set.location.coord[1] = 5.0;
					curve16_sf.basis_set.location.coord[2] = -5.0;
					curve16_sf.basis_set.axis.coord[0] = 0.0;
					curve16_sf.basis_set.axis.coord[1] = 0.0;
					curve16_sf.basis_set.axis.coord[2] = 1.0;
					PK_LINE_create(&curve16_sf, &curves[15]);

					// Curve 17 - Attach to topology 39
					PK_LINE_sf_t curve17_sf;
					curve17_sf.basis_set.location.coord[0] = 0.0;
					curve17_sf.basis_set.location.coord[1] = -5.0;
					curve17_sf.basis_set.location.coord[2] = -5.0;
					curve17_sf.basis_set.axis.coord[0] = 0.0;
					curve17_sf.basis_set.axis.coord[1] = 1.0;
					curve17_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve17_sf, &curves[16]);

					// Curve 18 - Attach to topology 44
					PK_LINE_sf_t curve18_sf;
					curve18_sf.basis_set.location.coord[0] = 0.0;
					curve18_sf.basis_set.location.coord[1] = -5.0;
					curve18_sf.basis_set.location.coord[2] = 5.0;
					curve18_sf.basis_set.axis.coord[0] = 0.0;
					curve18_sf.basis_set.axis.coord[1] = 0.0;
					curve18_sf.basis_set.axis.coord[2] = -1.0;
					PK_LINE_create(&curve18_sf, &curves[17]);

					// Curve 19 - Attach to topology 5
					PK_LINE_sf_t curve19_sf;
					curve19_sf.basis_set.location.coord[0] = 10.0;
					curve19_sf.basis_set.location.coord[1] = 5.0;
					curve19_sf.basis_set.location.coord[2] = 5.0;
					curve19_sf.basis_set.axis.coord[0] = 1.0;
					curve19_sf.basis_set.axis.coord[1] = 0.0;
					curve19_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve19_sf, &curves[18]);

					// Curve 20 - Attach to topology 14
					PK_LINE_sf_t curve20_sf;
					curve20_sf.basis_set.location.coord[0] = 0.0;
					curve20_sf.basis_set.location.coord[1] = 5.0;
					curve20_sf.basis_set.location.coord[2] = 5.0;
					curve20_sf.basis_set.axis.coord[0] = 1.0;
					curve20_sf.basis_set.axis.coord[1] = 0.0;
					curve20_sf.basis_set.axis.coord[2] = 0.0;
					PK_LINE_create(&curve20_sf, &curves[19]);

					// Point 1 - Attach to topology 7
					PK_POINT_sf_t point1_sf;
					point1_sf.position.coord[0] = 20.0;
					point1_sf.position.coord[1] = 5.0;
					point1_sf.position.coord[2] = 5.0;
					PK_POINT_create(&point1_sf, &points[0]);

					// Point 2 - Attach to topology 24
					PK_POINT_sf_t point2_sf;
					point2_sf.position.coord[0] = 20.0;
					point2_sf.position.coord[1] = -5.0;
					point2_sf.position.coord[2] = 5.0;
					PK_POINT_create(&point2_sf, &points[1]);

					// Point 3 - Attach to topology 34
					PK_POINT_sf_t point3_sf;
					point3_sf.position.coord[0] = 20.0;
					point3_sf.position.coord[1] = -5.0;
					point3_sf.position.coord[2] = -5.0;
					PK_POINT_create(&point3_sf, &points[2]);

					// Point 4 - Attach to topology 9
					PK_POINT_sf_t point4_sf;
					point4_sf.position.coord[0] = 20.0;
					point4_sf.position.coord[1] = 5.0;
					point4_sf.position.coord[2] = -5.0;
					PK_POINT_create(&point4_sf, &points[3]);
						
					// Point 5 - Attach to topology 21
					PK_POINT_sf_t point5_sf;
					point5_sf.position.coord[0] = 10.0;
					point5_sf.position.coord[1] = -5.0;
					point5_sf.position.coord[2] = 5.0;
					PK_POINT_create(&point5_sf, &points[4]);

					// Point 6 - Attach to topology 6
					PK_POINT_sf_t point6_sf;
					point6_sf.position.coord[0] = 10.0;
					point6_sf.position.coord[1] = 5.0;
					point6_sf.position.coord[2] = 5.0;
					PK_POINT_create(&point6_sf, &points[5]);

					// Point 7 - Attach to topology 11
					PK_POINT_sf_t point7_sf;
					point7_sf.position.coord[0] = 10.0;
					point7_sf.position.coord[1] = 5.0;
					point7_sf.position.coord[2] = -5.0;
					PK_POINT_create(&point7_sf, &points[6]);

					// Point 8 - Attach to topology 31
					PK_POINT_sf_t point8_sf;
					point8_sf.position.coord[0] = 10.0;
					point8_sf.position.coord[1] = -5.0;
					point8_sf.position.coord[2] = -5.0;
					PK_POINT_create(&point8_sf, &points[7]);

					// Point 9 - Attach to topology 28
					PK_POINT_sf_t point9_sf;
					point9_sf.position.coord[0] = 0.0;
					point9_sf.position.coord[1] = -5.0;
					point9_sf.position.coord[2] = 5.0;
					PK_POINT_create(&point9_sf, &points[8]);

					// Point 10 - Attach to topology 15
					PK_POINT_sf_t point10_sf;
					point10_sf.position.coord[0] = 0.0;
					point10_sf.position.coord[1] = 5.0;
					point10_sf.position.coord[2] = 5.0;
					PK_POINT_create(&point10_sf, &points[9]);

					// Point 11 - Attach to topology 17
					PK_POINT_sf_t point11_sf;
					point11_sf.position.coord[0] = 0.0;
					point11_sf.position.coord[1] = 5.0;
					point11_sf.position.coord[2] = -5.0;
					PK_POINT_create(&point11_sf, &points[10]);

					// Point 12 - Attach to topology 38
					PK_POINT_sf_t point12_sf;
					point12_sf.position.coord[0] = 0.0;
					point12_sf.position.coord[1] = -5.0;
					point12_sf.position.coord[2] = -5.0;
					PK_POINT_create(&point12_sf, &points[11]);

					CExampleAppDoc::ExAppShowMessage("Created 11 planes, 20 lines and 12 points");
				
					//Attach Geometry

					face_senses[0] = PK_LOGICAL_true;
					face_senses[1] = PK_LOGICAL_true;
					face_senses[2] = PK_LOGICAL_true;
					face_senses[3] = PK_LOGICAL_true;
					face_senses[4] = PK_LOGICAL_true;
					face_senses[5] = PK_LOGICAL_true;
					face_senses[6] = PK_LOGICAL_true;
					face_senses[7] = PK_LOGICAL_true;
					face_senses[8] = PK_LOGICAL_true;
					face_senses[9] = PK_LOGICAL_true;
					face_senses[10] = PK_LOGICAL_true;
				
					n_faces = 11;
					n_edges = 20;
					n_vertices = 12;
				
					PK_EDGE_attach_curves_o_m(options_attach);
					
					PK_VERTEX_attach_points(n_vertices, vertices, points);
					PK_EDGE_attach_curves_2(n_edges, edges, curves, &options_attach, &tracking);
					PK_FACE_attach_surfs(n_faces, faces, planes, face_senses);
					PK_ENTITY_track_r_f(&tracking);

					CExampleAppDoc::ExAppShowMessage("Attached geometry to topology");
					
					// The model is now complete and can now be used for modelling in Parasolid
					// It may be useful to switch to wireframe view here to see the cellular structure.	

					break;
				default:
					int n_parts;
					PK_PART_t *parts;

					PK_SESSION_ask_parts(&n_parts, &parts);
					PK_ENTITY_delete(n_parts, parts);
					PK_MEMORY_free(parts);
					
					finished = 1;
				}

				return finished;
			}