diff --git a/model/2d/smtk/simple.smtk b/model/2d/smtk/simple.smtk new file mode 100644 index 0000000000000000000000000000000000000000..c2e54bbf188e480d81897bcccdd0ac02703f1c2d --- /dev/null +++ b/model/2d/smtk/simple.smtk @@ -0,0 +1,748 @@ +{ + "a0b8c984-c3a0-4bf2-8fbc-3bae8d6ffada": { + "type": "session", + "name": "polygon", + "internal": { + "version": "1", + "05b5e222-5781-46cf-bff3-28a7bbb5c1c4": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [36736, 7049, 0, 0, 51136, 3524, 0, 0], + "edges": [{ + "edge": "6d551f72-96ad-44a2-b28a-d3537bb2bbc4", + "edgeout": false + }, { + "edge": "44940582-f47e-4eb7-8c98-351bba0e6d4c", + "edgeout": false + }, { + "edge": "aafb18f0-ac85-4001-b953-41532669f38b", + "edgeout": false, + "cwface": "16fa8848-514b-4370-abea-1e81ac402a23" + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [2, 1, 0], + "faces": [512, 0] + } + }, + "129c28f1-011e-432a-b95f-286e0df6f254": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [51136, 3524, 0, 0, 51136, 3524, 0, 0], + "edges": [{ + "edge": "bee33393-9cc2-4f9d-ab5f-1a84cf438a3b", + "edgeout": false, + "cwface": "f538672a-fc20-48fe-b8f1-752f4b1dc672" + }, { + "edge": "44940582-f47e-4eb7-8c98-351bba0e6d4c", + "edgeout": true, + "cwface": "16fa8848-514b-4370-abea-1e81ac402a23" + }, { + "edge": "de16e38c-93d0-4bbc-9c07-2eee9ae27f37", + "edgeout": false + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 1, 0], + "faces": [512, 0] + } + }, + "44940582-f47e-4eb7-8c98-351bba0e6d4c": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [51136, 3524, 0, 0, 51136, 3524, 0, 0, 36736, 7049, 0, 0, 51136, 3524, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 1, 0, 2, 1, 0], + "faces": [2048, 2, 0, 1] + } + }, + "f538672a-fc20-48fe-b8f1-752f4b1dc672": { + "type": "face", + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0], + "faces": [0, 0, 1, 2, 0, 0, 2, 3, 0, 0, 3, 4] + } + }, + "16fa8848-514b-4370-abea-1e81ac402a23": { + "type": "face", + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [2, 1, 0, 1, 1, 0, 1, 0, 0, 2, 0, 0, 2, 1, 0], + "faces": [0, 0, 1, 2, 0, 0, 2, 3, 0, 0, 3, 4] + } + }, + "4bdcccc5-77a4-4155-a36f-121128bfa59c": { + "type": "model", + "origin": [0, 0, 0], + "x axis": [1, 0, 0], + "y axis": [0, 1, 0], + "z axis": [0, 0, 1], + "i axis": [4.329004e-09, 0, 0], + "j axis": [0, 4.329004e-09, 0], + "feature size": 0.000001, + "model scale": [0, 0, 0, 0, 13, 196, 199, 192] + }, + "4caf2677-c9b5-4ee4-b5c5-cc6242c5f992": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [36736, 7049, 0, 0, 0, 0, 0, 0], + "edges": [{ + "edge": "aafb18f0-ac85-4001-b953-41532669f38b", + "edgeout": true + }, { + "edge": "cd94623f-0bce-4111-bbc3-fc9b0fbf599e", + "edgeout": false, + "cwface": "16fa8848-514b-4370-abea-1e81ac402a23" + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [2, 0, 0], + "faces": [512, 0] + } + }, + "65f655e3-6432-440e-8dac-2b718ee1e92c": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [51136, 3524, 0, 0, 36736, 7049, 0, 0], + "edges": [], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 2, 0], + "faces": [512, 0] + } + }, + "6d551f72-96ad-44a2-b28a-d3537bb2bbc4": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [36736, 7049, 0, 0, 36736, 7049, 0, 0, 36736, 7049, 0, 0, 51136, 3524, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [2, 2, 0, 2, 1, 0], + "faces": [2048, 2, 0, 1] + } + }, + "a2d7140c-8f78-4b94-a368-d0e208f7cda4": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [0, 0, 0, 0, 51136, 3524, 0, 0], + "edges": [{ + "edge": "de16e38c-93d0-4bbc-9c07-2eee9ae27f37", + "edgeout": true, + "cwface": "f538672a-fc20-48fe-b8f1-752f4b1dc672" + }, { + "edge": "b26b6f51-75c2-405e-a0c8-7e46d66382c8", + "edgeout": false + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [0, 1, 0], + "faces": [512, 0] + } + }, + "aafb18f0-ac85-4001-b953-41532669f38b": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [36736, 7049, 0, 0, 0, 0, 0, 0, 36736, 7049, 0, 0, 51136, 3524, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [2, 0, 0, 2, 1, 0], + "faces": [2048, 2, 0, 1] + } + }, + "b26b6f51-75c2-405e-a0c8-7e46d66382c8": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51136, 3524, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [0, 0, 0, 0, 1, 0], + "faces": [2048, 2, 0, 1] + } + }, + "bee33393-9cc2-4f9d-ab5f-1a84cf438a3b": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [51136, 3524, 0, 0, 0, 0, 0, 0, 51136, 3524, 0, 0, 51136, 3524, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 0, 0, 1, 1, 0], + "faces": [2048, 2, 0, 1] + } + }, + "cd94623f-0bce-4111-bbc3-fc9b0fbf599e": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [51136, 3524, 0, 0, 0, 0, 0, 0, 36736, 7049, 0, 0, 0, 0, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 0, 0, 2, 0, 0], + "faces": [2048, 2, 0, 1] + } + }, + "d5450fe3-6eb9-446d-8bb5-1f1732537193": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [0, 0, 0, 0, 0, 0, 0, 0], + "edges": [{ + "edge": "e1b20da7-a245-466b-a5d8-fac3c3049538", + "edgeout": false + }, { + "edge": "b26b6f51-75c2-405e-a0c8-7e46d66382c8", + "edgeout": true, + "cwface": "f538672a-fc20-48fe-b8f1-752f4b1dc672" + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [0, 0, 0], + "faces": [512, 0] + } + }, + "de16e38c-93d0-4bbc-9c07-2eee9ae27f37": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [0, 0, 0, 0, 51136, 3524, 0, 0, 51136, 3524, 0, 0, 51136, 3524, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [0, 1, 0, 1, 1, 0], + "faces": [2048, 2, 0, 1] + } + }, + "e1b20da7-a245-466b-a5d8-fac3c3049538": { + "type": "edge", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "points": [51136, 3524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 0, 0, 0, 0, 0], + "faces": [2048, 2, 0, 1] + } + }, + "e2be4917-4342-47ae-962e-0af93ef2729a": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [51136, 3524, 0, 0, 0, 0, 0, 0], + "edges": [{ + "edge": "cd94623f-0bce-4111-bbc3-fc9b0fbf599e", + "edgeout": true + }, { + "edge": "bee33393-9cc2-4f9d-ab5f-1a84cf438a3b", + "edgeout": true, + "cwface": "16fa8848-514b-4370-abea-1e81ac402a23" + }, { + "edge": "e1b20da7-a245-466b-a5d8-fac3c3049538", + "edgeout": true, + "cwface": "f538672a-fc20-48fe-b8f1-752f4b1dc672" + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [1, 0, 0], + "faces": [512, 0] + } + }, + "f4f89615-b6f7-47ce-a0c6-cf549c339a6b": { + "type": "vertex", + "parent": "4bdcccc5-77a4-4155-a36f-121128bfa59c", + "point": [36736, 7049, 0, 0, 36736, 7049, 0, 0], + "edges": [{ + "edge": "6d551f72-96ad-44a2-b28a-d3537bb2bbc4", + "edgeout": true + }], + "t": { + "metadata": { + "formatVersion": 3 + }, + "vertices": [2, 2, 0], + "faces": [512, 0] + } + } + }, + "models": { + "4bdcccc5-77a4-4155-a36f-121128bfa59c": { + "4bdcccc5-77a4-4155-a36f-121128bfa59c": { + "e": 4100, + "d": 2, + "r": ["a0b8c984-c3a0-4bf2-8fbc-3bae8d6ffada", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000", "f538672a-fc20-48fe-b8f1-752f4b1dc672", "16fa8848-514b-4370-abea-1e81ac402a23", "65f655e3-6432-440e-8dac-2b718ee1e92c", "6d551f72-96ad-44a2-b28a-d3537bb2bbc4"], + "a": { + "i": [[15], [16], [17], [18]], + "b": [[0]] + }, + "f": { + "feature size": [0.000001], + "model scale": [231000000], + "normal": [0, 0, 1], + "origin": [0, 0, 0], + "x axis": [1, 0, 0], + "y axis": [0, 1, 0] + }, + "s": { + "name": ["model 0"], + "smtk_url": ["/home/haochengliu/Desktop/test/test.smtk"] + }, + "i": { + "_geomstyle": [0], + "cell_counters": [8, 8, 2, 0, 0, 0], + "embedding dimension": [3], + "group_counters": [0, 0, 0], + "instance_counters": [0], + "invalid_counters": [0], + "model_counters": [0], + "shell_counters": [0, 0, 0, 0, 0, 0], + "use_counters": [0, 0, 0, 0, 0, 0] + } + }, + "16fa8848-514b-4370-abea-1e81ac402a23": { + "e": 260, + "d": 2, + "r": ["261f5516-68e0-48ed-964e-3f1c868497e1", "4bdcccc5-77a4-4155-a36f-121128bfa59c"], + "a": { + "u": [[-1, 0, -1], [0, 0, 1]], + "e": [[1]] + }, + "f": { + "_boundingBox": [1, 2, 0, 1, 0, 0] + }, + "s": { + "name": ["model 0, face 1"] + }, + "i": { + "_tessgen": [0], + "block_index": [9] + } + }, + "261f5516-68e0-48ed-964e-3f1c868497e1": { + "e": 516, + "d": 2, + "r": ["c1f83b35-6483-44f7-abb9-76b63ef1b858", "16fa8848-514b-4370-abea-1e81ac402a23"], + "a": { + "i": [[0]], + "c": [[1, 0]], + "s": [[-1]] + } + }, + "65f655e3-6432-440e-8dac-2b718ee1e92c": { + "e": 257, + "d": 0, + "r": ["4bdcccc5-77a4-4155-a36f-121128bfa59c"], + "a": { + "e": [[0]] + }, + "f": { + "_boundingBox": [1, 1, 2, 2, 0, 0] + }, + "s": { + "name": ["model 0, vertex 7"] + }, + "i": { + "_tessgen": [0], + "block_index": [21] + } + }, + "6d551f72-96ad-44a2-b28a-d3537bb2bbc4": { + "e": 258, + "d": 1, + "r": ["f4f89615-b6f7-47ce-a0c6-cf549c339a6b", "05b5e222-5781-46cf-bff3-28a7bbb5c1c4", "4bdcccc5-77a4-4155-a36f-121128bfa59c"], + "a": { + "e": [[2]] + }, + "f": { + "_boundingBox": [2, 2, 1, 2, 0, 0] + }, + "s": { + "name": ["model 0, edge 7"] + }, + "i": { + "_tessgen": [0], + "block_index": [12] + } + }, + "05b5e222-5781-46cf-bff3-28a7bbb5c1c4": { + "e": 257, + "d": 0, + "r": ["aafb18f0-ac85-4001-b953-41532669f38b", "44940582-f47e-4eb7-8c98-351bba0e6d4c", "6d551f72-96ad-44a2-b28a-d3537bb2bbc4"], + "f": { + "_boundingBox": [2, 2, 1, 1, 0, 0] + }, + "s": { + "name": ["model 0, vertex 5"] + }, + "i": { + "_tessgen": [0], + "block_index": [22] + } + }, + "c1f83b35-6483-44f7-abb9-76b63ef1b858": { + "e": 1030, + "d": -1, + "r": ["261f5516-68e0-48ed-964e-3f1c868497e1", "342c0775-ab13-419d-bf6a-943d557a930e", "85092dd9-d755-4605-9f3b-958910b62690", "11f5809a-4515-4b9e-b000-aca1472431d0", "4e8d49ef-b570-4e1a-ae0a-ba11db0b3e90"], + "a": { + "u": [[1, 5]], + "e": [[0]] + } + }, + "11f5809a-4515-4b9e-b000-aca1472431d0": { + "e": 514, + "d": 1, + "r": ["aafb18f0-ac85-4001-b953-41532669f38b", "c1f83b35-6483-44f7-abb9-76b63ef1b858"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "342c0775-ab13-419d-bf6a-943d557a930e": { + "e": 514, + "d": 1, + "r": ["bee33393-9cc2-4f9d-ab5f-1a84cf438a3b", "c1f83b35-6483-44f7-abb9-76b63ef1b858"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "44940582-f47e-4eb7-8c98-351bba0e6d4c": { + "e": 258, + "d": 1, + "r": ["129c28f1-011e-432a-b95f-286e0df6f254", "05b5e222-5781-46cf-bff3-28a7bbb5c1c4", "4e8d49ef-b570-4e1a-ae0a-ba11db0b3e90", "4e8d49ef-b570-4e1a-ae0a-ba11db0b3e90"], + "a": { + "u": [[2, 0, -1]] + }, + "f": { + "_boundingBox": [1, 2, 1, 1, 0, 0] + }, + "s": { + "name": ["model 0, edge 6"] + }, + "i": { + "_tessgen": [0], + "block_index": [13] + } + }, + "129c28f1-011e-432a-b95f-286e0df6f254": { + "e": 257, + "d": 0, + "r": ["de16e38c-93d0-4bbc-9c07-2eee9ae27f37", "bee33393-9cc2-4f9d-ab5f-1a84cf438a3b", "44940582-f47e-4eb7-8c98-351bba0e6d4c"], + "f": { + "_boundingBox": [1, 1, 1, 1, 0, 0] + }, + "s": { + "name": ["model 0, vertex 2"] + }, + "i": { + "_tessgen": [0], + "block_index": [23] + } + }, + "4e8d49ef-b570-4e1a-ae0a-ba11db0b3e90": { + "e": 514, + "d": 1, + "r": ["44940582-f47e-4eb7-8c98-351bba0e6d4c", "c1f83b35-6483-44f7-abb9-76b63ef1b858"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "85092dd9-d755-4605-9f3b-958910b62690": { + "e": 514, + "d": 1, + "r": ["cd94623f-0bce-4111-bbc3-fc9b0fbf599e", "c1f83b35-6483-44f7-abb9-76b63ef1b858"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "aafb18f0-ac85-4001-b953-41532669f38b": { + "e": 258, + "d": 1, + "r": ["4caf2677-c9b5-4ee4-b5c5-cc6242c5f992", "05b5e222-5781-46cf-bff3-28a7bbb5c1c4", "11f5809a-4515-4b9e-b000-aca1472431d0", "11f5809a-4515-4b9e-b000-aca1472431d0"], + "a": { + "u": [[2, 0, 1]] + }, + "f": { + "_boundingBox": [2, 2, 0, 1, 0, 0] + }, + "s": { + "name": ["model 0, edge 5"] + }, + "i": { + "_tessgen": [0], + "block_index": [14] + } + }, + "4caf2677-c9b5-4ee4-b5c5-cc6242c5f992": { + "e": 257, + "d": 0, + "r": ["cd94623f-0bce-4111-bbc3-fc9b0fbf599e", "aafb18f0-ac85-4001-b953-41532669f38b"], + "f": { + "_boundingBox": [2, 2, 0, 0, 0, 0] + }, + "s": { + "name": ["model 0, vertex 4"] + }, + "i": { + "_tessgen": [0], + "block_index": [24] + } + }, + "bee33393-9cc2-4f9d-ab5f-1a84cf438a3b": { + "e": 258, + "d": 1, + "r": ["e2be4917-4342-47ae-962e-0af93ef2729a", "129c28f1-011e-432a-b95f-286e0df6f254", "86f8700e-7072-443f-be0b-f1e5bbfbc3e3", "86f8700e-7072-443f-be0b-f1e5bbfbc3e3", "342c0775-ab13-419d-bf6a-943d557a930e", "342c0775-ab13-419d-bf6a-943d557a930e"], + "a": { + "u": [[2, 0, 1], [5, 0, -1]] + }, + "f": { + "_boundingBox": [1, 1, 0, 1, 0, 0] + }, + "s": { + "name": ["model 0, edge 3"] + }, + "i": { + "_tessgen": [0], + "block_index": [15] + } + }, + "86f8700e-7072-443f-be0b-f1e5bbfbc3e3": { + "e": 514, + "d": 1, + "r": ["bee33393-9cc2-4f9d-ab5f-1a84cf438a3b", "20d2f6ce-3719-4e22-89fb-d2b472245737"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "cd94623f-0bce-4111-bbc3-fc9b0fbf599e": { + "e": 258, + "d": 1, + "r": ["e2be4917-4342-47ae-962e-0af93ef2729a", "4caf2677-c9b5-4ee4-b5c5-cc6242c5f992", "85092dd9-d755-4605-9f3b-958910b62690", "85092dd9-d755-4605-9f3b-958910b62690"], + "a": { + "u": [[2, 0, 1]] + }, + "f": { + "_boundingBox": [1, 2, 0, 0, 0, 0] + }, + "s": { + "name": ["model 0, edge 4"] + }, + "i": { + "_tessgen": [0], + "block_index": [16] + } + }, + "e2be4917-4342-47ae-962e-0af93ef2729a": { + "e": 257, + "d": 0, + "r": ["e1b20da7-a245-466b-a5d8-fac3c3049538", "bee33393-9cc2-4f9d-ab5f-1a84cf438a3b", "cd94623f-0bce-4111-bbc3-fc9b0fbf599e"], + "f": { + "_boundingBox": [1, 1, 0, 0, 0, 0] + }, + "s": { + "name": ["model 0, vertex 3"] + }, + "i": { + "_tessgen": [0], + "block_index": [25] + } + }, + "f4f89615-b6f7-47ce-a0c6-cf549c339a6b": { + "e": 257, + "d": 0, + "r": ["6d551f72-96ad-44a2-b28a-d3537bb2bbc4"], + "f": { + "_boundingBox": [2, 2, 2, 2, 0, 0] + }, + "s": { + "name": ["model 0, vertex 6"] + }, + "i": { + "_tessgen": [0], + "block_index": [26] + } + }, + "f538672a-fc20-48fe-b8f1-752f4b1dc672": { + "e": 260, + "d": 2, + "r": ["805440b2-a1e1-413f-b56f-66cd718e77b7", "4bdcccc5-77a4-4155-a36f-121128bfa59c"], + "a": { + "u": [[-1, 0, -1], [0, 0, 1]], + "e": [[1]] + }, + "f": { + "_boundingBox": [0, 1, 0, 1, 0, 0] + }, + "s": { + "name": ["model 0, face 0"] + }, + "i": { + "_tessgen": [0], + "block_index": [10] + } + }, + "805440b2-a1e1-413f-b56f-66cd718e77b7": { + "e": 516, + "d": 2, + "r": ["20d2f6ce-3719-4e22-89fb-d2b472245737", "f538672a-fc20-48fe-b8f1-752f4b1dc672"], + "a": { + "i": [[0]], + "c": [[1, 0]], + "s": [[-1]] + } + }, + "20d2f6ce-3719-4e22-89fb-d2b472245737": { + "e": 1030, + "d": -1, + "r": ["805440b2-a1e1-413f-b56f-66cd718e77b7", "18503bbb-1eb9-4862-be16-d69dd155113f", "e411d3fb-bd70-496a-a86f-1e912f765fdb", "86f8700e-7072-443f-be0b-f1e5bbfbc3e3", "cc07cb1f-a175-4cad-8787-79adda09dcba"], + "a": { + "u": [[1, 5]], + "e": [[0]] + } + }, + "18503bbb-1eb9-4862-be16-d69dd155113f": { + "e": 514, + "d": 1, + "r": ["b26b6f51-75c2-405e-a0c8-7e46d66382c8", "20d2f6ce-3719-4e22-89fb-d2b472245737"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "b26b6f51-75c2-405e-a0c8-7e46d66382c8": { + "e": 258, + "d": 1, + "r": ["d5450fe3-6eb9-446d-8bb5-1f1732537193", "a2d7140c-8f78-4b94-a368-d0e208f7cda4", "18503bbb-1eb9-4862-be16-d69dd155113f", "18503bbb-1eb9-4862-be16-d69dd155113f"], + "a": { + "u": [[2, 0, -1]] + }, + "f": { + "_boundingBox": [0, 0, 0, 1, 0, 0] + }, + "s": { + "name": ["model 0, edge 0"] + }, + "i": { + "_tessgen": [0], + "block_index": [17] + } + }, + "a2d7140c-8f78-4b94-a368-d0e208f7cda4": { + "e": 257, + "d": 0, + "r": ["b26b6f51-75c2-405e-a0c8-7e46d66382c8", "de16e38c-93d0-4bbc-9c07-2eee9ae27f37"], + "f": { + "_boundingBox": [0, 0, 1, 1, 0, 0] + }, + "s": { + "name": ["model 0, vertex 1"] + }, + "i": { + "_tessgen": [0], + "block_index": [27] + } + }, + "cc07cb1f-a175-4cad-8787-79adda09dcba": { + "e": 514, + "d": 1, + "r": ["de16e38c-93d0-4bbc-9c07-2eee9ae27f37", "20d2f6ce-3719-4e22-89fb-d2b472245737"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + }, + "d5450fe3-6eb9-446d-8bb5-1f1732537193": { + "e": 257, + "d": 0, + "r": ["b26b6f51-75c2-405e-a0c8-7e46d66382c8", "e1b20da7-a245-466b-a5d8-fac3c3049538"], + "f": { + "_boundingBox": [0, 0, 0, 0, 0, 0] + }, + "s": { + "name": ["model 0, vertex 0"] + }, + "i": { + "_tessgen": [0], + "block_index": [28] + } + }, + "de16e38c-93d0-4bbc-9c07-2eee9ae27f37": { + "e": 258, + "d": 1, + "r": ["a2d7140c-8f78-4b94-a368-d0e208f7cda4", "129c28f1-011e-432a-b95f-286e0df6f254", "cc07cb1f-a175-4cad-8787-79adda09dcba", "cc07cb1f-a175-4cad-8787-79adda09dcba"], + "a": { + "u": [[2, 0, -1]] + }, + "f": { + "_boundingBox": [0, 1, 1, 1, 0, 0] + }, + "s": { + "name": ["model 0, edge 1"] + }, + "i": { + "_tessgen": [0], + "block_index": [18] + } + }, + "e1b20da7-a245-466b-a5d8-fac3c3049538": { + "e": 258, + "d": 1, + "r": ["e2be4917-4342-47ae-962e-0af93ef2729a", "d5450fe3-6eb9-446d-8bb5-1f1732537193", "e411d3fb-bd70-496a-a86f-1e912f765fdb", "e411d3fb-bd70-496a-a86f-1e912f765fdb"], + "a": { + "u": [[2, 0, -1]] + }, + "f": { + "_boundingBox": [0, 1, 0, 0, 0, 0] + }, + "s": { + "name": ["model 0, edge 2"] + }, + "i": { + "_tessgen": [0], + "block_index": [19] + } + }, + "e411d3fb-bd70-496a-a86f-1e912f765fdb": { + "e": 514, + "d": 1, + "r": ["e1b20da7-a245-466b-a5d8-fac3c3049538", "20d2f6ce-3719-4e22-89fb-d2b472245737"], + "a": { + "c": [[0, 0]], + "s": [[1]] + } + } + } + }, + "ops": "<!--Created by XmlV3StringWriter-->\n<SMTK_AttributeSystem Version=\"3\">\n <!--********** Category and Analysis Information ***********-->\n <!--********** Attribute Definitions ***********-->\n <Definitions>\n <AttDef Type=\"operator\" Label=\"operator\" BaseType=\"\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <Int Name=\"assign names\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Int>\n <Int Name=\"debug level\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"10\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"extract contours\" Label=\"Edge - Create from Contours\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"auxiliary geometry\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The image auxiliary geometry to which this op will operate on.</BriefDescription>\n <DetailedDescription>\n The image auxiliary geometry to which this op will operate on. This auxiliary geometry should have an \"url\" string property.\n </DetailedDescription>\n <MembershipMask>aux_geom|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <Double Name=\"points\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"6\" Extensible=\"true\">\n <BriefDescription>The (x,y,z) coordinates of the edges.</BriefDescription>\n <DetailedDescription>\n The world coordinates of 1 or more edges.\n </DetailedDescription>\n </Double>\n <Int Name=\"coordinates\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The number of coordinates per vertex.</BriefDescription>\n <DetailedDescription>\n When specifying coordinates for more than 1 vertex,\n this dictates how values are passed.\n When set to 2, the third coordinate is assumed to be 0 for all points.\n </DetailedDescription>\n <DefaultValue>3</DefaultValue>\n <RangeInfo>\n <Min Inclusive=\"true\">2</Min>\n <Max Inclusive=\"true\">3</Max>\n </RangeInfo>\n </Int>\n <Int Name=\"offsets\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>Offsets into the list of \"points\" where each edge starts.</BriefDescription>\n <DetailedDescription>\n Offsets into the list of points where each edge starts.\n\n When \"edge points\" are specified, each offset value is multiplied by 3.\n Thus, where \"points\" are passed, one would specify\n offsets equal to \"[0, 3, 5]\" to indicate the first edge has 3 points,\n the second edge has 2 points, and a third edge exists at the end after these two.\n </DetailedDescription>\n <DefaultValue>0</DefaultValue>\n </Int>\n <Double Name=\"image bounds\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"6\">\n <BriefDescription>The bounds of the image where the contours are extracted from.</BriefDescription>\n <DetailedDescription>\n This vector specifies the bounds of the image where the contours are generated from.\n This operator will try to set the model's origin in 3D to the center of the bounds,\n if the model does not have any entity with tessellation yet. This will make matching point\n coordinates between vtk and pmodel storage more robust, for example when doing edge split.\n </DetailedDescription>\n <DefaultValue>0,-1,0,-1,0,-1</DefaultValue>\n </Double>\n <Int Name=\"HelperGlobalID\" Label=\"Unique global ID for a helper object\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"apply bathymetry\" Label=\"apply bathymetry\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <String Name=\"operation\" Label=\"Operation\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <ChildrenDefinitions>\n <Void Name=\"applyonlytovisiblemesh\" Label=\"Apply only to the visible meshes on the model\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" />\n <ModelEntity Name=\"auxiliary geometry\" Label=\"auxiliary geometry\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>\n Add auxiliary geometry first then apply bathymetry.\n </BriefDescription>\n <MembershipMask>aux_geom|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n <Double Name=\"averaging elevation radius\" Label=\"Radius for Averaging Elevation:\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <DefaultValue>1</DefaultValue>\n </Double>\n <MeshEntity Name=\"mesh\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\" />\n <ModelEntity Name=\"model\" Label=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n <Double Name=\"set highest elevation\" Label=\"Set Highest Elevation:\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Double>\n <Double Name=\"set lowest elevation\" Label=\"Set Lowest Elevation:\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Double>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"0\">\n <Structure>\n <Value Enum=\"Apply Bathymetry (Auto)\">Apply Bathymetry (Auto)</Value>\n <Items>\n <Item>auxiliary geometry</Item>\n <Item>averaging elevation radius</Item>\n <Item>set highest elevation</Item>\n <Item>set lowest elevation</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Apply Bathymetry (Model&Mesh)\">Apply Bathymetry (Model&Mesh)</Value>\n <Items>\n <Item>auxiliary geometry</Item>\n <Item>averaging elevation radius</Item>\n <Item>set highest elevation</Item>\n <Item>set lowest elevation</Item>\n <Item>mesh</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Apply Bathymetry (Model Only)\">Apply Bathymetry (Model Only)</Value>\n <Items>\n <Item>auxiliary geometry</Item>\n <Item>averaging elevation radius</Item>\n <Item>set highest elevation</Item>\n <Item>set lowest elevation</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Apply Bathymetry (Mesh only)\">Apply Bathymetry (Mesh Only)</Value>\n <Items>\n <Item>auxiliary geometry</Item>\n <Item>averaging elevation radius</Item>\n <Item>set highest elevation</Item>\n <Item>set lowest elevation</Item>\n <Item>mesh</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Remove Bathymetry\">Remove Bathymetry</Value>\n <Items>\n <Item>model</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </String>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"export mesh\" Label=\"export mesh\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"models\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>model|nodim</MembershipMask>\n </AssociationsDef>\n <ItemDefinitions>\n <MeshEntity Name=\"mesh\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\" />\n <File Name=\"filename\" Version=\"0\" NumberOfRequiredValues=\"1\" FileFilters=\"Aquaveo XMS 2D Mesh file (*.2dm);;Aquaveo XMS 3D Mesh file (*.3dm)\" />\n <String Name=\"model property name\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The name of the model property associated with the mesh.</BriefDescription>\n <DefaultValue></DefaultValue>\n </String>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"create faces\" Label=\"Faces - Create All\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>The model to which faces should be added.</BriefDescription>\n <DetailedDescription>\n The model to which faces should be added.\n </DetailedDescription>\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create model faces.</BriefDescription>\n <DetailedDescription>\n Create one or more faces in the given model.\n\n Faces with intersecting edges will cause new (split) edges to be created\n and used in place of those specifying the face.\n </DetailedDescription>\n </AttDef>\n <AttDef Type=\"create edge\" Label=\"Edge - Create Interactively\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>Vertices to join into an edge or the model to which edges should be added.</BriefDescription>\n <DetailedDescription>\n You must either (a) associate 2 or more model vertices to this\n operator or (b) associate a model into which edges should be\n inserted and specify points to connect into edges.\n\n You must not specify both a model and a list of vertices.\n </DetailedDescription>\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create model edge(s).</BriefDescription>\n <DetailedDescription>\n Create one or more edges in the associated model.\n\n Self-intersecting edges are not allowed.\n If any edge self-intersects, then new vertices are created intersection points\n and the edge is split at these points.\n In this way, it is possible for specified edges\n to be divided by this operator, resulting in an unexpected number of\n created model edges returned.\n\n Note that edges are not intersected with other edges (those specified here or\n pre-existing edges in the model).\n Any intersections between different edges are handled when faces are created.\n </DetailedDescription>\n <ItemDefinitions>\n <Int Name=\"construction method\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <ChildrenDefinitions>\n <Int Name=\"coordinates\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The number of coordinates per vertex.</BriefDescription>\n <DetailedDescription>\n When specifying coordinates for more than 1 vertex,\n this dictates how values are passed.\n When set to 2, the third coordinate is assumed to be 0 for all points.\n </DetailedDescription>\n <RangeInfo>\n <Min Inclusive=\"true\">2</Min>\n <Max Inclusive=\"true\">3</Max>\n </RangeInfo>\n </Int>\n <Int Name=\"offsets\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>Offsets into the list of points or vertices where each edge starts.</BriefDescription>\n <DetailedDescription>\n Offsets into the list of points or vertices where each edge starts.\n\n When \"points\" are specified, each offset value is multiplied by the value of \"coordinates\".\n Thus, regardless of whether \"points\" or \"vertices\" are passed, one would specify\n offsets equal to \"[0, 3, 5]\" to indicate the first edge has 3 vertices,\n the second edge has 2 vertices, and a third edge exists at the end of these two.\n </DetailedDescription>\n <DefaultValue>0</DefaultValue>\n </Int>\n <Double Name=\"points\" Version=\"0\" NumberOfRequiredValues=\"4\" Extensible=\"true\">\n <BriefDescription>The (x,y,z) coordinates of the edges.</BriefDescription>\n <DetailedDescription>\n The world coordinates of 1 or more edges.\n\n If only 2 coordinates are specified per point, the third is assumed to be 0.\n Be sure to set the value of the coordinates item as required.\n </DetailedDescription>\n </Double>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"2\">\n <Structure>\n <Value Enum=\"point coordinates\">0</Value>\n <Items>\n <Item>points</Item>\n <Item>coordinates</Item>\n <Item>offsets</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"vertex ids\">1</Value>\n <Items>\n <Item>offsets</Item>\n </Items>\n </Structure>\n <Value Enum=\"interactive widget\">2</Value>\n </DiscreteInfo>\n </Int>\n <Int Name=\"HelperGlobalID\" Label=\"Unique global ID for a helper object\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"extract surface contours\" Label=\"Edge - Create from Image Surfaces\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"Image\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The image auxiliary geometry to which this op will operate on.</BriefDescription>\n <DetailedDescription>\n The image auxiliary geometry to which the edge extraction will operate on. This auxiliary geometry should have an \"url\" string property.\n </DetailedDescription>\n <MembershipMask>aux_geom|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <Double Name=\"points\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"6\" Extensible=\"true\">\n <BriefDescription>The (x,y,z) coordinates of the edges.</BriefDescription>\n <DetailedDescription>\n The world coordinates of 1 or more edges.\n </DetailedDescription>\n </Double>\n <Int Name=\"coordinates\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The number of coordinates per vertex.</BriefDescription>\n <DetailedDescription>\n When specifying coordinates for more than 1 vertex,\n this dictates how values are passed.\n When set to 2, the third coordinate is assumed to be 0 for all points.\n </DetailedDescription>\n <DefaultValue>3</DefaultValue>\n <RangeInfo>\n <Min Inclusive=\"true\">2</Min>\n <Max Inclusive=\"true\">3</Max>\n </RangeInfo>\n </Int>\n <Int Name=\"offsets\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>Offsets into the list of \"points\" where each edge starts.</BriefDescription>\n <DetailedDescription>\n Offsets into the list of points where each edge starts.\n\n When \"edge points\" are specified, each offset value is multiplied by 3.\n Thus, where \"points\" are passed, one would specify\n offsets equal to \"[0, 3, 5]\" to indicate the first edge has 3 points,\n the second edge has 2 points, and a third edge exists at the end after these two.\n </DetailedDescription>\n <DefaultValue>0</DefaultValue>\n </Int>\n <Int Name=\"HelperGlobalID\" Label=\"Unique global ID for a helper object\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"set property\" Label=\"set property\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"Entities\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>any</MembershipMask>\n </AssociationsDef>\n <ItemDefinitions>\n <MeshEntity Name=\"meshes\" Version=\"0\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"0\" Extensible=\"true\" />\n <String Name=\"name\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The name of the property to set.</BriefDescription>\n </String>\n <Double Name=\"float value\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <BriefDescription>Floating-point value(s) of the property.</BriefDescription>\n </Double>\n <String Name=\"string value\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <BriefDescription>String value(s) of the property.</BriefDescription>\n </String>\n <Int Name=\"integer value\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <BriefDescription>Integer value(s) of the property.</BriefDescription>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"force create face\" Label=\"force create face\" BaseType=\"operator\" Version=\"0\" AdvanceLevel=\"1\" Unique=\"true\">\n <AssociationsDef Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>The model to which faces should be added or an ordered list of edges.</BriefDescription>\n <DetailedDescription>\n When the construction method is set to \"points\" (index 0), then the association must be a\n polygon-session model to which the face(s) should be added.\n\n When the construction method is set to \"edges\" (index 1), then the assocation must\n be an ordered list of edges bounding the face.\n The edges must ordered from head-to-tail in a counterclockwise loop around the\n outside of the face followed by clockwise loops for each hole in the face (if any).\n The orientation of each edge must be provided in the \"orientation\" item to indicate\n which direction the edge points relative to the loop to which it belongs.\n The edges must all belong to the same polygonal model.\n </DetailedDescription>\n <MembershipMask>cell|model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create a model face without sanity checks.</BriefDescription>\n <DetailedDescription>\n Create a model face from a sequence of points holding an outer loop and\n zero or more inner loops. Each loop will become a single edge.\n </DetailedDescription>\n <ItemDefinitions>\n <Int Name=\"construction method\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <ChildrenDefinitions>\n <Int Name=\"coordinates\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The number of coordinates per vertex.</BriefDescription>\n <DetailedDescription>\n Specify whether 2 or 3 coordinates are provided per vertex.\n When set to 2, the third coordinate is assumed to be 0 for all points.\n </DetailedDescription>\n <DefaultValue>2</DefaultValue>\n <RangeInfo>\n <Min Inclusive=\"true\">2</Min>\n <Max Inclusive=\"true\">3</Max>\n </RangeInfo>\n </Int>\n <Int Name=\"counts\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>The number of points or edges in each loop of a face.</BriefDescription>\n <DetailedDescription>\n The number of points or edges for the outer and 0 or more inner loops of each face.\n\n The first number specifies the number of edges in the outer loop of the face.\n The second number specifies the number of inner loops and is followed by\n the number of edges in each of those inner loops, respectively.\n This pattern may be repeated for multiple faces.\n\n If a single value of -1 is provided, then all points/edges are assumed to lie\n on the outer loop of a single face.\n </DetailedDescription>\n <DefaultValue>-1</DefaultValue>\n </Int>\n <Int Name=\"orientations\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>The orientation of each edge (+1 for positive, -1 for negative).</BriefDescription>\n <DetailedDescription>\n The orientation of each edge (+1 for positive, -1 for negative) to use for the face.\n Outer loops must be counter-clockwise and inner loops must be clockwise with respect to\n the face normal (the positive z axis for default models).\n\n This item must have the same number of values as the list of associated edges.\n </DetailedDescription>\n <DefaultValue>1</DefaultValue>\n </Int>\n <Double Name=\"points\" Version=\"0\" NumberOfRequiredValues=\"6\" Extensible=\"true\">\n <BriefDescription>The (x,y,z) coordinates of the face points.</BriefDescription>\n <DetailedDescription>\n The world coordinates of 3 or more points forming 1 or more faces.\n Inner loops and/or multiple faces may be created by providing a non-default \"counts\" item.\n If the default counts value (-1) is used, all points are assumed to be\n on the outer loop of a single face.\n\n If only 2 coordinates are specified per point, the third is assumed to be 0.\n Be sure to set the value of the coordinates item as required.\n </DetailedDescription>\n </Double>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"1\">\n <Structure>\n <Value Enum=\"points\">0</Value>\n <Items>\n <Item>points</Item>\n <Item>coordinates</Item>\n <Item>counts</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"edges\">1</Value>\n <Items>\n <Item>orientations</Item>\n <Item>counts</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"delete\" Label=\"Delete - Model Entities\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"entities\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>Model entities to delete.</BriefDescription>\n <DetailedDescription>\n Permanently delete all of these entities (and optionally all of\n the higher-dimensional entities they bound).\n </DetailedDescription>\n <MembershipMask>cell|aux_geom|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Delete model entities.</BriefDescription>\n <DetailedDescription>\n Permanently remove model entities (vertices, edges, faces) from a model.\n </DetailedDescription>\n <ItemDefinitions>\n <Void Name=\"delete dependents\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\">\n <BriefDescription>Should all dependent entities also be deleted?</BriefDescription>\n <DetailedDescription>\n When disabled (the default), if any associated model entity is\n related to a higher-dimensional model entity (i.e., as a part of its boundary),\n then the operation will fail.\n\n When enabled, all higher-dimensional model entities bounded\n by any of the associated model entities will also be deleted.\n Thus, deleting a vertex will also delete any edges and faces attached to it.\n </DetailedDescription>\n </Void>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"create model\" Label=\" Model - Create\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <BriefDescription>Create a planar model.</BriefDescription>\n <DetailedDescription>\n Create a model given a set of coordinate axes in 3D and a minimum feature size.\n </DetailedDescription>\n <ItemDefinitions>\n <String Name=\"name\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"1\">\n <BriefDescription>A user-assigned name for the model.</BriefDescription>\n <DetailedDescription>\n A user-assigned name for the model.\n The name need not be unique, but unique names are best.\n If not assigned, a machine-generated name will be assigned.\n </DetailedDescription>\n </String>\n <Int Name=\"construction method\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <ChildrenDefinitions>\n <Double Name=\"feature size\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The smallest resolvable edge length in world coordinates.</BriefDescription>\n <DetailedDescription>\n This is the smallest world-coordinate edge length that you wish\n resolved across all edges in a model.\n\n It is **not** a guarantee that vertices closer than this\n distance will be snapped together.\n It is **not** a guarantee that edges must always be longer than this.\n It **is** a guarantee that vertices further apart than the feature size\n and edges longer than the feature size will be properly resolved.\n\n This is not equivalent to a difference of 1 in the integer\n coordinate system used by the modeling session as then\n intersection points along short (but not feature-sized or\n smaller) lines would have unacceptable chord errors.\n </DetailedDescription>\n <DefaultValue>9.9999999999999995e-07</DefaultValue>\n </Double>\n <Int Name=\"model scale\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The denominator .</BriefDescription>\n <DetailedDescription>\n The length along which the associated entities should be swept.\n\n This parameter is optional.\n If unspecified or set to zero,\n the sweep distance is determined by the length of the\n \"extrusion direction\" item\n (or fails when the \"extrusion direction\" is ill-defined).\n </DetailedDescription>\n <DefaultValue>2310</DefaultValue>\n </Int>\n <Double Name=\"origin\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"3\">\n <BriefDescription>The base point (origin) of the model in 3D world coordinates.</BriefDescription>\n <DetailedDescription>\n This vector specifies where the model's origin lies in 3D.\n The x axis and y axis properties specify the planar coordinate system eminating from the origin.\n </DetailedDescription>\n <DefaultValue>0,0,0</DefaultValue>\n </Double>\n <Double Name=\"x axis\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"3\">\n <BriefDescription>Direction and length of planar unit-length x-axis in world coordinates.</BriefDescription>\n <DetailedDescription>\n The direction along which x varies in the planar model.\n This vector may not be zero.\n\n The length of this vector is ignored when _feature size_ is specified.\n When _model scale_ is specified instead of _feature size_, then the length of this\n vector in 3D corresponds to _model scale_ units in the planar model.\n </DetailedDescription>\n <DefaultValue>1,0,0</DefaultValue>\n </Double>\n <Double Name=\"y axis\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"3\">\n <BriefDescription>Direction and length of planar unit-length y-axis in world coordinates.</BriefDescription>\n <DetailedDescription>\n The direction along which y varies in the planar model.\n This vector may not be zero.\n\n The length of this vector is ignored when _feature size_ is specified.\n When _model scale_ is specified instead of _feature size_, then the length of this\n vector in 3D corresponds to _model scale_ units in the planar model.\n </DetailedDescription>\n <DefaultValue>0,1,0</DefaultValue>\n </Double>\n <Double Name=\"z axis\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"3\">\n <BriefDescription>Normal to the model plane in world coordinates.</BriefDescription>\n <DetailedDescription>\n The direction perpendicular to the planar model.\n This vector may not be zero but need not be normalized.\n </DetailedDescription>\n <DefaultValue>0,0,1</DefaultValue>\n </Double>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"0\">\n <Structure>\n <Value Enum=\"origin, 2 axes, and feature size\">0</Value>\n <Items>\n <Item>origin</Item>\n <Item>x axis</Item>\n <Item>y axis</Item>\n <Item>feature size</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"origin, normal, x axis, and feature size\">1</Value>\n <Items>\n <Item>origin</Item>\n <Item>x axis</Item>\n <Item>z axis</Item>\n <Item>feature size</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"origin, 2 axes, and model scale\">1</Value>\n <Items>\n <Item>origin</Item>\n <Item>x axis</Item>\n <Item>y axis</Item>\n <Item>model scale</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"import smtk model\" Label=\"import smtk model\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <File Name=\"filename\" Version=\"0\" NumberOfRequiredValues=\"1\" ShouldExist=\"true\" FileFilters=\"SMTK JSON Model (*.smtk *.json);;All files (*.*)\" />\n <Void Name=\"loadmesh\" Label=\"Load Analysis Mesh\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>Specify whether related analysis meshes (if exist) should be loaded with model </BriefDescription>\n </Void>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"create edge from points\" Label=\"Edge - Create from Points\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The model to which edge should be added.</BriefDescription>\n <DetailedDescription>\n The model to which the edge should be added.\n\n This is required in order to project point coordinates into\n the model plane.\n </DetailedDescription>\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create model edge based on a list of points.</BriefDescription>\n <DetailedDescription>\n Create one or more vertices in the associated model.\n </DetailedDescription>\n <ItemDefinitions>\n <Int Name=\"pointGeometry\" Label=\"Point Information\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>Point Geometry used to created the Edge.</BriefDescription>\n <DetailedDescription>\n Depending on the setting of 2D or 3D, this will consist of\n either a set of 2D or 3D points respectively\n </DetailedDescription>\n <ChildrenDefinitions>\n <Group Name=\"2DPoints\" Label=\"Coordinates\" Version=\"0\" NumberOfRequiredGroups=\"2\" Extensible=\"true\">\n <ComponentLabels CommonLabel=\"\" />\n <ItemDefinitions>\n <Double Name=\"points\" Label=\"Point\" Version=\"0\" NumberOfRequiredValues=\"2\">\n <ComponentLabels>\n <Label>X</Label>\n <Label>Y</Label>\n </ComponentLabels>\n </Double>\n </ItemDefinitions>\n </Group>\n <Group Name=\"3DPoints\" Label=\"Coordinates\" Version=\"0\" NumberOfRequiredGroups=\"2\" Extensible=\"true\">\n <ComponentLabels CommonLabel=\"\" />\n <ItemDefinitions>\n <Double Name=\"points\" Label=\"Point\" Version=\"0\" NumberOfRequiredValues=\"3\">\n <ComponentLabels>\n <Label>X</Label>\n <Label>Y</Label>\n <Label>Z</Label>\n </ComponentLabels>\n </Double>\n </ItemDefinitions>\n </Group>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"0\">\n <Structure>\n <Value Enum=\"2D: z=0\">2</Value>\n <Items>\n <Item>2DPoints</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"3D\">3</Value>\n <Items>\n <Item>3DPoints</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"split edge\" Label=\"Edge - Split\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"edge\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>The edge to split.</BriefDescription>\n <DetailedDescription>\n This is a model edge containing at least one point that is not a model-vertex.\n The edge will be removed and replaced by one or two new edges whose endpoint(s)\n are the model vertex.\n\n When the input edge is a loop with no model vertices,\n then the result is a new edge that has the model vertex as both endpoints;\n otherwise, 2 new model edges will be created.\n </DetailedDescription>\n <MembershipMask>edge</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Split a model edge at the given point.</BriefDescription>\n <DetailedDescription>\n Split a model edge in two at the given point.\n\n The given point must be a non-model-vertex point of the model edge.\n If the model edge has no model vertices, the result will be a single\n new edge with the given point promoted to a model vertex.\n Otherwise 2 new edges are created.\n Regardless, the input edge is always destroyed; it is never modified.\n </DetailedDescription>\n <ItemDefinitions>\n <Double Name=\"point\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"2\" Extensible=\"true\">\n <BriefDescription>The point where the edge should be split.</BriefDescription>\n <DetailedDescription>\n The world coordinates of the point where the edge should be split.\n </DetailedDescription>\n </Double>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"create vertices\" Label=\"Vertex - Create\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The model to which vertices should be added.</BriefDescription>\n <DetailedDescription>\n The model to which vertices should be added.\n\n This is required in order to project point coordinates into\n the model plane.\n </DetailedDescription>\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create model vertices.</BriefDescription>\n <DetailedDescription>\n Create one or more vertices in the associated model.\n </DetailedDescription>\n <ItemDefinitions>\n <Int Name=\"point dimension\" Label=\"Vertex Information\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>Point Geometry used to created Vertices.</BriefDescription>\n <DetailedDescription>\n Depending on the setting of 2D or 3D, this will consist of\n either a set of 2D or 3D points respectively\n </DetailedDescription>\n <ChildrenDefinitions>\n <Group Name=\"2d points\" Label=\"Coordinates\" Version=\"0\" NumberOfRequiredGroups=\"1\" Extensible=\"true\">\n <ComponentLabels CommonLabel=\"\" />\n <ItemDefinitions>\n <Double Name=\"points\" Label=\"Point\" Version=\"0\" NumberOfRequiredValues=\"2\">\n <ComponentLabels>\n <Label>X</Label>\n <Label>Y</Label>\n </ComponentLabels>\n </Double>\n </ItemDefinitions>\n </Group>\n <Group Name=\"3d points\" Label=\"Coordinates\" Version=\"0\" NumberOfRequiredGroups=\"1\" Extensible=\"true\">\n <ComponentLabels CommonLabel=\"\" />\n <ItemDefinitions>\n <Double Name=\"points\" Label=\"Point\" Version=\"0\" NumberOfRequiredValues=\"3\">\n <ComponentLabels>\n <Label>X</Label>\n <Label>Y</Label>\n <Label>Z</Label>\n </ComponentLabels>\n </Double>\n </ItemDefinitions>\n </Group>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"0\">\n <Structure>\n <Value Enum=\"2D: z=0\">2</Value>\n <Items>\n <Item>2d points</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"3D\">3</Value>\n <Items>\n <Item>3d points</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"write mesh\" Label=\"write mesh\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <MeshEntity Name=\"mesh\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\" />\n <File Name=\"filename\" Version=\"0\" NumberOfRequiredValues=\"1\" FileFilters=\"MOAB native file (*.h5m *.mhdf);;Exodus II file (*.exo *.exoII *.exo2 *.g *.gen);;Kitware VTK file (*.vtk);;SLAC file (*.slac);;General Mesh Viewer (GMV) file (*.gmv);;Ansys file (*.ans);;Gmsh file (*.msh *.gmsh);;Stereo Lithography file (*.stl)\" />\n <Int Name=\"write-component\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <DiscreteInfo DefaultIndex=\"0\">\n <Value Enum=\"Entire Collection\">0</Value>\n <Value Enum=\"Only Domain\">1</Value>\n <Value Enum=\"Only Dirichlet\">2</Value>\n <Value Enum=\"Only Neumann\">3</Value>\n </DiscreteInfo>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"add auxiliary geometry\" Label=\" Model - Add Auxiliary Geometry\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"entities\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>model|aux_geom|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <File Name=\"url\" Label=\"Filename\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" NumberOfRequiredValues=\"1\" ShouldExist=\"true\" FileFilters=\"Image files (*.tif *.tiff *.dem);;VTK files (*.vti *.vtp *.vtu *.vtm);;Wavefront OBJ files (*.obj);;Point Cloud Files (*.pts);;All files (*.*)\">\n <BriefDescription>The file containing the auxiliary scene geometry.</BriefDescription>\n </File>\n <String Name=\"type\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The type of data at the specified URL.</BriefDescription>\n <DetailedDescription>\n The type of data at the specified URL.\n The default value is an empty string, which indicates that the type\n is to be inferred from the URL.\n Valid vales are currently: \"vtp\", \"vtu\", \"vti\", \"tif\", \"dem\", and \"vtm\".\n </DetailedDescription>\n <DefaultValue></DefaultValue>\n </String>\n <Int Name=\"dimension\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The dimension of the geometric point locus related to this entity.</BriefDescription>\n <DetailedDescription>\n The dimension of the geometric point locus related to this entity.\n\n If negative, then the dimension is unspecified and assumed either\n to be unknown or to consist of multiple geometric primitives of different dimension.\n The dimension affects the order in which rendering occurs (so that edges are drawn\n on top of coincident faces and so forth).\n </DetailedDescription>\n <DiscreteInfo DefaultIndex=\"4\">\n <Value Enum=\"point\">0</Value>\n <Value Enum=\"curve\">1</Value>\n <Value Enum=\"surface\">2</Value>\n <Value Enum=\"volume\">3</Value>\n <Value Enum=\"mixed- or unknown-dimension\">-1</Value>\n </DiscreteInfo>\n </Int>\n <Void Name=\"separate representation\" Label=\"Display as separate representation from model\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>\n Should the auxiliary geometry's representation be separate from its owning model's?\n </BriefDescription>\n <DetailedDescription>\n Should the auxiliary geometry's representation be separate from its owning model's?\n If yes, a separate rendering pipeline will be created for auxiliary geometry and\n its representation will be controlled with its own set of display properties;\n if no, the geometry will be shown and controlled as sub-blocks in the model's multiblock dataset,\n which may be less flexible.\n </DetailedDescription>\n </Void>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"demote vertex\" Label=\"Vertex - Demote\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"vertex\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The vertex to demote.</BriefDescription>\n <DetailedDescription>\n The vertex will be deleted if the operation is successful (and not otherwise).\n </DetailedDescription>\n <MembershipMask>vertex</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Demote a model vertex.</BriefDescription>\n <DetailedDescription>\n Demote a model vertex where 1 edge forms a loop with itself or 2 edges meet.\n\n The vertex will be deleted.\n\n The given vertex must have 0 or 2 edge-incidences, whether they are from\n the same edge or 2 distinct edges.\n\n If 2 distinct edges were incident, one of them will be deleted and\n the other will subsume the points along both edge's sequences.\n </DetailedDescription>\n </AttDef>\n <AttDef Type=\"entity group\" Label=\"entity group\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n <String Name=\"Operation\" Label=\"Operation\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>operation for the operator</BriefDescription>\n <ChildrenDefinitions>\n <Void Name=\"Edge\" Label=\"Edge\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>Allow edge to be added to the group.\n </BriefDescription>\n </Void>\n <Void Name=\"Face\" Label=\"Face\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>Allow face to be added to the group.\n </BriefDescription>\n </Void>\n <Void Name=\"Vertex\" Label=\"Vertex\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>Allow vertex to be added to the group.\n </BriefDescription>\n </Void>\n <Void Name=\"Volume\" Label=\"Volume\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>Allow volume to be added to the group.\n </BriefDescription>\n </Void>\n <ModelEntity Name=\"cell to add\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>cell|123</MembershipMask>\n </ModelEntity>\n <ModelEntity Name=\"cell to remove\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>cell|123</MembershipMask>\n </ModelEntity>\n <String Name=\"group name\" Label=\"group name\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <DefaultValue>new group</DefaultValue>\n </String>\n <Int Name=\"group type\" Label=\"Group Type:\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>Group type for the discrete model kernel:\n Boundary group (face or edge) is not partitioned, meaning each entity can belong to multiple boundary groups;\n Domain group (volume or face) is partitioned, meaning each entity will only belong to one domain group.\n </BriefDescription>\n <DiscreteInfo DefaultIndex=\"0\">\n <Value Enum=\"Cover\">0</Value>\n <Value Enum=\"Partition\">1</Value>\n </DiscreteInfo>\n </Int>\n <ModelEntity Name=\"modify cell group\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>group|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n <ModelEntity Name=\"remove cell group\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>group|nodim</MembershipMask>\n </ModelEntity>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"0\">\n <Structure>\n <Value Enum=\"Create Group\">Create</Value>\n <Items>\n <Item>group name</Item>\n <Item>cell to add</Item>\n <Item>Vertex</Item>\n <Item>Edge</Item>\n <Item>Face</Item>\n <Item>Volume</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Remove Group\">Remove</Value>\n <Items>\n <Item>remove cell group</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Modify Group\">Modify</Value>\n <Items>\n <Item>modify cell group</Item>\n <Item>cell to add</Item>\n <Item>cell to remove</Item>\n <Item>Vertex</Item>\n <Item>Edge</Item>\n <Item>Face</Item>\n <Item>Volume</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </String>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"export edges to vtk\" Label=\" Model - Export edges to VTK\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"models\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <File Name=\"filename\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The destination VTK file.</BriefDescription>\n </File>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"delete mesh\" Label=\"Delete - Mesh\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <MeshEntity Name=\"mesh\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\" />\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"add image\" Label=\" Model - Add Image\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"entities\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>model|aux_geom|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <File Name=\"url\" Label=\"Image File Name\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" NumberOfRequiredValues=\"1\" ShouldExist=\"true\" FileFilters=\"Image files (*.tif *.tiff *.dem *.vti);;All files (*.*)\">\n <BriefDescription>The file containing the image.</BriefDescription>\n </File>\n <Void Name=\"separate representation\" Label=\"Display as separate representation from model\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" AdvanceLevel=\"1\">\n <BriefDescription>\n Should the auxiliary geometry's representation be separate from its owning model's?\n </BriefDescription>\n <DetailedDescription>\n Should the auxiliary geometry's representation be separate from its owning model's?\n If yes, a separate rendering pipeline will be created for auxiliary geometry and\n its representation will be controlled with its own set of display properties;\n if no, the geometry will be shown and controlled as sub-blocks in the model's multiblock dataset,\n which may be less flexible.\n </DetailedDescription>\n </Void>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"import\" Label=\"import\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <File Name=\"filename\" Label=\"File Name\" Version=\"0\" NumberOfRequiredValues=\"1\" ShouldExist=\"true\" FileFilters=\"Legacy VTK files (*.vtk);;Solids (*.2dm *.3dm *.stl *.sol *.tin *.obj);;Map files (*.map);;Poly files (*.poly *.smesh);;Shape files (*.shp);;All files (*.*)\" />\n <String Name=\"ShapeBoundaryStyle\" Label=\"Specify Shape File Boundary\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"true\" NumberOfRequiredValues=\"1\">\n <BriefDescription>This is required for shape file </BriefDescription>\n <ChildrenDefinitions>\n <String Name=\"absolute bounds\" Label=\"Bounding box coordinates\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>left, right, bottom, top</BriefDescription>\n </String>\n <String Name=\"absolute margin\" Label=\"Absolute margin\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>all or left+right, bottom+top or left, right, bottom, top</BriefDescription>\n <DefaultValue>1</DefaultValue>\n </String>\n <File Name=\"imported polygon\" Label=\"Bounding polyline file\" Version=\"0\" NumberOfRequiredValues=\"1\" ShouldExist=\"true\" FileFilters=\"Shape files (*.shp)\" />\n <String Name=\"relative margin\" Label=\"As fraction of data diameter\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <DefaultValue>5</DefaultValue>\n </String>\n </ChildrenDefinitions>\n <DiscreteInfo DefaultIndex=\"0\">\n <Value Enum=\"Import File As-is\">None</Value>\n <Structure>\n <Value Enum=\"Set Relative Margin\">Relative Margin</Value>\n <Items>\n <Item>relative margin</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Set Absolute Margin\">Absolute Margin</Value>\n <Items>\n <Item>absolute margin</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Set Bounding Box\">Bounding Box</Value>\n <Items>\n <Item>absolute bounds</Item>\n </Items>\n </Structure>\n <Structure>\n <Value Enum=\"Set Bounding File\">Bounding File</Value>\n <Items>\n <Item>imported polygon</Item>\n </Items>\n </Structure>\n </DiscreteInfo>\n </String>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"close model\" Label=\" Model - Close\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>model|nodim</MembershipMask>\n </ModelEntity>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"tweak edge\" Label=\"Edge - Reshape\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"edge\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <BriefDescription>An edge to be reshaped.</BriefDescription>\n <DetailedDescription>\n This edge will have its sequence of points replaced with\n those provided in the \"points\" item.\n If the \"promote\" item contains any positive integers,\n then the corresponding points will be promoted to model\n vertices by splitting the edge at that point.\n </DetailedDescription>\n <MembershipMask>edge</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Tweak the shape of a model edge.</BriefDescription>\n <DetailedDescription>\n Replace all the point coordinates of an edge.\n\n Self-intersecting edges are not allowed but no tests are performed to prevent them.\n\n The edge can be split at points along the list of new coordinates by\n passing the indices of those points you wish to promote into model vertices.\n </DetailedDescription>\n <ItemDefinitions>\n <Double Name=\"points\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"4\" Extensible=\"true\">\n <BriefDescription>The (x,y,z) coordinates of the edges.</BriefDescription>\n <DetailedDescription>\n The world coordinates of 1 or more edges.\n\n If only 2 coordinates are specified per point, the third is assumed to be 0.\n Be sure to set the value of the coordinates item as required.\n </DetailedDescription>\n </Double>\n <Int Name=\"coordinates\" Version=\"0\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The number of coordinates per vertex.</BriefDescription>\n <DetailedDescription>\n When specifying coordinates for more than 1 vertex,\n this dictates how values are passed.\n When set to 2, the third coordinate is assumed to be 0 for all points.\n </DetailedDescription>\n <RangeInfo>\n <Min Inclusive=\"true\">2</Min>\n <Max Inclusive=\"true\">3</Max>\n </RangeInfo>\n </Int>\n <Int Name=\"promote\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"1\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>Indices into the list of points indicating model vertices.</BriefDescription>\n <DetailedDescription>\n By default, the input edge will have only its tessellation modified.\n\n If any values between 0 and N - 1 (where N is the number of points provided\n to \"tweak edge\"), then the edge will be split at the corresponding point\n immediately after the edge is reshaped.\n\n If the endpoints of the input edge were 1 or 2 model vertices (depending\n on whether the input edge was periodic), then they will be preserved as\n model vertices afterwards, regardless of the value of \"promote\".\n </DetailedDescription>\n </Int>\n <Int Name=\"HelperGlobalID\" Label=\"Unique global ID for a helper object\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"1\">\n <DefaultValue>0</DefaultValue>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"mesh\" Label=\"mesh\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"model\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>any</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n <String Name=\"endpoint\" Version=\"0\" NumberOfRequiredValues=\"1\" />\n <String Name=\"remusRequirements\" Version=\"0\" NumberOfRequiredValues=\"1\" />\n <String Name=\"meshingControlAttributes\" Version=\"0\" NumberOfRequiredValues=\"1\" />\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"export model json\" Label=\"export model json\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"models\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <File Name=\"filename\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>The destination file for the JSON.</BriefDescription>\n </File>\n <Int Name=\"flags\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <BriefDescription>Flags used to control what is written.</BriefDescription>\n <DefaultValue>255</DefaultValue>\n </Int>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"create edge from vertices\" Label=\"Edge - Create from Vertices\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"Model Vertices\" Version=\"0\" NumberOfRequiredValues=\"2\">\n <BriefDescription>The vertices used to form the edge.</BriefDescription>\n <DetailedDescription>\n The pair of model vertices to be used to create a model edge..\n </DetailedDescription>\n <MembershipMask>vertex</MembershipMask>\n <ComponentLabels>\n <Label />\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create model edge.</BriefDescription>\n <DetailedDescription>\n Create a model edge from a pair of model vertices.\n </DetailedDescription>\n </AttDef>\n <AttDef Type=\"export smtk model\" Label=\" Model - Save\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"models\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <MembershipMask>model|nodim</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <ItemDefinitions>\n <File Name=\"filename\" Label=\"SMTK Model File Name \" Version=\"0\" NumberOfRequiredValues=\"1\" FileFilters=\"SMTK Model (*.smtk);;All files (*.*)\">\n <BriefDescription>The destination file for the JSON.</BriefDescription>\n </File>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"create faces from edges\" Label=\"Faces - Create from Edges\" BaseType=\"operator\" Version=\"0\" Unique=\"true\">\n <AssociationsDef Name=\"Model Edges\" Version=\"0\" NumberOfRequiredValues=\"1\" Extensible=\"true\">\n <BriefDescription>The edges used to form the faces.</BriefDescription>\n <DetailedDescription>\n The set of model edges that will be used to create faces from.\n </DetailedDescription>\n <MembershipMask>edge</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </AssociationsDef>\n <BriefDescription>Create model faces.</BriefDescription>\n <DetailedDescription>\n Create one or more faces in the given model based on a set of edges.\n\n Faces with intersecting edges will cause new (split) edges to be created\n and used in place of those specifying the face.\n </DetailedDescription>\n </AttDef>\n <AttDef Type=\"result\" Label=\"result\" BaseType=\"\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <Int Name=\"outcome\" Version=\"0\" NumberOfRequiredValues=\"1\" />\n <ModelEntity Name=\"created\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>any</MembershipMask>\n </ModelEntity>\n <ModelEntity Name=\"modified\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>any</MembershipMask>\n </ModelEntity>\n <ModelEntity Name=\"expunged\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>any</MembershipMask>\n </ModelEntity>\n <String Name=\"log\" Version=\"0\" Optional=\"true\" IsEnabledByDefault=\"false\" NumberOfRequiredValues=\"0\" Extensible=\"true\" />\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(create edge from vertices)\" Label=\"result(create edge from vertices)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(apply bathymetry)\" Label=\"result(apply bathymetry)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"tess_changed\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>any</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n <MeshEntity Name=\"mesh_modified\" Version=\"0\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"0\" Extensible=\"true\" />\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(extract contours)\" Label=\"result(extract contours)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(write mesh)\" Label=\"result(write mesh)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(create faces)\" Label=\"result(create faces)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(force create face)\" Label=\"result(force create face)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(create model)\" Label=\"result(create model)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(create vertices)\" Label=\"result(create vertices)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(create edge from points)\" Label=\"result(create edge from points)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(import)\" Label=\"result(import)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(close model)\" Label=\"result(close model)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(create faces from edges)\" Label=\"result(create faces from edges)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(export smtk model)\" Label=\"result(export smtk model)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(export mesh)\" Label=\"result(export mesh)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(set property)\" Label=\"result(set property)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <MeshEntity Name=\"mesh_modified\" Version=\"0\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"0\" Extensible=\"true\" />\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(mesh)\" Label=\"result(mesh)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"mesh_created\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>any</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(extract surface contours)\" Label=\"result(extract surface contours)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(create edge)\" Label=\"result(create edge)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(add auxiliary geometry)\" Label=\"result(add auxiliary geometry)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"tess_changed\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>any</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(delete mesh)\" Label=\"result(delete mesh)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <MeshEntity Name=\"mesh_expunged\" Version=\"0\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"0\" Extensible=\"true\" />\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(import smtk model)\" Label=\"result(import smtk model)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"mesh_created\" Version=\"0\" AdvanceLevel=\"11\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>any</MembershipMask>\n </ModelEntity>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(delete)\" Label=\"result(delete)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(export model json)\" Label=\"result(export model json)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(split edge)\" Label=\"result(split edge)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(entity group)\" Label=\"result(entity group)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(add image)\" Label=\"result(add image)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"tess_changed\" Version=\"0\" NumberOfRequiredValues=\"1\">\n <MembershipMask>any</MembershipMask>\n <ComponentLabels>\n <Label />\n </ComponentLabels>\n </ModelEntity>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(tweak edge)\" Label=\"result(tweak edge)\" BaseType=\"result\" Version=\"0\" Unique=\"true\">\n <ItemDefinitions>\n <ModelEntity Name=\"tess_changed\" Version=\"0\" NumberOfRequiredValues=\"0\" Extensible=\"true\">\n <MembershipMask>any</MembershipMask>\n </ModelEntity>\n </ItemDefinitions>\n </AttDef>\n <AttDef Type=\"result(export edges to vtk)\" Label=\"result(export edges to vtk)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n <AttDef Type=\"result(demote vertex)\" Label=\"result(demote vertex)\" BaseType=\"result\" Version=\"0\" Unique=\"true\" />\n </Definitions>\n <!--********** Workflow Views ***********-->\n <Views>\n <View Type=\"smtkPolygonEdgeView\" Title=\"Create Polygon Edge\">\n <AttributeTypes>\n <Att Type=\"create edge\" />\n </AttributeTypes>\n </View>\n <View Type=\"smtkPolygonVertexView\" Title=\"Demote Polygon Vertex\">\n <AttributeTypes>\n <Att Type=\"demote vertex\" />\n </AttributeTypes>\n </View>\n <View Type=\"smtkPolygonContourView\" Title=\"Extract Contour Edges\">\n <AttributeTypes>\n <Att Type=\"extract contours\" />\n </AttributeTypes>\n </View>\n <View Type=\"smtkSurfaceExtractorView\" Title=\"Extract Surface Edges\">\n <AttributeTypes>\n <Att Type=\"extract surface contours\" />\n </AttributeTypes>\n </View>\n <View Type=\"smtkPolygonEdgeView\" Title=\"Split Polygon Edge\">\n <AttributeTypes>\n <Att Type=\"split edge\" />\n </AttributeTypes>\n </View>\n <View Type=\"smtkPolygonEdgeView\" Title=\"Tweeak Polygon Edge\">\n <AttributeTypes>\n <Att Type=\"tweak edge\" />\n </AttributeTypes>\n </View>\n </Views>\n</SMTK_AttributeSystem>\n" + } +} \ No newline at end of file