diff --git a/partially_filled_coax.areas.json b/partially_filled_coax.areas.json deleted file mode 100644 index 5d26d89..0000000 --- a/partially_filled_coax.areas.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "geometries": [ - { - "geometry": "Vacuum_0", - "area": 4005.5306333269873 - }, - { - "geometry": "Dielectric_1", - "area": 1884.9555921538756 - }, - { - "geometry": "Conductor_0", - "area": 7853.98163397448 - }, - { - "geometry": "Conductor_1", - "area": 1963.49540849362 - } - ] -} \ No newline at end of file diff --git a/src/AreaExporterService.py b/src/AreaExporterService.py index c11401d..4d8e9d3 100644 --- a/src/AreaExporterService.py +++ b/src/AreaExporterService.py @@ -11,18 +11,23 @@ def __init__(self): "geometries": [] } - def addComputedArea(self, geometry:str, area:float): + def addComputedArea(self, geometry:str, label:str, area:float): geometry:Dict ={ "geometry": geometry, - "area": area, + "label": label, + "area": round(area,6), } self.computedAreas['geometries'].append(geometry) - def addPhysicalModelOfDimension(self, dimension=2): + def addPhysicalModelOfDimension(self, mappedElements:Dict[str,str], dimension=2): physicalGroups = gmsh.model.getPhysicalGroups(dimension) for physicalGroup in physicalGroups: entityTags = gmsh.model.getEntitiesForPhysicalGroup(*physicalGroup) geometryName = gmsh.model.getPhysicalName(*physicalGroup) + label = '' + for key, geometry in mappedElements.items(): + if geometry == geometryName: + label = key for tag in entityTags: if dimension == 1: rad = gmsh.model.occ.getMass(dimension, tag) / (2*np.pi) @@ -30,7 +35,7 @@ def addPhysicalModelOfDimension(self, dimension=2): if dimension == 2: area = gmsh.model.occ.getMass(dimension, tag) if geometryName != AreaExporterService._EMPTY_NAME_CASE: - self.addComputedArea(geometryName, area) + self.addComputedArea(geometryName, label, area) def exportToJson(self, exportFileName:str): with open(exportFileName + ".areas.json", 'w') as f: diff --git a/src/Graph.py b/src/Graph.py new file mode 100644 index 0000000..2806609 --- /dev/null +++ b/src/Graph.py @@ -0,0 +1,119 @@ +from collections import defaultdict, deque +from typing import Dict, List, Tuple + +class Graph: + def __init__(self): + self._nodes:List = [] + self._edges:List[Tuple] = [] + + @property + def roots(self) -> List: + roots:List = [] + for node in self._nodes: + isChild = False + for edge in self._edges: + if edge[-1] == node: + isChild = True + continue + if isChild == False: + roots.append(node) + return roots.copy() + + @property + def nodes(self) -> List: + return self._nodes.copy() + + @property + def edges(self) -> List: + return self._edges.copy() + + @nodes.setter + def nodes(self, nodes): + self._nodes = list(nodes) + + @edges.setter + def edges(self, edges): + self._edges = [tuple(e) for e in edges] + + def add_node(self, node): + if node not in self._nodes: + self._nodes.append(node) + + def add_edge(self, source, destination): + if source not in self._nodes: + self.add_node(source) + if destination not in self._nodes: + self.add_node(destination) + if (source, destination) not in self._edges: + self._edges.append((source, destination)) + + def get_connections(self): + connections = {node: [] for node in self._nodes} + for source, destination in self._edges: + connections[source].append(destination) + return connections + + def getParentNodes(self) -> List: + return [edge[0] for edge in self._edges] + + def getChildNodes(self) -> List: + return [edge[-1] for edge in self._edges] + + #Necesita una revisión pero por ahora hace lo que necesito + def prune_to_longest_paths(self): + connections = self.get_connections() + roots = [n for n in self._nodes if n not in self.getChildNodes()] + + longest_paths = [] + + def dfs(node, path): + path = path + [node] + if node not in connections or not connections[node]: + longest_paths.append(path) + return + for child in connections[node]: + dfs(child, path) + + for root in roots: + dfs(root, []) + + leaf_to_path = {} + for path in longest_paths: + leaf = path[-1] + if leaf not in leaf_to_path or len(path) > len(leaf_to_path[leaf]): + leaf_to_path[leaf] = path + + new_nodes = set() + new_edges = set() + for path in leaf_to_path.values(): + new_nodes.update(path) + new_edges.update([(path[i], path[i+1]) for i in range(len(path)-1)]) + + self._nodes = list(new_nodes) + self._edges = list(new_edges) + + def getAdyacencyTree(self) -> Dict: + tree = defaultdict(list) + for root in self.roots: + tree[''].append(root) + for parent, child in self._edges: + tree[parent].append(child) + return tree + + def getNodesByLevels(self) -> List: + adyacencyTree = self.getAdyacencyTree() + qeue = deque([('',0)]) + nodeList = [] + while qeue: + node,level = qeue.popleft() + nodeList.append(node) + for child in adyacencyTree[node]: + qeue.append((child, level+1)) + return nodeList[1:] #Removes case 0 that is not part of nodes + + def _reorderData(self) -> None: + self._edges = sorted(self._edges) + self._nodes = sorted(self._nodes) + + def __str__(self): + return f"Graph(Nodes: {self._nodes},\n Edges: {self._edges})" \ No newline at end of file diff --git a/src/ShapesClassification.py b/src/ShapesClassification.py index 8bef68a..baca977 100644 --- a/src/ShapesClassification.py +++ b/src/ShapesClassification.py @@ -1,67 +1,88 @@ +from enum import Enum +import json +import math +from time import sleep from typing import Any, Tuple, List, Dict import gmsh + +from src.Graph import Graph from .BoundingBox import BoundingBox from itertools import chain import numpy as np class ShapesClassification: - isOpenCase:bool + _ROUND_VALUE:int = 6 + isOpenCase:bool + crossSectionData: Dict[str,List[Dict[str,any]]] + pecs: Dict[str,List[Tuple[int,int]]] + dielectrics: Dict[str,List[Tuple[int,int]]] + nestedGraph: Graph - def __init__(self, shapes): + def __init__(self, shapes, jsonFile:str): gmsh.model.occ.synchronize() self.allShapes = shapes - self.pecs = self.get_surfaces_with_label(shapes, "Conductor_") - self.dielectrics = self.get_surfaces_with_label(shapes, "Dielectric_") - self.open = self.get_surfaces_with_label(shapes, "OpenBoundary_") + with open(jsonFile) as f: + jsonData = json.load(f) + self.crossSectionData = jsonData['CrossSection'] + self.pecs = self.get_pecs(shapes) + self.dielectrics = self.get_dielectrics(shapes) self.vacuum = dict() - + self.open = dict() + self.nestedGraph = self.__getNestedGraph() self.isOpenCase = self.isOpenProblem() - if len(self.open) > 1: - raise ValueError("Only one open region is allowed.") - @staticmethod def getNumberFromName(entity_name: str, label: str): ini = entity_name.rindex(label) + len(label) num = int(entity_name[ini:]) return num - @staticmethod - def get_surfaces_with_label(entity_tags, label: str): - surfaces = dict() + def get_pecs(self, entity_tags) -> Dict[str, Dict[str,any]]: + pecNames = self.__getGeometryNamesByMaterialType('PEC') + pecs = dict() for s in entity_tags: - name = gmsh.model.get_entity_name(*s) - if s[0] != 2 or label not in name: + name = gmsh.model.get_entity_name(*s).split('/')[-1] + if s[0] != 2 or name not in pecNames: continue - num = ShapesClassification.getNumberFromName(name, label) - surfaces[num] = [s] - - return surfaces - - def isOpenProblem(self): - elements = list(chain(self.pecs.values())) - for idx, element in enumerate(elements): - for otheridx, otherElement in enumerate(elements[idx+1:]): - if element != otherElement: - intersect = gmsh.model.occ.intersect( - element, - otherElement, - removeObject=False, - tag=300+otheridx, - removeTool=False - )[0] - if intersect: - return False - return True + pecs[name] = [s] + + return pecs + + def get_dielectrics(self, entity_tags) -> Dict[str, Dict[str,any]]: + dielectricNames = self.__getGeometryNamesByMaterialType('Dielectric') + dielectrics = dict() + for s in entity_tags: + name = gmsh.model.get_entity_name(*s).split('/')[-1] + if s[0] != 2 or name not in dielectricNames: + continue + dielectrics[name] = [s] + + return dielectrics + + def __getGeometryNamesByMaterialType(self, materialType:str) -> List[str]: + names = [ + geometry['name'] + for geometry in self.crossSectionData + if geometry['material']['type'] == materialType + ] + return names + + def isOpenProblem(self) -> None: + roots = self.nestedGraph.roots + if len(roots) > 1: #Más de un componente pec/pec pec/dielectric dielectric/dielectric etc da al exterior + return True + if roots[0] in self.dielectrics.keys(): #El único root es un dielectrico + return True + return False def removeConductorsFromDielectrics(self): for num, diel in self.dielectrics.items(): pec_surfs = [] for num2, pec_surf in self.pecs.items(): - if num2 == 0 and not self.isOpenCase: + if (num2 in self.nestedGraph.roots) and (not self.isOpenCase): continue pec_surfs.extend(pec_surf) self.dielectrics[num] = gmsh.model.occ.cut(diel, pec_surfs, removeTool=False)[0] @@ -69,51 +90,32 @@ def removeConductorsFromDielectrics(self): gmsh.model.occ.synchronize() def ensureDielectricsDoNotOverlap(self): - for n1, diel1 in self.dielectrics.items(): - others = list( - chain( - *[x[1] for x in self.dielectrics.items() if x[0] != n1] - ) - ) + for currentKey in self.dielectrics.keys(): + + others = list(chain(*[tag for key, tag in self.dielectrics.items() if currentKey != key])) if len(others) == 0: continue - self.dielectrics[n1] = gmsh.model.occ.cut( - self.dielectrics[n1], others, removeObject=True, removeTool=False)[0] + self.dielectrics[currentKey] = gmsh.model.occ.cut( + self.dielectrics[currentKey], others, removeObject=True, removeTool=False + )[0] gmsh.model.occ.synchronize() def buildVacuumDomain(self): - if self.isOpenCase and len(self.open) == 0: + if self.isOpenCase: self.vacuum = self._buildDefaultVacuumDomain() - elif self.isOpenCase and len(self.open) > 0: - self.vacuum = self._buildVacuumDomainFromOpenBoundary() else: self.vacuum = self._buildClosedVacuumDomain() return self.vacuum - def _buildVacuumDomainFromOpenBoundary(self) -> Dict[int, List[int]]: - dom = self.open[0] - - surfsToRemove = [] - for num, surf in self.pecs.items(): - surfsToRemove.extend(surf) - - for _, surf in self.dielectrics.items(): - surfsToRemove.extend(surf) - - dom = gmsh.model.occ.cut( - dom, surfsToRemove, removeObject=False, removeTool=False)[0] - gmsh.model.occ.synchronize() - - return dict([[0, dom]]) - def _buildClosedVacuumDomain(self) -> Tuple[int, int]: - dom = self.pecs[0] + root = self.nestedGraph.roots[0] + dom = self.pecs[root] surfsToRemove = [] for num, surf in self.pecs.items(): - if num == 0: + if num == root: continue surfsToRemove.extend(surf) @@ -122,7 +124,7 @@ def _buildClosedVacuumDomain(self) -> Tuple[int, int]: dom = gmsh.model.occ.cut( dom, surfsToRemove, removeObject=False, removeTool=False)[0] gmsh.model.occ.synchronize() - return dict([[0, dom]]) + return dict([['Vacuum_0', dom]]) def _buildDefaultVacuumDomain(self): NEAR_REGION_BOUNDING_BOX_SCALING_FACTOR = 1.25 @@ -151,7 +153,7 @@ def _buildDefaultVacuumDomain(self): farVacuumDiameter, farVacuumDiameter))] gmsh.model.occ.synchronize() - self.open = dict([[0, gmsh.model.getBoundary(farVacuum)]]) + self.open = dict([['OpenBoundary_0', gmsh.model.getBoundary(farVacuum)]]) farVacuum = gmsh.model.occ.cut( farVacuum, nearVacuum, removeObject=True, removeTool=False)[0] @@ -170,10 +172,47 @@ def _buildDefaultVacuumDomain(self): innerRegion = gmsh.model.getBoundary(nearVacuum, recursive=True) gmsh.model.mesh.setSize(innerRegion, minSide / 20) - - gmsh.model.occ.synchronize() - return dict([[0, nearVacuum], [1, farVacuum]]) + return dict([['Vacuum_0', nearVacuum], ['Vacuum_1', farVacuum]]) + def __getNestedGraph(self): + gmsh.model.occ.synchronize() + graph = Graph() + elements:Dict = {} + elements = {**self.pecs, **self.dielectrics} + for key in elements: + graph.add_node(key) + for i, keyA in enumerate(elements): + for j, keyB in enumerate(elements): + if i < j: + inter = gmsh.model.occ.intersect( + elements[keyA], + elements[keyB], + removeObject=False, + removeTool=False + ) + if len(inter[1][0]) == 0: #comprueba las intersecciones en las que interfiere el objeto + continue + else: + if inter[1][0] == elements[keyA]: + graph.add_edge(keyB, keyA) + elif inter[1][0] == elements[keyB]: + graph.add_edge(keyA, keyB) + graph.prune_to_longest_paths() + graph._reorderData() + return graph + def getComponentsMappedByLevel(self) -> Dict[str,str]: + sortedNodes = self.nestedGraph.getNodesByLevels() + mappedElements = [] + conductors = [] + dielectrics = [] + for node in sortedNodes: + if node in self.pecs.keys(): + conductors.append((node, 'Conductor_{}'.format(len(conductors)))) + if node in self.dielectrics.keys(): + dielectrics.append((node, 'Dielectric_{}'.format(len(dielectrics)))) + mappedElements.extend(conductors) + mappedElements.extend(dielectrics) + return {element[0]:element[1] for element in mappedElements} \ No newline at end of file diff --git a/src/mesher.py b/src/mesher.py index 53702be..320903b 100644 --- a/src/mesher.py +++ b/src/mesher.py @@ -1,4 +1,5 @@ -from typing import Tuple +import os +from typing import List, Tuple import gmsh from pathlib import Path from typing import Dict @@ -31,8 +32,8 @@ def runFromInput(self, inputFile, runGui=False): caseName = Path(inputFile).stem gmsh.initialize() - self.meshFromStep(inputFile, caseName, self.DEFAULT_MESHING_OPTIONS) - self.exportGeometryAreas(caseName) + mappedElements = self.meshFromStep(inputFile, caseName, self.DEFAULT_MESHING_OPTIONS) + self.exportGeometryAreas(caseName, mappedElements) gmsh.write(caseName + '.msh') gmsh.write(caseName + '.vtk') # vtk export is just for debugging. if runGui: @@ -40,13 +41,14 @@ def runFromInput(self, inputFile, runGui=False): gmsh.finalize() - def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None): + def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None) -> Dict[str,str]: if meshingOptions is None: meshingOptions = Mesher.DEFAULT_MESHING_OPTIONS gmsh.model.add(caseName) allShapes = ShapesClassification( - gmsh.model.occ.importShapes(inputFile, highestDimOnly=False) + gmsh.model.occ.importShapes(inputFile, highestDimOnly=False), + os.path.splitext(inputFile)[0] +'.json' ) # --- Geometry manipulation --- @@ -55,33 +57,40 @@ def meshFromStep(self, inputFile: str, caseName: str, meshingOptions=None): vacuumDomain = allShapes.buildVacuumDomain() # -- Boundaries pecBoundaries = self.extractBoundaries(allShapes.pecs) - + mappedComponents = allShapes.getComponentsMappedByLevel() + + for domain in vacuumDomain.keys(): + mappedComponents[domain] = domain + for openRegion in allShapes.open.keys(): + mappedComponents[openRegion] = openRegion + components = { + **pecBoundaries, + **allShapes.dielectrics, + **allShapes.open, + **vacuumDomain, + } + self.buildPhysicalModel( - pecBoundaries, - allShapes.dielectrics, - allShapes.open, - vacuumDomain + components, + mappedComponents ) for [opt, val] in meshingOptions.items(): gmsh.option.setNumber(opt, val) - # --- Mesh generation --- - gmsh.model.mesh.generate(2) + return mappedComponents - def exportGeometryAreas(self, caseName:str): + + def exportGeometryAreas(self, caseName:str, mappedElements:Dict[str,str]): exporter = AreaExporterService() - exporter.addPhysicalModelOfDimension(dimension=2) - exporter.addPhysicalModelOfDimension(dimension=1) + exporter.addPhysicalModelOfDimension(mappedElements, dimension=2) + exporter.addPhysicalModelOfDimension(mappedElements, dimension=1) exporter.exportToJson(caseName) - def buildPhysicalModel(self, pecBoundaries, dielectrics, openRegion, vacuumDomain): - self._addPhysicalGroup("Conductor_", pecBoundaries, dimensionTag=1) - self._addPhysicalGroup("OpenBoundary_", openRegion, dimensionTag=1) - self._addPhysicalGroup("Vacuum_", vacuumDomain, dimensionTag=2) - self._addPhysicalGroup("Dielectric_", dielectrics, dimensionTag=2) + def buildPhysicalModel(self, components:Dict[str,List[Tuple[int,int]]], labeMapping:Dict[str,str]): + self._createPhysicalGroups(components, labeMapping) allEnts = gmsh.model.get_entities() entsInPG = [] @@ -95,13 +104,13 @@ def buildPhysicalModel(self, pecBoundaries, dielectrics, openRegion, vacuumDomai gmsh.model.occ.synchronize() - def _addPhysicalGroup(self, physicalGroupName:str, objsDict:Dict, dimensionTag=1): - for num, objs in objsDict.items(): - name = physicalGroupName + str(num) - tags = [x[1] for x in objs] - gmsh.model.addPhysicalGroup(dimensionTag, tags, name=name) + def _createPhysicalGroups(self, objsDict:Dict[str,List[Tuple[int,int]]], labelMapping:Dict[str,str]): + for name, elements in objsDict.items(): + mappedName = labelMapping[name] + dimensionTag = elements[0][0] + tags = [x[1] for x in elements] + gmsh.model.addPhysicalGroup(dimensionTag, tags, name=mappedName) - @staticmethod def getPhysicalGroupWithName(name: str): pGs = gmsh.model.getPhysicalGroups() diff --git a/test/test_AreaExporterService.py b/test/test_AreaExporterService.py index 21fe124..e85a5f4 100644 --- a/test/test_AreaExporterService.py +++ b/test/test_AreaExporterService.py @@ -23,15 +23,15 @@ def setUp(self): def tearDown(self): gmsh.finalize() - def inputFileFromCaseName(self, caseName): + def inputFileFromCaseName(self, caseName) -> None: return self.testdataPath + caseName + '/' + caseName + ".step" def testAreaExporterReturnsTrueValues(self): caseName = 'five_wires' - Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + mappedElements = Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) areaExporter = AreaExporterService() - areaExporter.addPhysicalModelOfDimension(dimension=1) - areaExporter.addPhysicalModelOfDimension(dimension=2) + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=1) + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=2) geometries = areaExporter.computedAreas['geometries'] internalElements = [] @@ -42,4 +42,52 @@ def testAreaExporterReturnsTrueValues(self): internalElements.append(geometry['area']) areaElements = self.sumAreasFromList(internalElements) - self.assertAlmostEqual(totalArea, areaElements) + self.assertAlmostEqual(totalArea, areaElements, places=5) + + def testJsonFormat(self) -> None: + caseName = 'DielectricUnshieldedPair' + mappedElements = Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + areaExporter = AreaExporterService() + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=1) + areaExporter.addPhysicalModelOfDimension(mappedElements=mappedElements, dimension=2) + + expectedDict = { + 'geometries': [ + { + 'area': 201.06193, + 'geometry': 'Conductor_1', + 'label': 'RightConductor' + }, + { + 'area': 201.06193, + 'geometry': 'Conductor_0', + 'label': 'LeftConductor'}, + { + 'area': 312048.117187, + 'geometry': 'OpenBoundary_0', + 'label': 'OpenBoundary_0' + }, + { + 'area': 603.185789, + 'geometry': 'Dielectric_1', + 'label': 'RightDielectric' + }, + { + 'area': 603.185789, + 'geometry': 'Dielectric_0', + 'label': 'LeftDielectric' + }, + { + 'area': 6491.504606, + 'geometry': 'Vacuum_0', + 'label': 'Vacuum_0' + }, + { + 'area': 303948.117142, + 'geometry': 'Vacuum_1', + 'label': 'Vacuum_1' + } + ] + } + self.maxDiff = None + self.assertDictEqual(areaExporter.computedAreas, expectedDict) diff --git a/test/test_ShapesClassification.py b/test/test_ShapesClassification.py new file mode 100644 index 0000000..520ea88 --- /dev/null +++ b/test/test_ShapesClassification.py @@ -0,0 +1,118 @@ +from copy import copy +import os +from typing import Dict, List, Tuple +import unittest +import gmsh +import json + + +from src.ShapesClassification import ShapesClassification + + +class TestShapesClassification(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.dirPath = os.path.dirname(os.path.realpath(__file__)) + '/' + cls.testdataPath = cls.dirPath + '/../testData/' + + @classmethod + def tearDownClass(cls): + del cls.dirPath + del cls.testdataPath + + def setUp(self): + gmsh.initialize() + + def tearDown(self): + gmsh.finalize() + + def inputFileFromCaseName(self, caseName): + return self.testdataPath + caseName + '/' + caseName + ".step" + + def initShapeClassification(self, inputFile:str) -> None: + jsonFile = os.path.splitext(inputFile)[0] +'.json' + self.shapeClassification = ShapesClassification( + gmsh.model.occ.importShapes(inputFile, highestDimOnly=False), + jsonFile + ) + + def testDielectricShieldedPairClassification(self) -> None: + case = 'DielectricShieldedPair' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + expectedShapes = [ + (2, 1),(2, 2),(2, 3),(2, 4),(2, 5), + (1, 1),(1, 2),(1, 3),(1, 4),(1, 5), + (0, 1),(0, 1),(0, 2),(0, 2),(0, 3),(0, 3),(0, 4),(0, 4),(0, 5),(0, 5) + ] + expectedPecs = { + 'RightConductor': [(2,1)], + 'ExternalShield': [(2,2)], + 'LeftConductor': [(2,3)], + } + expectedDielectrics = { + 'RightDielectric': [(2,4)], + 'LeftDielectric': [(2,5)], + } + self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) + self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) + self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) + self.assertFalse(self.shapeClassification.isOpenCase) + + def testFusedConductors(self) -> None: + case = 'FusedConductor' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + def testComplexNesting(self) -> None: + case = 'ComplexNesting' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + def testDielectricUnshieldedPairClassification(self) -> None: + case = 'DielectricUnshieldedPair' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + expectedShapes = [ + (2, 1),(2, 2),(2, 3),(2, 4), + (1, 1),(1, 2),(1, 3),(1, 4), + (0, 1),(0, 1),(0, 2),(0, 2),(0, 3),(0, 3),(0, 4),(0, 4), + ] + expectedPecs = { + 'LeftConductor': [(2, 2)], + 'RightConductor': [(2, 1)], + } + expectedDielectrics = { + 'RightDielectric': [(2,3)], + 'LeftDielectric': [(2,4)], + } + self.assertListEqual(self.shapeClassification.allShapes, expectedShapes) + self.assertDictEqual(self.shapeClassification.pecs, expectedPecs) + self.assertDictEqual(self.shapeClassification.dielectrics, expectedDielectrics) + self.assertTrue(self.shapeClassification.isOpenCase) + + def test_partially_filled_coax_step_shapes(self): + case = 'partially_filled_coax' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + self.assertEqual(len(self.shapeClassification.pecs), 2) + self.assertEqual(len(self.shapeClassification.dielectrics), 1) + + def test_five_wires_step_shapes(self): + case = 'five_wires' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + self.assertEqual(len(self.shapeClassification.pecs), 6) + self.assertEqual(len(self.shapeClassification.dielectrics), 5) + + def test_three_wires_ribbon_step_shapes(self): + case = 'three_wires_ribbon' + filepath = self.inputFileFromCaseName(case) + self.initShapeClassification(filepath) + + self.assertEqual(len(self.shapeClassification.open), 0) + self.assertEqual(len(self.shapeClassification.pecs), 3) + self.assertEqual(len(self.shapeClassification.dielectrics), 3) \ No newline at end of file diff --git a/test/test_graph.py b/test/test_graph.py new file mode 100644 index 0000000..e4f1932 --- /dev/null +++ b/test/test_graph.py @@ -0,0 +1,101 @@ +import unittest + +from src.Graph import Graph + +class TestGraph(unittest.TestCase): + + def setUp(self) -> None: + self.graph = Graph() + + def tearDown(self): + del self.graph + + def test_addNode(self) -> None: + self.graph.add_node('A') + self.assertIn('A', self.graph.nodes) + + self.graph.add_node('A') + self.assertEqual(self.graph.nodes.count('A'), 1) + + def test_addEdge(self) -> None: + self.graph.add_edge('A', 'B') + self.assertIn(('A', 'B'), self.graph.edges) + + self.assertIn('A', self.graph.nodes) + self.assertIn('B', self.graph.nodes) + + self.graph.add_edge('A', 'B') + self.assertEqual(self.graph.edges.count(('A', 'B')), 1) + + def test_settersAndGetters(self) -> None: + nodes = ['X', 'Y'] + edges = [('X', 'Y')] + self.graph.nodes = nodes + self.graph.edges = edges + self.assertEqual(self.graph.nodes, nodes) + self.assertEqual(self.graph.edges, edges) + + def test_GetConnections(self) -> None: + self.graph.add_edge('A', 'B') + self.graph.add_edge('A', 'C') + self.graph.add_node('D') # no connections + connections = self.graph.get_connections() + expected = { + 'A': ['B', 'C'], + 'B': [], + 'C': [], + 'D': [] + } + self.assertEqual(connections, expected) + + def test_str(self) -> None: + self.graph.add_edge('A', 'B') + s = str(self.graph) + self.assertIn('A', s) + self.assertIn('B', s) + self.assertIn('Edges', s) + + def testPruneToLongestPaths(self) -> None: + self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] + self.graph.edges = [ + ('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), + ('B', 'C'), ('B', 'E'), + ('C', 'E'), + ('F', 'G') + ] + + expectedEdges = [ + ('A', 'B'), ('A', 'D'), + ('B', 'C'), + ('C', 'E'), + ('F', 'G') + ] + + self.graph.prune_to_longest_paths() + self.assertListEqual(sorted(self.graph.edges), sorted(expectedEdges)) + + def testGetNodesByLevel(self) -> None: + self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] + self.graph.edges = [ + ('A', 'B'), ('A', 'D'), + ('B', 'C'), + ('C', 'E'), + ('F', 'G') + ] + + expectedList = ['A', 'F', 'B', 'D', 'G', 'C', 'E'] + sortedNodes = self.graph.getNodesByLevels() + self.assertListEqual(sortedNodes, expectedList) + + def testGetRoots(self) -> None: + self.graph.nodes = ['A' ,'B', 'C', 'D', 'E', 'F', 'G'] + self.graph.edges = [ + ('A', 'B'), ('A', 'D'), + ('B', 'C'), + ('C', 'E'), + ('F', 'G') + ] + self.assertListEqual(self.graph.roots, ['A', 'F']) + +if __name__ == '__main__': + unittest.main() \ No newline at end of file diff --git a/test/test_mesher.py b/test/test_mesher.py index 46eddbd..c371d0d 100644 --- a/test/test_mesher.py +++ b/test/test_mesher.py @@ -19,12 +19,25 @@ def setUpClass(cls): cls.dirPath = os.path.dirname(os.path.realpath(__file__)) + '/' cls.testdataPath = cls.dirPath + '/../testData/' + @classmethod + def tearDownClass(cls): + del cls.dirPath + del cls.testdataPath + def setUp(self): gmsh.initialize() def tearDown(self): gmsh.finalize() + def assertPhysicalGroup(self,expectedNames, expectedEntities): + pGs = gmsh.model.getPhysicalGroups() + pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] + self.assertEqual(sorted(pGNames), sorted(expectedNames)) + + for idx, name in enumerate(expectedNames): + self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + def countEntitiesInPhysicalGroupWithName(self, name: str): return len( gmsh.model.getEntitiesForPhysicalGroup( @@ -58,7 +71,7 @@ def test_mesh_from_step_with_partially_filled_coax(self): self.assertEqual(len(pGs), 4) pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_1', 'Vacuum_0'] + expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', 'Vacuum_0'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) for name in expectedNames: @@ -67,8 +80,8 @@ def test_mesh_from_step_with_partially_filled_coax(self): def test_mesh_from_step_with_empty_coax(self): caseName = 'empty_coax' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.msh') - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.msh') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -92,33 +105,46 @@ def test_mesh_from_step_with_two_wires_coax(self): def test_mesh_from_step_with_two_wires_open(self): caseName = 'two_wires_open' + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'OpenBoundary_0', 'Vacuum_0'] + expectedNames = ['Conductor_0', 'Conductor_1', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] self.assertEqual(sorted(pGNames), sorted(expectedNames)) - expectedEntities = [1,1,1,1] + expectedEntities = [1,1,1,1,1] for idx, name in enumerate(expectedNames): self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) + def test_mesh_dielectric_pair_open(self) -> None: + caseName = 'DielectricUnshieldedPair' + expectedNames = [ + 'Conductor_0', 'Conductor_1', + 'Dielectric_0', 'Dielectric_1', + 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] + expectedEntities = [1,1,1,1,1,1,1] + + Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) + #gmsh.write(caseName + '.vtk') + + self.assertPhysicalGroup(expectedNames, expectedEntities) + + def test_mesh_from_step_with_five_wires(self): expectedNames = [ 'Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', 'Conductor_4', 'Conductor_5', - 'Dielectric_1', 'Dielectric_2', - 'Dielectric_3', 'Dielectric_4', - 'Dielectric_5', 'Vacuum_0', + 'Dielectric_0', 'Dielectric_1', + 'Dielectric_2', 'Dielectric_3', + 'Dielectric_4', 'Vacuum_0' ] caseName = 'five_wires' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] self.assertEqual(sorted(pGNames), sorted(expectedNames)) @@ -130,7 +156,7 @@ def test_mesh_from_step_with_three_wires_ribbon(self): caseName = 'three_wires_ribbon' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -138,13 +164,13 @@ def test_mesh_from_step_with_three_wires_ribbon(self): 'Conductor_0', 'Conductor_1', 'Conductor_2', 'OpenBoundary_0', 'Dielectric_0', 'Dielectric_1', 'Dielectric_2', - 'Vacuum_0' + 'Vacuum_0', 'Vacuum_1' ] expectedEntities = [1,1,1, 1, 1,1,1, - 1] - + 1,1] + self.maxDiff = None self.assertEqual(sorted(pGNames), sorted(expectedNames)) for idx, name in enumerate(expectedNames): @@ -175,7 +201,7 @@ def test_mesh_from_step_with_agrawal1981(self): pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] expectedNames = ['Conductor_0', 'Conductor_1', 'Conductor_2', 'Conductor_3', 'OpenBoundary_0', - 'Dielectric_1', 'Dielectric_2', 'Dielectric_3', + 'Dielectric_1', 'Dielectric_2', 'Dielectric_0', 'Vacuum_0'] expectedEntities = [4, 1, 1, 1, 1, @@ -185,49 +211,17 @@ def test_mesh_from_step_with_agrawal1981(self): for idx, name in enumerate(expectedNames): self.assertEqual(self.countEntitiesInPhysicalGroupWithName(name), expectedEntities[idx], name) - def test_partially_filled_coax_step_shapes(self): - caseName = 'partially_filled_coax' - stepShapes = ShapesClassification( - gmsh.model.occ.importShapes( - self.testdataPath + caseName + '/' + caseName + '.step' - ) - ) - - self.assertEqual(len(stepShapes.pecs), 2) - self.assertEqual(len(stepShapes.dielectrics), 1) - - def test_five_wires_step_shapes(self): - caseName = 'five_wires' - stepShapes = ShapesClassification( - gmsh.model.occ.importShapes( - self.testdataPath + caseName + '/' + caseName + '.step' - ) - ) - - self.assertEqual(len(stepShapes.pecs), 6) - self.assertEqual(len(stepShapes.dielectrics), 5) - - def test_three_wires_ribbon_step_shapes(self): - caseName = 'three_wires_ribbon' - stepShapes = ShapesClassification( - gmsh.model.occ.importShapes( - self.testdataPath + caseName + '/' + caseName + '.step' - ) - ) - - self.assertEqual(len(stepShapes.open), 1) - self.assertEqual(len(stepShapes.pecs), 3) - self.assertEqual(len(stepShapes.dielectrics), 3) + def test_unshielded_multiwire(self): caseName = 'unshielded_multiwire' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] - expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_1', + expectedNames = ['Conductor_0', 'Conductor_1', 'Dielectric_0', 'OpenBoundary_0', 'Vacuum_0', 'Vacuum_1'] expectedEntities = [1, 1, 1, @@ -242,7 +236,7 @@ def test_conductor_and_outer_dielectric(self): caseName = 'conductor_and_outer_dielectric' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] @@ -264,8 +258,8 @@ def test_lansink2024_single_wire_multipolar(self): caseName = 'lansink2024_single_wire_multipolar' Mesher().meshFromStep(self.inputFileFromCaseName(caseName), caseName) - gmsh.write(caseName + '.msh') - gmsh.write(caseName + '.vtk') + #gmsh.write(caseName + '.msh') + #gmsh.write(caseName + '.vtk') pGs = gmsh.model.getPhysicalGroups() pGNames = [gmsh.model.getPhysicalName(*pG) for pG in pGs] diff --git a/testData/ComplexNesting/ComplexNesting.FCStd b/testData/ComplexNesting/ComplexNesting.FCStd new file mode 100644 index 0000000..50fc6a8 Binary files /dev/null and b/testData/ComplexNesting/ComplexNesting.FCStd differ diff --git a/testData/ComplexNesting/ComplexNesting.json b/testData/ComplexNesting/ComplexNesting.json new file mode 100644 index 0000000..27d4154 --- /dev/null +++ b/testData/ComplexNesting/ComplexNesting.json @@ -0,0 +1,46 @@ +{ + "CrossSection":[ + { + "name":"Right", + "material":{ + "type":"PEC" + } + }, + { + "name":"Left", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftA", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftB", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftA1", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubLeftA2", + "material":{ + "type":"PEC" + } + }, + { + "name":"SubRightA", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/ComplexNesting/ComplexNesting.step b/testData/ComplexNesting/ComplexNesting.step new file mode 100644 index 0000000..edb619f --- /dev/null +++ b/testData/ComplexNesting/ComplexNesting.step @@ -0,0 +1,458 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-10-01T13:48:29',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('DielectricShieldedPair','DielectricShieldedPair','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31,#35,#39),#43); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(20.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(-20.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(-29.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(-11.,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(-33.,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(-26.,0.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = AXIS2_PLACEMENT_3D('',#40,#41,#42); +#40 = CARTESIAN_POINT('',(20.,0.,0.)); +#41 = DIRECTION('',(0.,0.,1.)); +#42 = DIRECTION('',(1.,0.,0.)); +#43 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#47)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#44,#45,#46)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#44 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#45 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#46 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#47 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#44, + 'distance_accuracy_value','confusion accuracy'); +#48 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#49 = SHAPE_DEFINITION_REPRESENTATION(#50,#56); +#50 = PRODUCT_DEFINITION_SHAPE('','',#51); +#51 = PRODUCT_DEFINITION('design','',#52,#55); +#52 = PRODUCT_DEFINITION_FORMATION('','',#53); +#53 = PRODUCT('Right','Right','',(#54)); +#54 = PRODUCT_CONTEXT('',#2,'mechanical'); +#55 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#56 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#57),#76); +#57 = SHELL_BASED_SURFACE_MODEL('',(#58)); +#58 = OPEN_SHELL('',(#59)); +#59 = ADVANCED_FACE('',(#60),#71,.T.); +#60 = FACE_BOUND('',#61,.T.); +#61 = EDGE_LOOP('',(#62)); +#62 = ORIENTED_EDGE('',*,*,#63,.T.); +#63 = EDGE_CURVE('',#64,#64,#66,.T.); +#64 = VERTEX_POINT('',#65); +#65 = CARTESIAN_POINT('',(8.,0.,0.)); +#66 = CIRCLE('',#67,8.); +#67 = AXIS2_PLACEMENT_3D('',#68,#69,#70); +#68 = CARTESIAN_POINT('',(0.,0.,0.)); +#69 = DIRECTION('',(0.,0.,1.)); +#70 = DIRECTION('',(1.,0.,0.)); +#71 = PLANE('',#72); +#72 = AXIS2_PLACEMENT_3D('',#73,#74,#75); +#73 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#74 = DIRECTION('',(0.,0.,1.)); +#75 = DIRECTION('',(1.,0.,0.)); +#76 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#80)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#77,#78,#79)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#77 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#78 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#79 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#80 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#77, + 'distance_accuracy_value','confusion accuracy'); +#81 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#82,#84); +#82 = ( REPRESENTATION_RELATIONSHIP('','',#56,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#83) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#83 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#84 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#85); +#85 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Right','',#5,#51,$); +#86 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#53)); +#87 = SHAPE_DEFINITION_REPRESENTATION(#88,#94); +#88 = PRODUCT_DEFINITION_SHAPE('','',#89); +#89 = PRODUCT_DEFINITION('design','',#90,#93); +#90 = PRODUCT_DEFINITION_FORMATION('','',#91); +#91 = PRODUCT('Left','Left','',(#92)); +#92 = PRODUCT_CONTEXT('',#2,'mechanical'); +#93 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#94 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#95),#114); +#95 = SHELL_BASED_SURFACE_MODEL('',(#96)); +#96 = OPEN_SHELL('',(#97)); +#97 = ADVANCED_FACE('',(#98),#109,.T.); +#98 = FACE_BOUND('',#99,.T.); +#99 = EDGE_LOOP('',(#100)); +#100 = ORIENTED_EDGE('',*,*,#101,.T.); +#101 = EDGE_CURVE('',#102,#102,#104,.T.); +#102 = VERTEX_POINT('',#103); +#103 = CARTESIAN_POINT('',(20.,0.,0.)); +#104 = CIRCLE('',#105,20.); +#105 = AXIS2_PLACEMENT_3D('',#106,#107,#108); +#106 = CARTESIAN_POINT('',(0.,0.,0.)); +#107 = DIRECTION('',(0.,0.,1.)); +#108 = DIRECTION('',(1.,0.,0.)); +#109 = PLANE('',#110); +#110 = AXIS2_PLACEMENT_3D('',#111,#112,#113); +#111 = CARTESIAN_POINT('',(-1.093952106032E-15,2.775209066E-16,0.)); +#112 = DIRECTION('',(0.,0.,1.)); +#113 = DIRECTION('',(1.,0.,0.)); +#114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#118)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#115,#116,#117)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#115, + 'distance_accuracy_value','confusion accuracy'); +#119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#120,#122); +#120 = ( REPRESENTATION_RELATIONSHIP('','',#94,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#121) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 + ); +#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','Left','',#5,#89,$); +#124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#91)); +#125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); +#126 = PRODUCT_DEFINITION_SHAPE('','',#127); +#127 = PRODUCT_DEFINITION('design','',#128,#131); +#128 = PRODUCT_DEFINITION_FORMATION('','',#129); +#129 = PRODUCT('SubLeftA','SubLeftA','',(#130)); +#130 = PRODUCT_CONTEXT('',#2,'mechanical'); +#131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#152); +#133 = SHELL_BASED_SURFACE_MODEL('',(#134)); +#134 = OPEN_SHELL('',(#135)); +#135 = ADVANCED_FACE('',(#136),#147,.T.); +#136 = FACE_BOUND('',#137,.T.); +#137 = EDGE_LOOP('',(#138)); +#138 = ORIENTED_EDGE('',*,*,#139,.T.); +#139 = EDGE_CURVE('',#140,#140,#142,.T.); +#140 = VERTEX_POINT('',#141); +#141 = CARTESIAN_POINT('',(8.,0.,0.)); +#142 = CIRCLE('',#143,8.); +#143 = AXIS2_PLACEMENT_3D('',#144,#145,#146); +#144 = CARTESIAN_POINT('',(0.,0.,0.)); +#145 = DIRECTION('',(0.,0.,1.)); +#146 = DIRECTION('',(1.,0.,0.)); +#147 = PLANE('',#148); +#148 = AXIS2_PLACEMENT_3D('',#149,#150,#151); +#149 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#150 = DIRECTION('',(0.,0.,1.)); +#151 = DIRECTION('',(1.,0.,0.)); +#152 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#156)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#153,#154,#155)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#153 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#154 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#155 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#156 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#153, + 'distance_accuracy_value','confusion accuracy'); +#157 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#158,#160); +#158 = ( REPRESENTATION_RELATIONSHIP('','',#132,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#159) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#159 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#160 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#161 + ); +#161 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','SubLeftA','',#5,#127,$); +#162 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); +#163 = SHAPE_DEFINITION_REPRESENTATION(#164,#170); +#164 = PRODUCT_DEFINITION_SHAPE('','',#165); +#165 = PRODUCT_DEFINITION('design','',#166,#169); +#166 = PRODUCT_DEFINITION_FORMATION('','',#167); +#167 = PRODUCT('SubLeftB','SubLeftB','',(#168)); +#168 = PRODUCT_CONTEXT('',#2,'mechanical'); +#169 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#170 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#171),#190); +#171 = SHELL_BASED_SURFACE_MODEL('',(#172)); +#172 = OPEN_SHELL('',(#173)); +#173 = ADVANCED_FACE('',(#174),#185,.T.); +#174 = FACE_BOUND('',#175,.T.); +#175 = EDGE_LOOP('',(#176)); +#176 = ORIENTED_EDGE('',*,*,#177,.T.); +#177 = EDGE_CURVE('',#178,#178,#180,.T.); +#178 = VERTEX_POINT('',#179); +#179 = CARTESIAN_POINT('',(8.,0.,0.)); +#180 = CIRCLE('',#181,8.); +#181 = AXIS2_PLACEMENT_3D('',#182,#183,#184); +#182 = CARTESIAN_POINT('',(0.,0.,0.)); +#183 = DIRECTION('',(0.,0.,1.)); +#184 = DIRECTION('',(1.,0.,0.)); +#185 = PLANE('',#186); +#186 = AXIS2_PLACEMENT_3D('',#187,#188,#189); +#187 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#188 = DIRECTION('',(0.,0.,1.)); +#189 = DIRECTION('',(1.,0.,0.)); +#190 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#194)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#191,#192,#193)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#191 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#192 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#193 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#194 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#191, + 'distance_accuracy_value','confusion accuracy'); +#195 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#196,#198); +#196 = ( REPRESENTATION_RELATIONSHIP('','',#170,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#197) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#197 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#198 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#199 + ); +#199 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','SubLeftB','',#5,#165,$); +#200 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#167)); +#201 = SHAPE_DEFINITION_REPRESENTATION(#202,#208); +#202 = PRODUCT_DEFINITION_SHAPE('','',#203); +#203 = PRODUCT_DEFINITION('design','',#204,#207); +#204 = PRODUCT_DEFINITION_FORMATION('','',#205); +#205 = PRODUCT('SubLeftA1','SubLeftA1','',(#206)); +#206 = PRODUCT_CONTEXT('',#2,'mechanical'); +#207 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#208 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#209),#228); +#209 = SHELL_BASED_SURFACE_MODEL('',(#210)); +#210 = OPEN_SHELL('',(#211)); +#211 = ADVANCED_FACE('',(#212),#223,.T.); +#212 = FACE_BOUND('',#213,.T.); +#213 = EDGE_LOOP('',(#214)); +#214 = ORIENTED_EDGE('',*,*,#215,.T.); +#215 = EDGE_CURVE('',#216,#216,#218,.T.); +#216 = VERTEX_POINT('',#217); +#217 = CARTESIAN_POINT('',(2.,0.,0.)); +#218 = CIRCLE('',#219,2.); +#219 = AXIS2_PLACEMENT_3D('',#220,#221,#222); +#220 = CARTESIAN_POINT('',(0.,0.,0.)); +#221 = DIRECTION('',(0.,0.,1.)); +#222 = DIRECTION('',(1.,0.,0.)); +#223 = PLANE('',#224); +#224 = AXIS2_PLACEMENT_3D('',#225,#226,#227); +#225 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#226 = DIRECTION('',(0.,0.,1.)); +#227 = DIRECTION('',(1.,0.,0.)); +#228 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#232)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#229,#230,#231)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#229 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#230 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#231 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#232 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#229, + 'distance_accuracy_value','confusion accuracy'); +#233 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#234,#236); +#234 = ( REPRESENTATION_RELATIONSHIP('','',#208,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#235) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#235 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#236 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#237 + ); +#237 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','SubLeftA1','',#5,#203,$); +#238 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#205)); +#239 = SHAPE_DEFINITION_REPRESENTATION(#240,#246); +#240 = PRODUCT_DEFINITION_SHAPE('','',#241); +#241 = PRODUCT_DEFINITION('design','',#242,#245); +#242 = PRODUCT_DEFINITION_FORMATION('','',#243); +#243 = PRODUCT('SubLeftA2','SubLeftA2','',(#244)); +#244 = PRODUCT_CONTEXT('',#2,'mechanical'); +#245 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#246 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#247),#266); +#247 = SHELL_BASED_SURFACE_MODEL('',(#248)); +#248 = OPEN_SHELL('',(#249)); +#249 = ADVANCED_FACE('',(#250),#261,.T.); +#250 = FACE_BOUND('',#251,.T.); +#251 = EDGE_LOOP('',(#252)); +#252 = ORIENTED_EDGE('',*,*,#253,.T.); +#253 = EDGE_CURVE('',#254,#254,#256,.T.); +#254 = VERTEX_POINT('',#255); +#255 = CARTESIAN_POINT('',(4.,0.,0.)); +#256 = CIRCLE('',#257,4.); +#257 = AXIS2_PLACEMENT_3D('',#258,#259,#260); +#258 = CARTESIAN_POINT('',(0.,0.,0.)); +#259 = DIRECTION('',(0.,0.,1.)); +#260 = DIRECTION('',(1.,0.,0.)); +#261 = PLANE('',#262); +#262 = AXIS2_PLACEMENT_3D('',#263,#264,#265); +#263 = CARTESIAN_POINT('',(-2.563950248511E-16,7.643776681114E-18,0.)); +#264 = DIRECTION('',(0.,0.,1.)); +#265 = DIRECTION('',(1.,0.,0.)); +#266 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#270)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#267,#268,#269)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#267 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#268 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#269 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#270 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#267, + 'distance_accuracy_value','confusion accuracy'); +#271 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#272,#274); +#272 = ( REPRESENTATION_RELATIONSHIP('','',#246,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#273) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#273 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#274 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#275 + ); +#275 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','SubLeftA2','',#5,#241,$); +#276 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#243)); +#277 = SHAPE_DEFINITION_REPRESENTATION(#278,#284); +#278 = PRODUCT_DEFINITION_SHAPE('','',#279); +#279 = PRODUCT_DEFINITION('design','',#280,#283); +#280 = PRODUCT_DEFINITION_FORMATION('','',#281); +#281 = PRODUCT('SubRightA','SubRightA','',(#282)); +#282 = PRODUCT_CONTEXT('',#2,'mechanical'); +#283 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#284 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#285),#304); +#285 = SHELL_BASED_SURFACE_MODEL('',(#286)); +#286 = OPEN_SHELL('',(#287)); +#287 = ADVANCED_FACE('',(#288),#299,.T.); +#288 = FACE_BOUND('',#289,.T.); +#289 = EDGE_LOOP('',(#290)); +#290 = ORIENTED_EDGE('',*,*,#291,.T.); +#291 = EDGE_CURVE('',#292,#292,#294,.T.); +#292 = VERTEX_POINT('',#293); +#293 = CARTESIAN_POINT('',(2.,0.,0.)); +#294 = CIRCLE('',#295,2.); +#295 = AXIS2_PLACEMENT_3D('',#296,#297,#298); +#296 = CARTESIAN_POINT('',(0.,0.,0.)); +#297 = DIRECTION('',(0.,0.,1.)); +#298 = DIRECTION('',(1.,0.,0.)); +#299 = PLANE('',#300); +#300 = AXIS2_PLACEMENT_3D('',#301,#302,#303); +#301 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#302 = DIRECTION('',(0.,0.,1.)); +#303 = DIRECTION('',(1.,0.,0.)); +#304 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#308)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#305,#306,#307)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#305 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#306 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#307 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#308 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#305, + 'distance_accuracy_value','confusion accuracy'); +#309 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#310,#312); +#310 = ( REPRESENTATION_RELATIONSHIP('','',#284,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#311) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#311 = ITEM_DEFINED_TRANSFORMATION('','',#11,#39); +#312 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#313 + ); +#313 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','SubRightA','',#5,#279,$); +#314 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#281)); +#315 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#316) + ,#114); +#316 = STYLED_ITEM('color',(#317),#97); +#317 = PRESENTATION_STYLE_ASSIGNMENT((#318,#324)); +#318 = SURFACE_STYLE_USAGE(.BOTH.,#319); +#319 = SURFACE_SIDE_STYLE('',(#320)); +#320 = SURFACE_STYLE_FILL_AREA(#321); +#321 = FILL_AREA_STYLE('',(#322)); +#322 = FILL_AREA_STYLE_COLOUR('',#323); +#323 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#324 = CURVE_STYLE('',#325,POSITIVE_LENGTH_MEASURE(0.1),#326); +#325 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#326 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#327 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#328) + ,#266); +#328 = STYLED_ITEM('color',(#329),#249); +#329 = PRESENTATION_STYLE_ASSIGNMENT((#330,#335)); +#330 = SURFACE_STYLE_USAGE(.BOTH.,#331); +#331 = SURFACE_SIDE_STYLE('',(#332)); +#332 = SURFACE_STYLE_FILL_AREA(#333); +#333 = FILL_AREA_STYLE('',(#334)); +#334 = FILL_AREA_STYLE_COLOUR('',#323); +#335 = CURVE_STYLE('',#336,POSITIVE_LENGTH_MEASURE(0.1),#326); +#336 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#337 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#338) + ,#304); +#338 = STYLED_ITEM('color',(#339),#287); +#339 = PRESENTATION_STYLE_ASSIGNMENT((#340,#345)); +#340 = SURFACE_STYLE_USAGE(.BOTH.,#341); +#341 = SURFACE_SIDE_STYLE('',(#342)); +#342 = SURFACE_STYLE_FILL_AREA(#343); +#343 = FILL_AREA_STYLE('',(#344)); +#344 = FILL_AREA_STYLE_COLOUR('',#323); +#345 = CURVE_STYLE('',#346,POSITIVE_LENGTH_MEASURE(0.1),#326); +#346 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#347 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#348) + ,#228); +#348 = STYLED_ITEM('color',(#349),#211); +#349 = PRESENTATION_STYLE_ASSIGNMENT((#350,#355)); +#350 = SURFACE_STYLE_USAGE(.BOTH.,#351); +#351 = SURFACE_SIDE_STYLE('',(#352)); +#352 = SURFACE_STYLE_FILL_AREA(#353); +#353 = FILL_AREA_STYLE('',(#354)); +#354 = FILL_AREA_STYLE_COLOUR('',#323); +#355 = CURVE_STYLE('',#356,POSITIVE_LENGTH_MEASURE(0.1),#326); +#356 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#357 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#358) + ,#76); +#358 = STYLED_ITEM('color',(#359),#59); +#359 = PRESENTATION_STYLE_ASSIGNMENT((#360,#365)); +#360 = SURFACE_STYLE_USAGE(.BOTH.,#361); +#361 = SURFACE_SIDE_STYLE('',(#362)); +#362 = SURFACE_STYLE_FILL_AREA(#363); +#363 = FILL_AREA_STYLE('',(#364)); +#364 = FILL_AREA_STYLE_COLOUR('',#323); +#365 = CURVE_STYLE('',#366,POSITIVE_LENGTH_MEASURE(0.1),#326); +#366 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#367 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#368) + ,#152); +#368 = STYLED_ITEM('color',(#369),#135); +#369 = PRESENTATION_STYLE_ASSIGNMENT((#370,#375)); +#370 = SURFACE_STYLE_USAGE(.BOTH.,#371); +#371 = SURFACE_SIDE_STYLE('',(#372)); +#372 = SURFACE_STYLE_FILL_AREA(#373); +#373 = FILL_AREA_STYLE('',(#374)); +#374 = FILL_AREA_STYLE_COLOUR('',#323); +#375 = CURVE_STYLE('',#376,POSITIVE_LENGTH_MEASURE(0.1),#326); +#376 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#377 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#378) + ,#190); +#378 = STYLED_ITEM('color',(#379),#173); +#379 = PRESENTATION_STYLE_ASSIGNMENT((#380,#385)); +#380 = SURFACE_STYLE_USAGE(.BOTH.,#381); +#381 = SURFACE_SIDE_STYLE('',(#382)); +#382 = SURFACE_STYLE_FILL_AREA(#383); +#383 = FILL_AREA_STYLE('',(#384)); +#384 = FILL_AREA_STYLE_COLOUR('',#323); +#385 = CURVE_STYLE('',#386,POSITIVE_LENGTH_MEASURE(0.1),#326); +#386 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak b/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak new file mode 100644 index 0000000..4897689 Binary files /dev/null and b/testData/DielectricShieldedPair/DielectricShieldedPair.20250930-134420.FCBak differ diff --git a/testData/DielectricShieldedPair/DielectricShieldedPair.FCStd b/testData/DielectricShieldedPair/DielectricShieldedPair.FCStd new file mode 100644 index 0000000..f9436fa Binary files /dev/null and b/testData/DielectricShieldedPair/DielectricShieldedPair.FCStd differ diff --git a/testData/DielectricShieldedPair/DielectricShieldedPair.json b/testData/DielectricShieldedPair/DielectricShieldedPair.json new file mode 100644 index 0000000..3b91f44 --- /dev/null +++ b/testData/DielectricShieldedPair/DielectricShieldedPair.json @@ -0,0 +1,36 @@ +{ + "CrossSection":[ + { + "name":"ExternalShield", + "material":{ + "type":"PEC" + } + }, + { + "name":"RightConductor", + "material":{ + "type":"PEC" + } + }, + { + "name":"LeftConductor", + "material":{ + "type":"PEC" + } + }, + { + "name":"LeftDielectric", + "material":{ + "type":"Dielectric", + "permittivity": 2.0 + } + }, + { + "name":"RightDielectric", + "material":{ + "type":"Dielectric", + "permittivity":2.0 + } + } + ] +} \ No newline at end of file diff --git a/testData/DielectricShieldedPair/DielectricShieldedPair.step b/testData/DielectricShieldedPair/DielectricShieldedPair.step new file mode 100644 index 0000000..b0fb692 --- /dev/null +++ b/testData/DielectricShieldedPair/DielectricShieldedPair.step @@ -0,0 +1,352 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-09-30T14:26:37',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('DielectricShieldedPair','DielectricShieldedPair','',( + #8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31),#35); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(20.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(-20.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(20.,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(-20.,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#39)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#36,#37,#38)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#36 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#37 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#38 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#39 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#36, + 'distance_accuracy_value','confusion accuracy'); +#40 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#41 = SHAPE_DEFINITION_REPRESENTATION(#42,#48); +#42 = PRODUCT_DEFINITION_SHAPE('','',#43); +#43 = PRODUCT_DEFINITION('design','',#44,#47); +#44 = PRODUCT_DEFINITION_FORMATION('','',#45); +#45 = PRODUCT('RightConductor','RightConductor','',(#46)); +#46 = PRODUCT_CONTEXT('',#2,'mechanical'); +#47 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#48 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#49),#68); +#49 = SHELL_BASED_SURFACE_MODEL('',(#50)); +#50 = OPEN_SHELL('',(#51)); +#51 = ADVANCED_FACE('',(#52),#63,.T.); +#52 = FACE_BOUND('',#53,.T.); +#53 = EDGE_LOOP('',(#54)); +#54 = ORIENTED_EDGE('',*,*,#55,.T.); +#55 = EDGE_CURVE('',#56,#56,#58,.T.); +#56 = VERTEX_POINT('',#57); +#57 = CARTESIAN_POINT('',(8.,0.,0.)); +#58 = CIRCLE('',#59,8.); +#59 = AXIS2_PLACEMENT_3D('',#60,#61,#62); +#60 = CARTESIAN_POINT('',(0.,0.,0.)); +#61 = DIRECTION('',(0.,0.,1.)); +#62 = DIRECTION('',(1.,0.,0.)); +#63 = PLANE('',#64); +#64 = AXIS2_PLACEMENT_3D('',#65,#66,#67); +#65 = CARTESIAN_POINT('',(-5.1E-16,2.E-17,0.)); +#66 = DIRECTION('',(0.,0.,1.)); +#67 = DIRECTION('',(1.,0.,0.)); +#68 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#72)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#69,#70,#71)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#69 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#70 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#71 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#72 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#69, + 'distance_accuracy_value','confusion accuracy'); +#73 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#74,#76); +#74 = ( REPRESENTATION_RELATIONSHIP('','',#48,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#75) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#75 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#76 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#77); +#77 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','RightConductor','',#5,#43,$); +#78 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#45)); +#79 = SHAPE_DEFINITION_REPRESENTATION(#80,#86); +#80 = PRODUCT_DEFINITION_SHAPE('','',#81); +#81 = PRODUCT_DEFINITION('design','',#82,#85); +#82 = PRODUCT_DEFINITION_FORMATION('','',#83); +#83 = PRODUCT('ExternalShield','ExternalShield','',(#84)); +#84 = PRODUCT_CONTEXT('',#2,'mechanical'); +#85 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#86 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#87),#106); +#87 = SHELL_BASED_SURFACE_MODEL('',(#88)); +#88 = OPEN_SHELL('',(#89)); +#89 = ADVANCED_FACE('',(#90),#101,.T.); +#90 = FACE_BOUND('',#91,.T.); +#91 = EDGE_LOOP('',(#92)); +#92 = ORIENTED_EDGE('',*,*,#93,.T.); +#93 = EDGE_CURVE('',#94,#94,#96,.T.); +#94 = VERTEX_POINT('',#95); +#95 = CARTESIAN_POINT('',(50.,0.,0.)); +#96 = CIRCLE('',#97,50.); +#97 = AXIS2_PLACEMENT_3D('',#98,#99,#100); +#98 = CARTESIAN_POINT('',(0.,0.,0.)); +#99 = DIRECTION('',(0.,0.,1.)); +#100 = DIRECTION('',(1.,0.,-0.)); +#101 = PLANE('',#102); +#102 = AXIS2_PLACEMENT_3D('',#103,#104,#105); +#103 = CARTESIAN_POINT('',(-3.5E-15,-2.04E-15,0.)); +#104 = DIRECTION('',(0.,0.,1.)); +#105 = DIRECTION('',(1.,0.,-0.)); +#106 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#110)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#107,#108,#109)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#107 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#108 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#109 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#110 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#107, + 'distance_accuracy_value','confusion accuracy'); +#111 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#112,#114); +#112 = ( REPRESENTATION_RELATIONSHIP('','',#86,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#113) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#113 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#114 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#115 + ); +#115 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','ExternalShield','',#5,#81,$ + ); +#116 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#83)); +#117 = SHAPE_DEFINITION_REPRESENTATION(#118,#124); +#118 = PRODUCT_DEFINITION_SHAPE('','',#119); +#119 = PRODUCT_DEFINITION('design','',#120,#123); +#120 = PRODUCT_DEFINITION_FORMATION('','',#121); +#121 = PRODUCT('LeftConductor','LeftConductor','',(#122)); +#122 = PRODUCT_CONTEXT('',#2,'mechanical'); +#123 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#124 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#125),#144); +#125 = SHELL_BASED_SURFACE_MODEL('',(#126)); +#126 = OPEN_SHELL('',(#127)); +#127 = ADVANCED_FACE('',(#128),#139,.T.); +#128 = FACE_BOUND('',#129,.T.); +#129 = EDGE_LOOP('',(#130)); +#130 = ORIENTED_EDGE('',*,*,#131,.T.); +#131 = EDGE_CURVE('',#132,#132,#134,.T.); +#132 = VERTEX_POINT('',#133); +#133 = CARTESIAN_POINT('',(8.,0.,0.)); +#134 = CIRCLE('',#135,8.); +#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); +#136 = CARTESIAN_POINT('',(0.,0.,0.)); +#137 = DIRECTION('',(0.,0.,1.)); +#138 = DIRECTION('',(1.,0.,0.)); +#139 = PLANE('',#140); +#140 = AXIS2_PLACEMENT_3D('',#141,#142,#143); +#141 = CARTESIAN_POINT('',(-5.1E-16,2.E-17,0.)); +#142 = DIRECTION('',(0.,0.,1.)); +#143 = DIRECTION('',(1.,0.,0.)); +#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#148)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#145,#146,#147)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#145 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#146 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#147 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#148 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#145, + 'distance_accuracy_value','confusion accuracy'); +#149 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#150,#152); +#150 = ( REPRESENTATION_RELATIONSHIP('','',#124,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#151) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#151 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#152 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#153 + ); +#153 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','LeftConductor','',#5,#119,$ + ); +#154 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#121)); +#155 = SHAPE_DEFINITION_REPRESENTATION(#156,#162); +#156 = PRODUCT_DEFINITION_SHAPE('','',#157); +#157 = PRODUCT_DEFINITION('design','',#158,#161); +#158 = PRODUCT_DEFINITION_FORMATION('','',#159); +#159 = PRODUCT('RightDielectric','RightDielectric','',(#160)); +#160 = PRODUCT_CONTEXT('',#2,'mechanical'); +#161 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#162 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#163),#182); +#163 = SHELL_BASED_SURFACE_MODEL('',(#164)); +#164 = OPEN_SHELL('',(#165)); +#165 = ADVANCED_FACE('',(#166),#177,.T.); +#166 = FACE_BOUND('',#167,.T.); +#167 = EDGE_LOOP('',(#168)); +#168 = ORIENTED_EDGE('',*,*,#169,.T.); +#169 = EDGE_CURVE('',#170,#170,#172,.T.); +#170 = VERTEX_POINT('',#171); +#171 = CARTESIAN_POINT('',(16.,0.,0.)); +#172 = CIRCLE('',#173,16.); +#173 = AXIS2_PLACEMENT_3D('',#174,#175,#176); +#174 = CARTESIAN_POINT('',(0.,0.,0.)); +#175 = DIRECTION('',(0.,0.,1.)); +#176 = DIRECTION('',(1.,0.,0.)); +#177 = PLANE('',#178); +#178 = AXIS2_PLACEMENT_3D('',#179,#180,#181); +#179 = CARTESIAN_POINT('',(-1.03E-15,3.E-17,0.)); +#180 = DIRECTION('',(0.,0.,1.)); +#181 = DIRECTION('',(1.,0.,0.)); +#182 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#186)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#183,#184,#185)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#183 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#184 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#185 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#186 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#183, + 'distance_accuracy_value','confusion accuracy'); +#187 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#188,#190); +#188 = ( REPRESENTATION_RELATIONSHIP('','',#162,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#189) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#189 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#190 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#191 + ); +#191 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('21','RightDielectric','',#5,#157, + $); +#192 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#159)); +#193 = SHAPE_DEFINITION_REPRESENTATION(#194,#200); +#194 = PRODUCT_DEFINITION_SHAPE('','',#195); +#195 = PRODUCT_DEFINITION('design','',#196,#199); +#196 = PRODUCT_DEFINITION_FORMATION('','',#197); +#197 = PRODUCT('LeftDielectric','LeftDielectric','',(#198)); +#198 = PRODUCT_CONTEXT('',#2,'mechanical'); +#199 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#200 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#201),#220); +#201 = SHELL_BASED_SURFACE_MODEL('',(#202)); +#202 = OPEN_SHELL('',(#203)); +#203 = ADVANCED_FACE('',(#204),#215,.T.); +#204 = FACE_BOUND('',#205,.T.); +#205 = EDGE_LOOP('',(#206)); +#206 = ORIENTED_EDGE('',*,*,#207,.T.); +#207 = EDGE_CURVE('',#208,#208,#210,.T.); +#208 = VERTEX_POINT('',#209); +#209 = CARTESIAN_POINT('',(16.,0.,0.)); +#210 = CIRCLE('',#211,16.); +#211 = AXIS2_PLACEMENT_3D('',#212,#213,#214); +#212 = CARTESIAN_POINT('',(0.,0.,0.)); +#213 = DIRECTION('',(0.,0.,1.)); +#214 = DIRECTION('',(1.,0.,0.)); +#215 = PLANE('',#216); +#216 = AXIS2_PLACEMENT_3D('',#217,#218,#219); +#217 = CARTESIAN_POINT('',(-1.03E-15,3.E-17,0.)); +#218 = DIRECTION('',(0.,0.,1.)); +#219 = DIRECTION('',(1.,0.,0.)); +#220 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#224)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#221,#222,#223)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#221 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#222 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#223 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#224 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#221, + 'distance_accuracy_value','confusion accuracy'); +#225 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#226,#228); +#226 = ( REPRESENTATION_RELATIONSHIP('','',#200,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#227) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#227 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#228 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#229 + ); +#229 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('22','LeftDielectric','',#5,#195,$ + ); +#230 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#197)); +#231 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#232) + ,#106); +#232 = STYLED_ITEM('color',(#233),#89); +#233 = PRESENTATION_STYLE_ASSIGNMENT((#234,#242)); +#234 = SURFACE_STYLE_USAGE(.BOTH.,#235); +#235 = SURFACE_SIDE_STYLE('',(#236,#240)); +#236 = SURFACE_STYLE_FILL_AREA(#237); +#237 = FILL_AREA_STYLE('',(#238)); +#238 = FILL_AREA_STYLE_COLOUR('',#239); +#239 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#240 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#239,( + #241)); +#241 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#242 = CURVE_STYLE('',#243,POSITIVE_LENGTH_MEASURE(0.1),#244); +#243 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#244 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#245 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#246) + ,#68); +#246 = STYLED_ITEM('color',(#247),#51); +#247 = PRESENTATION_STYLE_ASSIGNMENT((#248,#253)); +#248 = SURFACE_STYLE_USAGE(.BOTH.,#249); +#249 = SURFACE_SIDE_STYLE('',(#250)); +#250 = SURFACE_STYLE_FILL_AREA(#251); +#251 = FILL_AREA_STYLE('',(#252)); +#252 = FILL_AREA_STYLE_COLOUR('',#239); +#253 = CURVE_STYLE('',#254,POSITIVE_LENGTH_MEASURE(0.1),#244); +#254 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#255 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#256) + ,#144); +#256 = STYLED_ITEM('color',(#257),#127); +#257 = PRESENTATION_STYLE_ASSIGNMENT((#258,#263)); +#258 = SURFACE_STYLE_USAGE(.BOTH.,#259); +#259 = SURFACE_SIDE_STYLE('',(#260)); +#260 = SURFACE_STYLE_FILL_AREA(#261); +#261 = FILL_AREA_STYLE('',(#262)); +#262 = FILL_AREA_STYLE_COLOUR('',#239); +#263 = CURVE_STYLE('',#264,POSITIVE_LENGTH_MEASURE(0.1),#244); +#264 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#265 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#266) + ,#220); +#266 = STYLED_ITEM('color',(#267),#203); +#267 = PRESENTATION_STYLE_ASSIGNMENT((#268,#275)); +#268 = SURFACE_STYLE_USAGE(.BOTH.,#269); +#269 = SURFACE_SIDE_STYLE('',(#270,#273)); +#270 = SURFACE_STYLE_FILL_AREA(#271); +#271 = FILL_AREA_STYLE('',(#272)); +#272 = FILL_AREA_STYLE_COLOUR('',#239); +#273 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#239,( + #274)); +#274 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#275 = CURVE_STYLE('',#276,POSITIVE_LENGTH_MEASURE(0.1),#244); +#276 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#277 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#278) + ,#182); +#278 = STYLED_ITEM('color',(#279),#165); +#279 = PRESENTATION_STYLE_ASSIGNMENT((#280,#287)); +#280 = SURFACE_STYLE_USAGE(.BOTH.,#281); +#281 = SURFACE_SIDE_STYLE('',(#282,#285)); +#282 = SURFACE_STYLE_FILL_AREA(#283); +#283 = FILL_AREA_STYLE('',(#284)); +#284 = FILL_AREA_STYLE_COLOUR('',#239); +#285 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#239,( + #286)); +#286 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#287 = CURVE_STYLE('',#288,POSITIVE_LENGTH_MEASURE(0.1),#244); +#288 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.FCStd b/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.FCStd new file mode 100644 index 0000000..f9436fa Binary files /dev/null and b/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.FCStd differ diff --git a/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.json b/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.json new file mode 100644 index 0000000..53232e9 --- /dev/null +++ b/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.json @@ -0,0 +1,30 @@ +{ + "CrossSection":[ + { + "name":"RightConductor", + "material":{ + "type":"PEC" + } + }, + { + "name":"LeftConductor", + "material":{ + "type":"PEC" + } + }, + { + "name":"LeftDielectric", + "material":{ + "type":"Dielectric", + "permittivity": 2.0 + } + }, + { + "name":"RightDielectric", + "material":{ + "type":"Dielectric", + "permittivity":2.0 + } + } + ] +} \ No newline at end of file diff --git a/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.step b/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.step new file mode 100644 index 0000000..d378b11 --- /dev/null +++ b/testData/DielectricUnshieldedPair/DielectricUnshieldedPair.step @@ -0,0 +1,287 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-09-30T15:34:24',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('DielectricUnshieldedPair','DielectricUnshieldedPair','',( + #8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(20.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(-20.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(20.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(-20.,0.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, + 'distance_accuracy_value','confusion accuracy'); +#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); +#38 = PRODUCT_DEFINITION_SHAPE('','',#39); +#39 = PRODUCT_DEFINITION('design','',#40,#43); +#40 = PRODUCT_DEFINITION_FORMATION('','',#41); +#41 = PRODUCT('RightConductor','RightConductor','',(#42)); +#42 = PRODUCT_CONTEXT('',#2,'mechanical'); +#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#44 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#45),#64); +#45 = SHELL_BASED_SURFACE_MODEL('',(#46)); +#46 = OPEN_SHELL('',(#47)); +#47 = ADVANCED_FACE('',(#48),#59,.T.); +#48 = FACE_BOUND('',#49,.T.); +#49 = EDGE_LOOP('',(#50)); +#50 = ORIENTED_EDGE('',*,*,#51,.T.); +#51 = EDGE_CURVE('',#52,#52,#54,.T.); +#52 = VERTEX_POINT('',#53); +#53 = CARTESIAN_POINT('',(8.,0.,0.)); +#54 = CIRCLE('',#55,8.); +#55 = AXIS2_PLACEMENT_3D('',#56,#57,#58); +#56 = CARTESIAN_POINT('',(0.,0.,0.)); +#57 = DIRECTION('',(0.,0.,1.)); +#58 = DIRECTION('',(1.,0.,0.)); +#59 = PLANE('',#60); +#60 = AXIS2_PLACEMENT_3D('',#61,#62,#63); +#61 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#62 = DIRECTION('',(0.,0.,1.)); +#63 = DIRECTION('',(1.,0.,0.)); +#64 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#68)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#65,#66,#67)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#65 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#66 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#67 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#68 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#65, + 'distance_accuracy_value','confusion accuracy'); +#69 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#70,#72); +#70 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#71) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#71 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#72 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#73); +#73 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','RightConductor','',#5,#39,$); +#74 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); +#75 = SHAPE_DEFINITION_REPRESENTATION(#76,#82); +#76 = PRODUCT_DEFINITION_SHAPE('','',#77); +#77 = PRODUCT_DEFINITION('design','',#78,#81); +#78 = PRODUCT_DEFINITION_FORMATION('','',#79); +#79 = PRODUCT('LeftConductor','LeftConductor','',(#80)); +#80 = PRODUCT_CONTEXT('',#2,'mechanical'); +#81 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#82 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#83),#102); +#83 = SHELL_BASED_SURFACE_MODEL('',(#84)); +#84 = OPEN_SHELL('',(#85)); +#85 = ADVANCED_FACE('',(#86),#97,.T.); +#86 = FACE_BOUND('',#87,.T.); +#87 = EDGE_LOOP('',(#88)); +#88 = ORIENTED_EDGE('',*,*,#89,.T.); +#89 = EDGE_CURVE('',#90,#90,#92,.T.); +#90 = VERTEX_POINT('',#91); +#91 = CARTESIAN_POINT('',(8.,0.,0.)); +#92 = CIRCLE('',#93,8.); +#93 = AXIS2_PLACEMENT_3D('',#94,#95,#96); +#94 = CARTESIAN_POINT('',(0.,0.,0.)); +#95 = DIRECTION('',(0.,0.,1.)); +#96 = DIRECTION('',(1.,0.,0.)); +#97 = PLANE('',#98); +#98 = AXIS2_PLACEMENT_3D('',#99,#100,#101); +#99 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#100 = DIRECTION('',(0.,0.,1.)); +#101 = DIRECTION('',(1.,0.,0.)); +#102 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#106)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#103,#104,#105)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#103 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#104 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#105 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#106 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#103, + 'distance_accuracy_value','confusion accuracy'); +#107 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#108,#110); +#108 = ( REPRESENTATION_RELATIONSHIP('','',#82,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#109) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#109 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#110 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#111 + ); +#111 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','LeftConductor','',#5,#77,$); +#112 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#79)); +#113 = SHAPE_DEFINITION_REPRESENTATION(#114,#120); +#114 = PRODUCT_DEFINITION_SHAPE('','',#115); +#115 = PRODUCT_DEFINITION('design','',#116,#119); +#116 = PRODUCT_DEFINITION_FORMATION('','',#117); +#117 = PRODUCT('RightDielectric','RightDielectric','',(#118)); +#118 = PRODUCT_CONTEXT('',#2,'mechanical'); +#119 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#120 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#121),#140); +#121 = SHELL_BASED_SURFACE_MODEL('',(#122)); +#122 = OPEN_SHELL('',(#123)); +#123 = ADVANCED_FACE('',(#124),#135,.T.); +#124 = FACE_BOUND('',#125,.T.); +#125 = EDGE_LOOP('',(#126)); +#126 = ORIENTED_EDGE('',*,*,#127,.T.); +#127 = EDGE_CURVE('',#128,#128,#130,.T.); +#128 = VERTEX_POINT('',#129); +#129 = CARTESIAN_POINT('',(16.,0.,0.)); +#130 = CIRCLE('',#131,16.); +#131 = AXIS2_PLACEMENT_3D('',#132,#133,#134); +#132 = CARTESIAN_POINT('',(0.,0.,0.)); +#133 = DIRECTION('',(0.,0.,1.)); +#134 = DIRECTION('',(1.,0.,0.)); +#135 = PLANE('',#136); +#136 = AXIS2_PLACEMENT_3D('',#137,#138,#139); +#137 = CARTESIAN_POINT('',(-1.025580099405E-15,3.057510672446E-17,0.)); +#138 = DIRECTION('',(0.,0.,1.)); +#139 = DIRECTION('',(1.,0.,0.)); +#140 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#144)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#141,#142,#143)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#141 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#142 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#143 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#144 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#141, + 'distance_accuracy_value','confusion accuracy'); +#145 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#146,#148); +#146 = ( REPRESENTATION_RELATIONSHIP('','',#120,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#147) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#147 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#148 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#149 + ); +#149 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','RightDielectric','',#5,#115,$ + ); +#150 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#117)); +#151 = SHAPE_DEFINITION_REPRESENTATION(#152,#158); +#152 = PRODUCT_DEFINITION_SHAPE('','',#153); +#153 = PRODUCT_DEFINITION('design','',#154,#157); +#154 = PRODUCT_DEFINITION_FORMATION('','',#155); +#155 = PRODUCT('LeftDielectric','LeftDielectric','',(#156)); +#156 = PRODUCT_CONTEXT('',#2,'mechanical'); +#157 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#158 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#159),#178); +#159 = SHELL_BASED_SURFACE_MODEL('',(#160)); +#160 = OPEN_SHELL('',(#161)); +#161 = ADVANCED_FACE('',(#162),#173,.T.); +#162 = FACE_BOUND('',#163,.T.); +#163 = EDGE_LOOP('',(#164)); +#164 = ORIENTED_EDGE('',*,*,#165,.T.); +#165 = EDGE_CURVE('',#166,#166,#168,.T.); +#166 = VERTEX_POINT('',#167); +#167 = CARTESIAN_POINT('',(16.,0.,0.)); +#168 = CIRCLE('',#169,16.); +#169 = AXIS2_PLACEMENT_3D('',#170,#171,#172); +#170 = CARTESIAN_POINT('',(0.,0.,0.)); +#171 = DIRECTION('',(0.,0.,1.)); +#172 = DIRECTION('',(1.,0.,0.)); +#173 = PLANE('',#174); +#174 = AXIS2_PLACEMENT_3D('',#175,#176,#177); +#175 = CARTESIAN_POINT('',(-1.025580099405E-15,3.057510672446E-17,0.)); +#176 = DIRECTION('',(0.,0.,1.)); +#177 = DIRECTION('',(1.,0.,0.)); +#178 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#182)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#179,#180,#181)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#179 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#180 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#181 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#182 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#179, + 'distance_accuracy_value','confusion accuracy'); +#183 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#184,#186); +#184 = ( REPRESENTATION_RELATIONSHIP('','',#158,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#185) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#185 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#186 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#187 + ); +#187 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','LeftDielectric','',#5,#153,$ + ); +#188 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#155)); +#189 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#190) + ,#64); +#190 = STYLED_ITEM('color',(#191),#47); +#191 = PRESENTATION_STYLE_ASSIGNMENT((#192,#198)); +#192 = SURFACE_STYLE_USAGE(.BOTH.,#193); +#193 = SURFACE_SIDE_STYLE('',(#194)); +#194 = SURFACE_STYLE_FILL_AREA(#195); +#195 = FILL_AREA_STYLE('',(#196)); +#196 = FILL_AREA_STYLE_COLOUR('',#197); +#197 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#198 = CURVE_STYLE('',#199,POSITIVE_LENGTH_MEASURE(0.1),#200); +#199 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#200 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#201 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#202) + ,#102); +#202 = STYLED_ITEM('color',(#203),#85); +#203 = PRESENTATION_STYLE_ASSIGNMENT((#204,#209)); +#204 = SURFACE_STYLE_USAGE(.BOTH.,#205); +#205 = SURFACE_SIDE_STYLE('',(#206)); +#206 = SURFACE_STYLE_FILL_AREA(#207); +#207 = FILL_AREA_STYLE('',(#208)); +#208 = FILL_AREA_STYLE_COLOUR('',#197); +#209 = CURVE_STYLE('',#210,POSITIVE_LENGTH_MEASURE(0.1),#200); +#210 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#211 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#212) + ,#140); +#212 = STYLED_ITEM('color',(#213),#123); +#213 = PRESENTATION_STYLE_ASSIGNMENT((#214,#221)); +#214 = SURFACE_STYLE_USAGE(.BOTH.,#215); +#215 = SURFACE_SIDE_STYLE('',(#216,#219)); +#216 = SURFACE_STYLE_FILL_AREA(#217); +#217 = FILL_AREA_STYLE('',(#218)); +#218 = FILL_AREA_STYLE_COLOUR('',#197); +#219 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#197,( + #220)); +#220 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#221 = CURVE_STYLE('',#222,POSITIVE_LENGTH_MEASURE(0.1),#200); +#222 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#223 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#224) + ,#178); +#224 = STYLED_ITEM('color',(#225),#161); +#225 = PRESENTATION_STYLE_ASSIGNMENT((#226,#233)); +#226 = SURFACE_STYLE_USAGE(.BOTH.,#227); +#227 = SURFACE_SIDE_STYLE('',(#228,#231)); +#228 = SURFACE_STYLE_FILL_AREA(#229); +#229 = FILL_AREA_STYLE('',(#230)); +#230 = FILL_AREA_STYLE_COLOUR('',#197); +#231 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#197,( + #232)); +#232 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#233 = CURVE_STYLE('',#234,POSITIVE_LENGTH_MEASURE(0.1),#200); +#234 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/FusedConductor/FusedConductor.20250930-153234.FCBak b/testData/FusedConductor/FusedConductor.20250930-153234.FCBak new file mode 100644 index 0000000..f9436fa Binary files /dev/null and b/testData/FusedConductor/FusedConductor.20250930-153234.FCBak differ diff --git a/testData/FusedConductor/FusedConductor.FCStd b/testData/FusedConductor/FusedConductor.FCStd new file mode 100644 index 0000000..41d0503 Binary files /dev/null and b/testData/FusedConductor/FusedConductor.FCStd differ diff --git a/testData/FusedConductor/FusedConductor.json b/testData/FusedConductor/FusedConductor.json new file mode 100644 index 0000000..b90e55f --- /dev/null +++ b/testData/FusedConductor/FusedConductor.json @@ -0,0 +1,40 @@ +{ + "CrossSection":[ + { + "name":"Shield", + "material":{ + "type":"PEC" + } + }, + { + "name":"A", + "material":{ + "type":"PEC" + } + }, + { + "name":"B", + "material":{ + "type":"PEC" + } + }, + { + "name":"C", + "material":{ + "type":"PEC" + } + }, + { + "name":"D", + "material":{ + "type":"PEC" + } + }, + { + "name":"E", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/FusedConductor/FusedConductor.step b/testData/FusedConductor/FusedConductor.step new file mode 100644 index 0000000..1ff048b --- /dev/null +++ b/testData/FusedConductor/FusedConductor.step @@ -0,0 +1,401 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); +FILE_NAME('Open CASCADE Shape Model','2025-10-01T13:24:21',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); +FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); +ENDSEC; +DATA; +#1 = APPLICATION_PROTOCOL_DEFINITION('international standard', + 'automotive_design',2000,#2); +#2 = APPLICATION_CONTEXT( + 'core data for automotive mechanical design processes'); +#3 = SHAPE_DEFINITION_REPRESENTATION(#4,#10); +#4 = PRODUCT_DEFINITION_SHAPE('','',#5); +#5 = PRODUCT_DEFINITION('design','',#6,#9); +#6 = PRODUCT_DEFINITION_FORMATION('','',#7); +#7 = PRODUCT('FusedConductor','FusedConductor','',(#8)); +#8 = PRODUCT_CONTEXT('',#2,'mechanical'); +#9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31,#35),#39); +#11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); +#12 = CARTESIAN_POINT('',(0.,0.,0.)); +#13 = DIRECTION('',(0.,0.,1.)); +#14 = DIRECTION('',(1.,0.,-0.)); +#15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); +#16 = CARTESIAN_POINT('',(3.,0.,0.)); +#17 = DIRECTION('',(0.,0.,1.)); +#18 = DIRECTION('',(1.,0.,0.)); +#19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); +#20 = CARTESIAN_POINT('',(0.,0.,0.)); +#21 = DIRECTION('',(0.,0.,1.)); +#22 = DIRECTION('',(1.,0.,0.)); +#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); +#24 = CARTESIAN_POINT('',(-8.,0.,0.)); +#25 = DIRECTION('',(0.,0.,1.)); +#26 = DIRECTION('',(1.,0.,0.)); +#27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); +#28 = CARTESIAN_POINT('',(-2.,7.,0.)); +#29 = DIRECTION('',(0.,0.,1.)); +#30 = DIRECTION('',(1.,0.,0.)); +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(-2.,30.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(16.,1.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#43)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#40,#41,#42)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#40 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#41 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#42 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#43 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#40, + 'distance_accuracy_value','confusion accuracy'); +#44 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#45 = SHAPE_DEFINITION_REPRESENTATION(#46,#52); +#46 = PRODUCT_DEFINITION_SHAPE('','',#47); +#47 = PRODUCT_DEFINITION('design','',#48,#51); +#48 = PRODUCT_DEFINITION_FORMATION('','',#49); +#49 = PRODUCT('A','A','',(#50)); +#50 = PRODUCT_CONTEXT('',#2,'mechanical'); +#51 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#52 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#53),#72); +#53 = SHELL_BASED_SURFACE_MODEL('',(#54)); +#54 = OPEN_SHELL('',(#55)); +#55 = ADVANCED_FACE('',(#56),#67,.T.); +#56 = FACE_BOUND('',#57,.T.); +#57 = EDGE_LOOP('',(#58)); +#58 = ORIENTED_EDGE('',*,*,#59,.T.); +#59 = EDGE_CURVE('',#60,#60,#62,.T.); +#60 = VERTEX_POINT('',#61); +#61 = CARTESIAN_POINT('',(8.,0.,0.)); +#62 = CIRCLE('',#63,8.); +#63 = AXIS2_PLACEMENT_3D('',#64,#65,#66); +#64 = CARTESIAN_POINT('',(0.,0.,0.)); +#65 = DIRECTION('',(0.,0.,1.)); +#66 = DIRECTION('',(1.,0.,0.)); +#67 = PLANE('',#68); +#68 = AXIS2_PLACEMENT_3D('',#69,#70,#71); +#69 = CARTESIAN_POINT('',(-5.1E-16,2.E-17,0.)); +#70 = DIRECTION('',(0.,0.,1.)); +#71 = DIRECTION('',(1.,0.,0.)); +#72 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#76)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#73,#74,#75)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#73 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#74 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#75 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#76 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#73, + 'distance_accuracy_value','confusion accuracy'); +#77 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#78,#80); +#78 = ( REPRESENTATION_RELATIONSHIP('','',#52,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#79) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#79 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#80 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#81); +#81 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('6','A','',#5,#47,$); +#82 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#49)); +#83 = SHAPE_DEFINITION_REPRESENTATION(#84,#90); +#84 = PRODUCT_DEFINITION_SHAPE('','',#85); +#85 = PRODUCT_DEFINITION('design','',#86,#89); +#86 = PRODUCT_DEFINITION_FORMATION('','',#87); +#87 = PRODUCT('Shield','Shield','',(#88)); +#88 = PRODUCT_CONTEXT('',#2,'mechanical'); +#89 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#90 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#91),#110); +#91 = SHELL_BASED_SURFACE_MODEL('',(#92)); +#92 = OPEN_SHELL('',(#93)); +#93 = ADVANCED_FACE('',(#94),#105,.T.); +#94 = FACE_BOUND('',#95,.T.); +#95 = EDGE_LOOP('',(#96)); +#96 = ORIENTED_EDGE('',*,*,#97,.T.); +#97 = EDGE_CURVE('',#98,#98,#100,.T.); +#98 = VERTEX_POINT('',#99); +#99 = CARTESIAN_POINT('',(50.,0.,0.)); +#100 = CIRCLE('',#101,50.); +#101 = AXIS2_PLACEMENT_3D('',#102,#103,#104); +#102 = CARTESIAN_POINT('',(0.,0.,0.)); +#103 = DIRECTION('',(0.,0.,1.)); +#104 = DIRECTION('',(1.,0.,-0.)); +#105 = PLANE('',#106); +#106 = AXIS2_PLACEMENT_3D('',#107,#108,#109); +#107 = CARTESIAN_POINT('',(-3.5E-15,-2.04E-15,0.)); +#108 = DIRECTION('',(0.,0.,1.)); +#109 = DIRECTION('',(1.,0.,-0.)); +#110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#114)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#111,#112,#113)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#111, + 'distance_accuracy_value','confusion accuracy'); +#115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#116,#118); +#116 = ( REPRESENTATION_RELATIONSHIP('','',#90,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#117) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#119 + ); +#119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('7','Shield','',#5,#85,$); +#120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#87)); +#121 = SHAPE_DEFINITION_REPRESENTATION(#122,#128); +#122 = PRODUCT_DEFINITION_SHAPE('','',#123); +#123 = PRODUCT_DEFINITION('design','',#124,#127); +#124 = PRODUCT_DEFINITION_FORMATION('','',#125); +#125 = PRODUCT('B','B','',(#126)); +#126 = PRODUCT_CONTEXT('',#2,'mechanical'); +#127 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#128 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#129),#148); +#129 = SHELL_BASED_SURFACE_MODEL('',(#130)); +#130 = OPEN_SHELL('',(#131)); +#131 = ADVANCED_FACE('',(#132),#143,.T.); +#132 = FACE_BOUND('',#133,.T.); +#133 = EDGE_LOOP('',(#134)); +#134 = ORIENTED_EDGE('',*,*,#135,.T.); +#135 = EDGE_CURVE('',#136,#136,#138,.T.); +#136 = VERTEX_POINT('',#137); +#137 = CARTESIAN_POINT('',(8.,0.,0.)); +#138 = CIRCLE('',#139,8.); +#139 = AXIS2_PLACEMENT_3D('',#140,#141,#142); +#140 = CARTESIAN_POINT('',(0.,0.,0.)); +#141 = DIRECTION('',(0.,0.,1.)); +#142 = DIRECTION('',(1.,0.,0.)); +#143 = PLANE('',#144); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(-5.1E-16,2.E-17,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,0.)); +#148 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#152)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#149,#150,#151)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#149 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#150 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#151 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#152 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#149, + 'distance_accuracy_value','confusion accuracy'); +#153 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#154,#156); +#154 = ( REPRESENTATION_RELATIONSHIP('','',#128,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#155) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#155 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#156 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#157 + ); +#157 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('8','B','',#5,#123,$); +#158 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#125)); +#159 = SHAPE_DEFINITION_REPRESENTATION(#160,#166); +#160 = PRODUCT_DEFINITION_SHAPE('','',#161); +#161 = PRODUCT_DEFINITION('design','',#162,#165); +#162 = PRODUCT_DEFINITION_FORMATION('','',#163); +#163 = PRODUCT('C','C','',(#164)); +#164 = PRODUCT_CONTEXT('',#2,'mechanical'); +#165 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#166 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#167),#186); +#167 = SHELL_BASED_SURFACE_MODEL('',(#168)); +#168 = OPEN_SHELL('',(#169)); +#169 = ADVANCED_FACE('',(#170),#181,.T.); +#170 = FACE_BOUND('',#171,.T.); +#171 = EDGE_LOOP('',(#172)); +#172 = ORIENTED_EDGE('',*,*,#173,.T.); +#173 = EDGE_CURVE('',#174,#174,#176,.T.); +#174 = VERTEX_POINT('',#175); +#175 = CARTESIAN_POINT('',(8.,0.,0.)); +#176 = CIRCLE('',#177,8.); +#177 = AXIS2_PLACEMENT_3D('',#178,#179,#180); +#178 = CARTESIAN_POINT('',(0.,0.,0.)); +#179 = DIRECTION('',(0.,0.,1.)); +#180 = DIRECTION('',(1.,0.,0.)); +#181 = PLANE('',#182); +#182 = AXIS2_PLACEMENT_3D('',#183,#184,#185); +#183 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#184 = DIRECTION('',(0.,0.,1.)); +#185 = DIRECTION('',(1.,0.,0.)); +#186 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#190)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#187,#188,#189)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#187 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#188 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#189 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#190 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#187, + 'distance_accuracy_value','confusion accuracy'); +#191 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#192,#194); +#192 = ( REPRESENTATION_RELATIONSHIP('','',#166,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#193) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#193 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#194 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#195 + ); +#195 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('9','C','',#5,#161,$); +#196 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#163)); +#197 = SHAPE_DEFINITION_REPRESENTATION(#198,#204); +#198 = PRODUCT_DEFINITION_SHAPE('','',#199); +#199 = PRODUCT_DEFINITION('design','',#200,#203); +#200 = PRODUCT_DEFINITION_FORMATION('','',#201); +#201 = PRODUCT('D','D','',(#202)); +#202 = PRODUCT_CONTEXT('',#2,'mechanical'); +#203 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#204 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#205),#224); +#205 = SHELL_BASED_SURFACE_MODEL('',(#206)); +#206 = OPEN_SHELL('',(#207)); +#207 = ADVANCED_FACE('',(#208),#219,.T.); +#208 = FACE_BOUND('',#209,.T.); +#209 = EDGE_LOOP('',(#210)); +#210 = ORIENTED_EDGE('',*,*,#211,.T.); +#211 = EDGE_CURVE('',#212,#212,#214,.T.); +#212 = VERTEX_POINT('',#213); +#213 = CARTESIAN_POINT('',(8.,0.,0.)); +#214 = CIRCLE('',#215,8.); +#215 = AXIS2_PLACEMENT_3D('',#216,#217,#218); +#216 = CARTESIAN_POINT('',(0.,0.,0.)); +#217 = DIRECTION('',(0.,0.,1.)); +#218 = DIRECTION('',(1.,0.,0.)); +#219 = PLANE('',#220); +#220 = AXIS2_PLACEMENT_3D('',#221,#222,#223); +#221 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#222 = DIRECTION('',(0.,0.,1.)); +#223 = DIRECTION('',(1.,0.,0.)); +#224 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#228)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#225,#226,#227)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#225 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#226 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#227 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#228 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#225, + 'distance_accuracy_value','confusion accuracy'); +#229 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#230,#232); +#230 = ( REPRESENTATION_RELATIONSHIP('','',#204,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#231) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#231 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#232 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#233 + ); +#233 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('10','D','',#5,#199,$); +#234 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#201)); +#235 = SHAPE_DEFINITION_REPRESENTATION(#236,#242); +#236 = PRODUCT_DEFINITION_SHAPE('','',#237); +#237 = PRODUCT_DEFINITION('design','',#238,#241); +#238 = PRODUCT_DEFINITION_FORMATION('','',#239); +#239 = PRODUCT('E','E','',(#240)); +#240 = PRODUCT_CONTEXT('',#2,'mechanical'); +#241 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#242 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#243),#262); +#243 = SHELL_BASED_SURFACE_MODEL('',(#244)); +#244 = OPEN_SHELL('',(#245)); +#245 = ADVANCED_FACE('',(#246),#257,.T.); +#246 = FACE_BOUND('',#247,.T.); +#247 = EDGE_LOOP('',(#248)); +#248 = ORIENTED_EDGE('',*,*,#249,.T.); +#249 = EDGE_CURVE('',#250,#250,#252,.T.); +#250 = VERTEX_POINT('',#251); +#251 = CARTESIAN_POINT('',(8.,0.,0.)); +#252 = CIRCLE('',#253,8.); +#253 = AXIS2_PLACEMENT_3D('',#254,#255,#256); +#254 = CARTESIAN_POINT('',(0.,0.,0.)); +#255 = DIRECTION('',(0.,0.,1.)); +#256 = DIRECTION('',(1.,0.,0.)); +#257 = PLANE('',#258); +#258 = AXIS2_PLACEMENT_3D('',#259,#260,#261); +#259 = CARTESIAN_POINT('',(-5.127900497023E-16,1.528755336223E-17,0.)); +#260 = DIRECTION('',(0.,0.,1.)); +#261 = DIRECTION('',(1.,0.,0.)); +#262 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#266)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#263,#264,#265)) REPRESENTATION_CONTEXT('Context #1', + '3D Context with UNIT and UNCERTAINTY') ); +#263 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#264 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#265 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#266 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#263, + 'distance_accuracy_value','confusion accuracy'); +#267 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#268,#270); +#268 = ( REPRESENTATION_RELATIONSHIP('','',#242,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#269) +SHAPE_REPRESENTATION_RELATIONSHIP() ); +#269 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#270 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#271 + ); +#271 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','E','',#5,#237,$); +#272 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#239)); +#273 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#274) + ,#262); +#274 = STYLED_ITEM('color',(#275),#245); +#275 = PRESENTATION_STYLE_ASSIGNMENT((#276,#282)); +#276 = SURFACE_STYLE_USAGE(.BOTH.,#277); +#277 = SURFACE_SIDE_STYLE('',(#278)); +#278 = SURFACE_STYLE_FILL_AREA(#279); +#279 = FILL_AREA_STYLE('',(#280)); +#280 = FILL_AREA_STYLE_COLOUR('',#281); +#281 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); +#282 = CURVE_STYLE('',#283,POSITIVE_LENGTH_MEASURE(0.1),#284); +#283 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#284 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, + 9.803921802644E-02); +#285 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#286) + ,#148); +#286 = STYLED_ITEM('color',(#287),#131); +#287 = PRESENTATION_STYLE_ASSIGNMENT((#288,#293)); +#288 = SURFACE_STYLE_USAGE(.BOTH.,#289); +#289 = SURFACE_SIDE_STYLE('',(#290)); +#290 = SURFACE_STYLE_FILL_AREA(#291); +#291 = FILL_AREA_STYLE('',(#292)); +#292 = FILL_AREA_STYLE_COLOUR('',#281); +#293 = CURVE_STYLE('',#294,POSITIVE_LENGTH_MEASURE(0.1),#284); +#294 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#295 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#296) + ,#72); +#296 = STYLED_ITEM('color',(#297),#55); +#297 = PRESENTATION_STYLE_ASSIGNMENT((#298,#303)); +#298 = SURFACE_STYLE_USAGE(.BOTH.,#299); +#299 = SURFACE_SIDE_STYLE('',(#300)); +#300 = SURFACE_STYLE_FILL_AREA(#301); +#301 = FILL_AREA_STYLE('',(#302)); +#302 = FILL_AREA_STYLE_COLOUR('',#281); +#303 = CURVE_STYLE('',#304,POSITIVE_LENGTH_MEASURE(0.1),#284); +#304 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#305 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#306) + ,#186); +#306 = STYLED_ITEM('color',(#307),#169); +#307 = PRESENTATION_STYLE_ASSIGNMENT((#308,#313)); +#308 = SURFACE_STYLE_USAGE(.BOTH.,#309); +#309 = SURFACE_SIDE_STYLE('',(#310)); +#310 = SURFACE_STYLE_FILL_AREA(#311); +#311 = FILL_AREA_STYLE('',(#312)); +#312 = FILL_AREA_STYLE_COLOUR('',#281); +#313 = CURVE_STYLE('',#314,POSITIVE_LENGTH_MEASURE(0.1),#284); +#314 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#315 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#316) + ,#224); +#316 = STYLED_ITEM('color',(#317),#207); +#317 = PRESENTATION_STYLE_ASSIGNMENT((#318,#323)); +#318 = SURFACE_STYLE_USAGE(.BOTH.,#319); +#319 = SURFACE_SIDE_STYLE('',(#320)); +#320 = SURFACE_STYLE_FILL_AREA(#321); +#321 = FILL_AREA_STYLE('',(#322)); +#322 = FILL_AREA_STYLE_COLOUR('',#281); +#323 = CURVE_STYLE('',#324,POSITIVE_LENGTH_MEASURE(0.1),#284); +#324 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#325 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#326) + ,#110); +#326 = STYLED_ITEM('color',(#327),#93); +#327 = PRESENTATION_STYLE_ASSIGNMENT((#328,#335)); +#328 = SURFACE_STYLE_USAGE(.BOTH.,#329); +#329 = SURFACE_SIDE_STYLE('',(#330,#333)); +#330 = SURFACE_STYLE_FILL_AREA(#331); +#331 = FILL_AREA_STYLE('',(#332)); +#332 = FILL_AREA_STYLE_COLOUR('',#281); +#333 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #334)); +#334 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#335 = CURVE_STYLE('',#336,POSITIVE_LENGTH_MEASURE(0.1),#284); +#336 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +ENDSEC; +END-ISO-10303-21; diff --git a/testData/agrawal1981/agrawal1981.json b/testData/agrawal1981/agrawal1981.json new file mode 100644 index 0000000..c341a70 --- /dev/null +++ b/testData/agrawal1981/agrawal1981.json @@ -0,0 +1,46 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_001", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_002", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_003", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_001", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_002", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_003", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json b/testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json new file mode 100644 index 0000000..cf9fd42 --- /dev/null +++ b/testData/conductor_and_outer_dielectric/conductor_and_outer_dielectric.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_000", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_000", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/empty_coax/empty_coax.json b/testData/empty_coax/empty_coax.json new file mode 100644 index 0000000..ac13926 --- /dev/null +++ b/testData/empty_coax/empty_coax.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/five_wires/five_wires.json b/testData/five_wires/five_wires.json new file mode 100644 index 0000000..baf93aa --- /dev/null +++ b/testData/five_wires/five_wires.json @@ -0,0 +1,70 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_002", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_003", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_004", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_005", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_1", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_002", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_003", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_004", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_005", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json b/testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json new file mode 100644 index 0000000..d4a35a4 --- /dev/null +++ b/testData/lansink2024_single_wire_multipolar/lansink2024_single_wire_multipolar.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_0", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/nested_coax/nested_coax.json b/testData/nested_coax/nested_coax.json new file mode 100644 index 0000000..c82189f --- /dev/null +++ b/testData/nested_coax/nested_coax.json @@ -0,0 +1,22 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_2", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/partially_filled_coax/partially_filled_coax.json b/testData/partially_filled_coax/partially_filled_coax.json new file mode 100644 index 0000000..bdb473b --- /dev/null +++ b/testData/partially_filled_coax/partially_filled_coax.json @@ -0,0 +1,23 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_1", + "material":{ + "type":"Dielectric", + "permittivity": 2.0 + } + } + ] +} \ No newline at end of file diff --git a/testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak b/testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak new file mode 100644 index 0000000..fcc9ca8 Binary files /dev/null and b/testData/three_wires_ribbon/three_wires_ribbon.20250709-095732.FCBak differ diff --git a/testData/three_wires_ribbon/three_wires_ribbon.FCStd b/testData/three_wires_ribbon/three_wires_ribbon.FCStd index fcc9ca8..d84b8d0 100644 Binary files a/testData/three_wires_ribbon/three_wires_ribbon.FCStd and b/testData/three_wires_ribbon/three_wires_ribbon.FCStd differ diff --git a/testData/three_wires_ribbon/three_wires_ribbon.json b/testData/three_wires_ribbon/three_wires_ribbon.json new file mode 100644 index 0000000..292fe72 --- /dev/null +++ b/testData/three_wires_ribbon/three_wires_ribbon.json @@ -0,0 +1,40 @@ +{ + "CrossSection":[ + { + "name":"Conductor_000", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_001", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_002", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_0", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_001", + "material":{ + "type":"Dielectric" + } + }, + { + "name":"Dielectric_002", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file diff --git a/testData/three_wires_ribbon/three_wires_ribbon.step b/testData/three_wires_ribbon/three_wires_ribbon.step index 7e48d70..9e4ad8f 100644 --- a/testData/three_wires_ribbon/three_wires_ribbon.step +++ b/testData/three_wires_ribbon/three_wires_ribbon.step @@ -1,8 +1,8 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-09-19T20:10:34',(''),(''), - 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_NAME('Open CASCADE Shape Model','2025-10-02T13:59:31',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; DATA; @@ -17,7 +17,7 @@ DATA; #7 = PRODUCT('three_wires_ribbon','three_wires_ribbon','',(#8)); #8 = PRODUCT_CONTEXT('',#2,'mechanical'); #9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27),#31); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23,#27,#31,#35),#39); #11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); #12 = CARTESIAN_POINT('',(0.,0.,0.)); #13 = DIRECTION('',(0.,0.,1.)); @@ -31,606 +31,382 @@ DATA; #21 = DIRECTION('',(0.,0.,1.)); #22 = DIRECTION('',(1.,0.,0.)); #23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); -#24 = CARTESIAN_POINT('',(0.,0.,0.)); +#24 = CARTESIAN_POINT('',(1.27,0.,0.)); #25 = DIRECTION('',(0.,0.,1.)); #26 = DIRECTION('',(1.,0.,0.)); #27 = AXIS2_PLACEMENT_3D('',#28,#29,#30); -#28 = CARTESIAN_POINT('',(1.27,1.E-16,0.)); +#28 = CARTESIAN_POINT('',(1.27,0.,0.)); #29 = DIRECTION('',(0.,0.,1.)); #30 = DIRECTION('',(1.,0.,0.)); -#31 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#35)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#32,#33,#34)) REPRESENTATION_CONTEXT('Context #1', +#31 = AXIS2_PLACEMENT_3D('',#32,#33,#34); +#32 = CARTESIAN_POINT('',(2.54,0.,0.)); +#33 = DIRECTION('',(0.,0.,1.)); +#34 = DIRECTION('',(1.,0.,0.)); +#35 = AXIS2_PLACEMENT_3D('',#36,#37,#38); +#36 = CARTESIAN_POINT('',(2.54,0.,0.)); +#37 = DIRECTION('',(0.,0.,1.)); +#38 = DIRECTION('',(1.,0.,0.)); +#39 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#43)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#40,#41,#42)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#32 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#33 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#34 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#35 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#32, +#40 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#41 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#42 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#43 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#40, 'distance_accuracy_value','confusion accuracy'); -#36 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); -#37 = SHAPE_DEFINITION_REPRESENTATION(#38,#44); -#38 = PRODUCT_DEFINITION_SHAPE('','',#39); -#39 = PRODUCT_DEFINITION('design','',#40,#43); -#40 = PRODUCT_DEFINITION_FORMATION('','',#41); -#41 = PRODUCT('solid_wire_000','solid_wire_000','',(#42)); -#42 = PRODUCT_CONTEXT('',#2,'mechanical'); -#43 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#44 = SHAPE_REPRESENTATION('',(#11,#45,#49),#53); -#45 = AXIS2_PLACEMENT_3D('',#46,#47,#48); -#46 = CARTESIAN_POINT('',(0.,0.,0.)); -#47 = DIRECTION('',(0.,0.,1.)); -#48 = DIRECTION('',(1.,0.,0.)); -#49 = AXIS2_PLACEMENT_3D('',#50,#51,#52); -#50 = CARTESIAN_POINT('',(0.,0.,0.)); -#51 = DIRECTION('',(0.,0.,1.)); -#52 = DIRECTION('',(1.,0.,0.)); -#53 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#57)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#54,#55,#56)) REPRESENTATION_CONTEXT('Context #1', +#44 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#45 = SHAPE_DEFINITION_REPRESENTATION(#46,#52); +#46 = PRODUCT_DEFINITION_SHAPE('','',#47); +#47 = PRODUCT_DEFINITION('design','',#48,#51); +#48 = PRODUCT_DEFINITION_FORMATION('','',#49); +#49 = PRODUCT('Conductor_000','Conductor_000','',(#50)); +#50 = PRODUCT_CONTEXT('',#2,'mechanical'); +#51 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#52 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#53),#72); +#53 = SHELL_BASED_SURFACE_MODEL('',(#54)); +#54 = OPEN_SHELL('',(#55)); +#55 = ADVANCED_FACE('',(#56),#67,.T.); +#56 = FACE_BOUND('',#57,.T.); +#57 = EDGE_LOOP('',(#58)); +#58 = ORIENTED_EDGE('',*,*,#59,.T.); +#59 = EDGE_CURVE('',#60,#60,#62,.T.); +#60 = VERTEX_POINT('',#61); +#61 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#62 = CIRCLE('',#63,0.1905); +#63 = AXIS2_PLACEMENT_3D('',#64,#65,#66); +#64 = CARTESIAN_POINT('',(0.,0.,0.)); +#65 = DIRECTION('',(0.,0.,1.)); +#66 = DIRECTION('',(1.,0.,-0.)); +#67 = PLANE('',#68); +#68 = AXIS2_PLACEMENT_3D('',#69,#70,#71); +#69 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#70 = DIRECTION('',(0.,0.,1.)); +#71 = DIRECTION('',(1.,0.,-0.)); +#72 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#76)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#73,#74,#75)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#54 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#55 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#56 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#57 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#54, +#73 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#74 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#75 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#76 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#73, 'distance_accuracy_value','confusion accuracy'); -#58 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#61); -#59 = ( REPRESENTATION_RELATIONSHIP('','',#44,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60) +#77 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#78,#80); +#78 = ( REPRESENTATION_RELATIONSHIP('','',#52,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#79) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#60 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); -#61 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#62); -#62 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('13','solid_wire_000','',#5,#39,$); -#63 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#41)); -#64 = SHAPE_DEFINITION_REPRESENTATION(#65,#71); -#65 = PRODUCT_DEFINITION_SHAPE('','',#66); -#66 = PRODUCT_DEFINITION('design','',#67,#70); -#67 = PRODUCT_DEFINITION_FORMATION('','',#68); -#68 = PRODUCT('Conductor_0','Conductor_0','',(#69)); -#69 = PRODUCT_CONTEXT('',#2,'mechanical'); -#70 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#71 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#72),#99); -#72 = SHELL_BASED_SURFACE_MODEL('',(#73)); -#73 = OPEN_SHELL('',(#74)); -#74 = ADVANCED_FACE('',(#75),#88,.T.); -#75 = FACE_BOUND('',#76,.T.); -#76 = EDGE_LOOP('',(#77)); -#77 = ORIENTED_EDGE('',*,*,#78,.T.); -#78 = EDGE_CURVE('',#79,#79,#81,.T.); -#79 = VERTEX_POINT('',#80); -#80 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#81 = SURFACE_CURVE('',#82,(#87),.PCURVE_S1.); -#82 = CIRCLE('',#83,0.1905); -#83 = AXIS2_PLACEMENT_3D('',#84,#85,#86); -#84 = CARTESIAN_POINT('',(0.,0.,0.)); -#85 = DIRECTION('',(0.,0.,1.)); -#86 = DIRECTION('',(1.,0.,-0.)); -#87 = PCURVE('',#88,#93); -#88 = PLANE('',#89); -#89 = AXIS2_PLACEMENT_3D('',#90,#91,#92); -#90 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#91 = DIRECTION('',(0.,0.,1.)); -#92 = DIRECTION('',(1.,0.,-0.)); -#93 = DEFINITIONAL_REPRESENTATION('',(#94),#98); -#94 = CIRCLE('',#95,0.1905); -#95 = AXIS2_PLACEMENT_2D('',#96,#97); -#96 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#97 = DIRECTION('',(1.,0.)); -#98 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#99 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#103)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#100,#101,#102)) REPRESENTATION_CONTEXT('Context #1', +#79 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#80 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#81); +#81 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Conductor_000','',#5,#47,$); +#82 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#49)); +#83 = SHAPE_DEFINITION_REPRESENTATION(#84,#90); +#84 = PRODUCT_DEFINITION_SHAPE('','',#85); +#85 = PRODUCT_DEFINITION('design','',#86,#89); +#86 = PRODUCT_DEFINITION_FORMATION('','',#87); +#87 = PRODUCT('Dielectric_0','Dielectric_0','',(#88)); +#88 = PRODUCT_CONTEXT('',#2,'mechanical'); +#89 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#90 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#91),#110); +#91 = SHELL_BASED_SURFACE_MODEL('',(#92)); +#92 = OPEN_SHELL('',(#93)); +#93 = ADVANCED_FACE('',(#94),#105,.T.); +#94 = FACE_BOUND('',#95,.T.); +#95 = EDGE_LOOP('',(#96)); +#96 = ORIENTED_EDGE('',*,*,#97,.T.); +#97 = EDGE_CURVE('',#98,#98,#100,.T.); +#98 = VERTEX_POINT('',#99); +#99 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#100 = CIRCLE('',#101,0.4445); +#101 = AXIS2_PLACEMENT_3D('',#102,#103,#104); +#102 = CARTESIAN_POINT('',(0.,0.,0.)); +#103 = DIRECTION('',(0.,0.,1.)); +#104 = DIRECTION('',(1.,0.,-0.)); +#105 = PLANE('',#106); +#106 = AXIS2_PLACEMENT_3D('',#107,#108,#109); +#107 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#108 = DIRECTION('',(0.,0.,1.)); +#109 = DIRECTION('',(1.,0.,-0.)); +#110 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#114)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#111,#112,#113)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#100 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#101 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#102 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#103 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#100, +#111 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#112 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#113 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#114 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#111, 'distance_accuracy_value','confusion accuracy'); -#104 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#105,#107); -#105 = ( REPRESENTATION_RELATIONSHIP('','',#71,#44) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#106) +#115 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#116,#118); +#116 = ( REPRESENTATION_RELATIONSHIP('','',#90,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#117) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#106 = ITEM_DEFINED_TRANSFORMATION('','',#11,#45); -#107 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#108 +#117 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#118 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#119 ); -#108 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('11','Conductor_0','',#39,#66,$); -#109 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#68)); -#110 = SHAPE_DEFINITION_REPRESENTATION(#111,#117); -#111 = PRODUCT_DEFINITION_SHAPE('','',#112); -#112 = PRODUCT_DEFINITION('design','',#113,#116); -#113 = PRODUCT_DEFINITION_FORMATION('','',#114); -#114 = PRODUCT('Dielectric_0','Dielectric_0','',(#115)); -#115 = PRODUCT_CONTEXT('',#2,'mechanical'); -#116 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#117 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#118),#145); -#118 = SHELL_BASED_SURFACE_MODEL('',(#119)); -#119 = OPEN_SHELL('',(#120)); -#120 = ADVANCED_FACE('',(#121),#134,.T.); -#121 = FACE_BOUND('',#122,.T.); -#122 = EDGE_LOOP('',(#123)); -#123 = ORIENTED_EDGE('',*,*,#124,.T.); -#124 = EDGE_CURVE('',#125,#125,#127,.T.); -#125 = VERTEX_POINT('',#126); -#126 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#127 = SURFACE_CURVE('',#128,(#133),.PCURVE_S1.); -#128 = CIRCLE('',#129,0.4445); -#129 = AXIS2_PLACEMENT_3D('',#130,#131,#132); -#130 = CARTESIAN_POINT('',(0.,0.,0.)); -#131 = DIRECTION('',(0.,0.,1.)); -#132 = DIRECTION('',(1.,0.,-0.)); -#133 = PCURVE('',#134,#139); -#134 = PLANE('',#135); -#135 = AXIS2_PLACEMENT_3D('',#136,#137,#138); -#136 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#137 = DIRECTION('',(0.,0.,1.)); -#138 = DIRECTION('',(1.,0.,-0.)); -#139 = DEFINITIONAL_REPRESENTATION('',(#140),#144); -#140 = CIRCLE('',#141,0.4445); -#141 = AXIS2_PLACEMENT_2D('',#142,#143); -#142 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#143 = DIRECTION('',(1.,0.)); -#144 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#145 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#149)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#146,#147,#148)) REPRESENTATION_CONTEXT('Context #1', +#119 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','Dielectric_0','',#5,#85,$); +#120 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#87)); +#121 = SHAPE_DEFINITION_REPRESENTATION(#122,#128); +#122 = PRODUCT_DEFINITION_SHAPE('','',#123); +#123 = PRODUCT_DEFINITION('design','',#124,#127); +#124 = PRODUCT_DEFINITION_FORMATION('','',#125); +#125 = PRODUCT('Conductor_001','Conductor_001','',(#126)); +#126 = PRODUCT_CONTEXT('',#2,'mechanical'); +#127 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#128 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#129),#148); +#129 = SHELL_BASED_SURFACE_MODEL('',(#130)); +#130 = OPEN_SHELL('',(#131)); +#131 = ADVANCED_FACE('',(#132),#143,.T.); +#132 = FACE_BOUND('',#133,.T.); +#133 = EDGE_LOOP('',(#134)); +#134 = ORIENTED_EDGE('',*,*,#135,.T.); +#135 = EDGE_CURVE('',#136,#136,#138,.T.); +#136 = VERTEX_POINT('',#137); +#137 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#138 = CIRCLE('',#139,0.1905); +#139 = AXIS2_PLACEMENT_3D('',#140,#141,#142); +#140 = CARTESIAN_POINT('',(0.,0.,0.)); +#141 = DIRECTION('',(0.,0.,1.)); +#142 = DIRECTION('',(1.,0.,0.)); +#143 = PLANE('',#144); +#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); +#145 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#146 = DIRECTION('',(0.,0.,1.)); +#147 = DIRECTION('',(1.,0.,0.)); +#148 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#152)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#149,#150,#151)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#146 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#147 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#148 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#149 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#146, +#149 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#150 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#151 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#152 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#149, 'distance_accuracy_value','confusion accuracy'); -#150 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#151,#153); -#151 = ( REPRESENTATION_RELATIONSHIP('','',#117,#44) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#152) +#153 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#154,#156); +#154 = ( REPRESENTATION_RELATIONSHIP('','',#128,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#155) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#152 = ITEM_DEFINED_TRANSFORMATION('','',#11,#49); -#153 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#154 +#155 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); +#156 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#157 ); -#154 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('12','Dielectric_0','',#39,#112,$ +#157 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','Conductor_001','',#5,#123,$ ); -#155 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#114)); -#156 = SHAPE_DEFINITION_REPRESENTATION(#157,#163); -#157 = PRODUCT_DEFINITION_SHAPE('','',#158); -#158 = PRODUCT_DEFINITION('design','',#159,#162); -#159 = PRODUCT_DEFINITION_FORMATION('','',#160); -#160 = PRODUCT('solid_wire_001','solid_wire_001','',(#161)); -#161 = PRODUCT_CONTEXT('',#2,'mechanical'); -#162 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#163 = SHAPE_REPRESENTATION('',(#11,#164,#168),#172); -#164 = AXIS2_PLACEMENT_3D('',#165,#166,#167); -#165 = CARTESIAN_POINT('',(1.27,0.,0.)); -#166 = DIRECTION('',(0.,0.,1.)); -#167 = DIRECTION('',(1.,0.,0.)); -#168 = AXIS2_PLACEMENT_3D('',#169,#170,#171); -#169 = CARTESIAN_POINT('',(1.27,0.,0.)); -#170 = DIRECTION('',(0.,0.,1.)); -#171 = DIRECTION('',(1.,0.,0.)); -#172 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#176)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#173,#174,#175)) REPRESENTATION_CONTEXT('Context #1', +#158 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#125)); +#159 = SHAPE_DEFINITION_REPRESENTATION(#160,#166); +#160 = PRODUCT_DEFINITION_SHAPE('','',#161); +#161 = PRODUCT_DEFINITION('design','',#162,#165); +#162 = PRODUCT_DEFINITION_FORMATION('','',#163); +#163 = PRODUCT('Dielectric_001','Dielectric_001','',(#164)); +#164 = PRODUCT_CONTEXT('',#2,'mechanical'); +#165 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#166 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#167),#186); +#167 = SHELL_BASED_SURFACE_MODEL('',(#168)); +#168 = OPEN_SHELL('',(#169)); +#169 = ADVANCED_FACE('',(#170),#181,.T.); +#170 = FACE_BOUND('',#171,.T.); +#171 = EDGE_LOOP('',(#172)); +#172 = ORIENTED_EDGE('',*,*,#173,.T.); +#173 = EDGE_CURVE('',#174,#174,#176,.T.); +#174 = VERTEX_POINT('',#175); +#175 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#176 = CIRCLE('',#177,0.4445); +#177 = AXIS2_PLACEMENT_3D('',#178,#179,#180); +#178 = CARTESIAN_POINT('',(0.,0.,0.)); +#179 = DIRECTION('',(0.,0.,1.)); +#180 = DIRECTION('',(1.,0.,0.)); +#181 = PLANE('',#182); +#182 = AXIS2_PLACEMENT_3D('',#183,#184,#185); +#183 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#184 = DIRECTION('',(0.,0.,1.)); +#185 = DIRECTION('',(1.,0.,0.)); +#186 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#190)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#187,#188,#189)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#173 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#174 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#175 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#176 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#173, +#187 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#188 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#189 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#190 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#187, 'distance_accuracy_value','confusion accuracy'); -#177 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#178,#180); -#178 = ( REPRESENTATION_RELATIONSHIP('','',#163,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#179) +#191 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#192,#194); +#192 = ( REPRESENTATION_RELATIONSHIP('','',#166,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#193) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#179 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); -#180 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#181 +#193 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); +#194 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#195 ); -#181 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('16','solid_wire_001','',#5,#158,$ +#195 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','Dielectric_001','',#5,#161,$ ); -#182 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#160)); -#183 = SHAPE_DEFINITION_REPRESENTATION(#184,#190); -#184 = PRODUCT_DEFINITION_SHAPE('','',#185); -#185 = PRODUCT_DEFINITION('design','',#186,#189); -#186 = PRODUCT_DEFINITION_FORMATION('','',#187); -#187 = PRODUCT('Conductor_001','Conductor_001','',(#188)); -#188 = PRODUCT_CONTEXT('',#2,'mechanical'); -#189 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#190 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#191),#218); -#191 = SHELL_BASED_SURFACE_MODEL('',(#192)); -#192 = OPEN_SHELL('',(#193)); -#193 = ADVANCED_FACE('',(#194),#207,.T.); -#194 = FACE_BOUND('',#195,.T.); -#195 = EDGE_LOOP('',(#196)); -#196 = ORIENTED_EDGE('',*,*,#197,.T.); -#197 = EDGE_CURVE('',#198,#198,#200,.T.); -#198 = VERTEX_POINT('',#199); -#199 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#200 = SURFACE_CURVE('',#201,(#206),.PCURVE_S1.); -#201 = CIRCLE('',#202,0.1905); -#202 = AXIS2_PLACEMENT_3D('',#203,#204,#205); -#203 = CARTESIAN_POINT('',(0.,0.,0.)); -#204 = DIRECTION('',(0.,0.,1.)); -#205 = DIRECTION('',(1.,0.,-0.)); -#206 = PCURVE('',#207,#212); -#207 = PLANE('',#208); -#208 = AXIS2_PLACEMENT_3D('',#209,#210,#211); -#209 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#210 = DIRECTION('',(0.,0.,1.)); -#211 = DIRECTION('',(1.,0.,-0.)); -#212 = DEFINITIONAL_REPRESENTATION('',(#213),#217); -#213 = CIRCLE('',#214,0.1905); -#214 = AXIS2_PLACEMENT_2D('',#215,#216); -#215 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#216 = DIRECTION('',(1.,0.)); -#217 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#218 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#222)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#219,#220,#221)) REPRESENTATION_CONTEXT('Context #1', +#196 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#163)); +#197 = SHAPE_DEFINITION_REPRESENTATION(#198,#204); +#198 = PRODUCT_DEFINITION_SHAPE('','',#199); +#199 = PRODUCT_DEFINITION('design','',#200,#203); +#200 = PRODUCT_DEFINITION_FORMATION('','',#201); +#201 = PRODUCT('Conductor_002','Conductor_002','',(#202)); +#202 = PRODUCT_CONTEXT('',#2,'mechanical'); +#203 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#204 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#205),#224); +#205 = SHELL_BASED_SURFACE_MODEL('',(#206)); +#206 = OPEN_SHELL('',(#207)); +#207 = ADVANCED_FACE('',(#208),#219,.T.); +#208 = FACE_BOUND('',#209,.T.); +#209 = EDGE_LOOP('',(#210)); +#210 = ORIENTED_EDGE('',*,*,#211,.T.); +#211 = EDGE_CURVE('',#212,#212,#214,.T.); +#212 = VERTEX_POINT('',#213); +#213 = CARTESIAN_POINT('',(0.1905,0.,0.)); +#214 = CIRCLE('',#215,0.1905); +#215 = AXIS2_PLACEMENT_3D('',#216,#217,#218); +#216 = CARTESIAN_POINT('',(0.,0.,0.)); +#217 = DIRECTION('',(0.,0.,1.)); +#218 = DIRECTION('',(1.,0.,0.)); +#219 = PLANE('',#220); +#220 = AXIS2_PLACEMENT_3D('',#221,#222,#223); +#221 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); +#222 = DIRECTION('',(0.,0.,1.)); +#223 = DIRECTION('',(1.,0.,0.)); +#224 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#228)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#225,#226,#227)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#219 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#220 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#221 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#222 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#219, +#225 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#226 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#227 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#228 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#225, 'distance_accuracy_value','confusion accuracy'); -#223 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#224,#226); -#224 = ( REPRESENTATION_RELATIONSHIP('','',#190,#163) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#225) +#229 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#230,#232); +#230 = ( REPRESENTATION_RELATIONSHIP('','',#204,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#231) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#225 = ITEM_DEFINED_TRANSFORMATION('','',#11,#164); -#226 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#227 +#231 = ITEM_DEFINED_TRANSFORMATION('','',#11,#31); +#232 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#233 ); -#227 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('14','Conductor_001','',#158,#185, - $); -#228 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#187)); -#229 = SHAPE_DEFINITION_REPRESENTATION(#230,#236); -#230 = PRODUCT_DEFINITION_SHAPE('','',#231); -#231 = PRODUCT_DEFINITION('design','',#232,#235); -#232 = PRODUCT_DEFINITION_FORMATION('','',#233); -#233 = PRODUCT('Dielectric_001','Dielectric_001','',(#234)); -#234 = PRODUCT_CONTEXT('',#2,'mechanical'); -#235 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#236 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#237),#264); -#237 = SHELL_BASED_SURFACE_MODEL('',(#238)); -#238 = OPEN_SHELL('',(#239)); -#239 = ADVANCED_FACE('',(#240),#253,.T.); -#240 = FACE_BOUND('',#241,.T.); -#241 = EDGE_LOOP('',(#242)); -#242 = ORIENTED_EDGE('',*,*,#243,.T.); -#243 = EDGE_CURVE('',#244,#244,#246,.T.); -#244 = VERTEX_POINT('',#245); -#245 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#246 = SURFACE_CURVE('',#247,(#252),.PCURVE_S1.); -#247 = CIRCLE('',#248,0.4445); -#248 = AXIS2_PLACEMENT_3D('',#249,#250,#251); -#249 = CARTESIAN_POINT('',(0.,0.,0.)); -#250 = DIRECTION('',(0.,0.,1.)); -#251 = DIRECTION('',(1.,0.,-0.)); -#252 = PCURVE('',#253,#258); -#253 = PLANE('',#254); -#254 = AXIS2_PLACEMENT_3D('',#255,#256,#257); -#255 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#256 = DIRECTION('',(0.,0.,1.)); -#257 = DIRECTION('',(1.,0.,-0.)); -#258 = DEFINITIONAL_REPRESENTATION('',(#259),#263); -#259 = CIRCLE('',#260,0.4445); -#260 = AXIS2_PLACEMENT_2D('',#261,#262); -#261 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#262 = DIRECTION('',(1.,0.)); -#263 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#264 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#268)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#265,#266,#267)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#265 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#266 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#267 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#268 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#265, - 'distance_accuracy_value','confusion accuracy'); -#269 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#270,#272); -#270 = ( REPRESENTATION_RELATIONSHIP('','',#236,#163) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#271) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#271 = ITEM_DEFINED_TRANSFORMATION('','',#11,#168); -#272 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#273 - ); -#273 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('15','Dielectric_001','',#158,#231 - ,$); -#274 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#233)); -#275 = SHAPE_DEFINITION_REPRESENTATION(#276,#282); -#276 = PRODUCT_DEFINITION_SHAPE('','',#277); -#277 = PRODUCT_DEFINITION('design','',#278,#281); -#278 = PRODUCT_DEFINITION_FORMATION('','',#279); -#279 = PRODUCT('solid_wire_002','solid_wire_002','',(#280)); -#280 = PRODUCT_CONTEXT('',#2,'mechanical'); -#281 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#282 = SHAPE_REPRESENTATION('',(#11,#283,#287),#291); -#283 = AXIS2_PLACEMENT_3D('',#284,#285,#286); -#284 = CARTESIAN_POINT('',(2.54,0.,0.)); -#285 = DIRECTION('',(0.,0.,1.)); -#286 = DIRECTION('',(1.,0.,0.)); -#287 = AXIS2_PLACEMENT_3D('',#288,#289,#290); -#288 = CARTESIAN_POINT('',(2.54,0.,0.)); -#289 = DIRECTION('',(0.,0.,1.)); -#290 = DIRECTION('',(1.,0.,0.)); -#291 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#295)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#292,#293,#294)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#292 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#293 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#294 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#295 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#292, - 'distance_accuracy_value','confusion accuracy'); -#296 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#297,#299); -#297 = ( REPRESENTATION_RELATIONSHIP('','',#282,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#298) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#298 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); -#299 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#300 - ); -#300 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('19','solid_wire_002','',#5,#277,$ +#233 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('21','Conductor_002','',#5,#199,$ ); -#301 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#279)); -#302 = SHAPE_DEFINITION_REPRESENTATION(#303,#309); -#303 = PRODUCT_DEFINITION_SHAPE('','',#304); -#304 = PRODUCT_DEFINITION('design','',#305,#308); -#305 = PRODUCT_DEFINITION_FORMATION('','',#306); -#306 = PRODUCT('Conductor_002','Conductor_002','',(#307)); -#307 = PRODUCT_CONTEXT('',#2,'mechanical'); -#308 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#309 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#310),#337); -#310 = SHELL_BASED_SURFACE_MODEL('',(#311)); -#311 = OPEN_SHELL('',(#312)); -#312 = ADVANCED_FACE('',(#313),#326,.T.); -#313 = FACE_BOUND('',#314,.T.); -#314 = EDGE_LOOP('',(#315)); -#315 = ORIENTED_EDGE('',*,*,#316,.T.); -#316 = EDGE_CURVE('',#317,#317,#319,.T.); -#317 = VERTEX_POINT('',#318); -#318 = CARTESIAN_POINT('',(0.1905,0.,0.)); -#319 = SURFACE_CURVE('',#320,(#325),.PCURVE_S1.); -#320 = CIRCLE('',#321,0.1905); -#321 = AXIS2_PLACEMENT_3D('',#322,#323,#324); -#322 = CARTESIAN_POINT('',(0.,0.,0.)); -#323 = DIRECTION('',(0.,0.,1.)); -#324 = DIRECTION('',(1.,0.,-0.)); -#325 = PCURVE('',#326,#331); -#326 = PLANE('',#327); -#327 = AXIS2_PLACEMENT_3D('',#328,#329,#330); -#328 = CARTESIAN_POINT('',(-7.009925220121E-18,-7.665819544648E-19,0.)); -#329 = DIRECTION('',(0.,0.,1.)); -#330 = DIRECTION('',(1.,0.,-0.)); -#331 = DEFINITIONAL_REPRESENTATION('',(#332),#336); -#332 = CIRCLE('',#333,0.1905); -#333 = AXIS2_PLACEMENT_2D('',#334,#335); -#334 = CARTESIAN_POINT('',(7.009925220121E-18,7.665819544648E-19)); -#335 = DIRECTION('',(1.,0.)); -#336 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#337 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#341)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#338,#339,#340)) REPRESENTATION_CONTEXT('Context #1', +#234 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#201)); +#235 = SHAPE_DEFINITION_REPRESENTATION(#236,#242); +#236 = PRODUCT_DEFINITION_SHAPE('','',#237); +#237 = PRODUCT_DEFINITION('design','',#238,#241); +#238 = PRODUCT_DEFINITION_FORMATION('','',#239); +#239 = PRODUCT('Dielectric_002','Dielectric_002','',(#240)); +#240 = PRODUCT_CONTEXT('',#2,'mechanical'); +#241 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#242 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#243),#262); +#243 = SHELL_BASED_SURFACE_MODEL('',(#244)); +#244 = OPEN_SHELL('',(#245)); +#245 = ADVANCED_FACE('',(#246),#257,.T.); +#246 = FACE_BOUND('',#247,.T.); +#247 = EDGE_LOOP('',(#248)); +#248 = ORIENTED_EDGE('',*,*,#249,.T.); +#249 = EDGE_CURVE('',#250,#250,#252,.T.); +#250 = VERTEX_POINT('',#251); +#251 = CARTESIAN_POINT('',(0.4445,0.,0.)); +#252 = CIRCLE('',#253,0.4445); +#253 = AXIS2_PLACEMENT_3D('',#254,#255,#256); +#254 = CARTESIAN_POINT('',(0.,0.,0.)); +#255 = DIRECTION('',(0.,0.,1.)); +#256 = DIRECTION('',(1.,0.,0.)); +#257 = PLANE('',#258); +#258 = AXIS2_PLACEMENT_3D('',#259,#260,#261); +#259 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); +#260 = DIRECTION('',(0.,0.,1.)); +#261 = DIRECTION('',(1.,0.,0.)); +#262 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#266)) GLOBAL_UNIT_ASSIGNED_CONTEXT +((#263,#264,#265)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#338 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#339 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#340 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#341 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#338, +#263 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#264 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#265 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#266 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#263, 'distance_accuracy_value','confusion accuracy'); -#342 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#343,#345); -#343 = ( REPRESENTATION_RELATIONSHIP('','',#309,#282) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#344) +#267 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#268,#270); +#268 = ( REPRESENTATION_RELATIONSHIP('','',#242,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#269) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#344 = ITEM_DEFINED_TRANSFORMATION('','',#11,#283); -#345 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#346 +#269 = ITEM_DEFINED_TRANSFORMATION('','',#11,#35); +#270 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#271 ); -#346 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('17','Conductor_002','',#277,#304, - $); -#347 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#306)); -#348 = SHAPE_DEFINITION_REPRESENTATION(#349,#355); -#349 = PRODUCT_DEFINITION_SHAPE('','',#350); -#350 = PRODUCT_DEFINITION('design','',#351,#354); -#351 = PRODUCT_DEFINITION_FORMATION('','',#352); -#352 = PRODUCT('Dielectric_002','Dielectric_002','',(#353)); -#353 = PRODUCT_CONTEXT('',#2,'mechanical'); -#354 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#355 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#356),#383); -#356 = SHELL_BASED_SURFACE_MODEL('',(#357)); -#357 = OPEN_SHELL('',(#358)); -#358 = ADVANCED_FACE('',(#359),#372,.T.); -#359 = FACE_BOUND('',#360,.T.); -#360 = EDGE_LOOP('',(#361)); -#361 = ORIENTED_EDGE('',*,*,#362,.T.); -#362 = EDGE_CURVE('',#363,#363,#365,.T.); -#363 = VERTEX_POINT('',#364); -#364 = CARTESIAN_POINT('',(0.4445,0.,0.)); -#365 = SURFACE_CURVE('',#366,(#371),.PCURVE_S1.); -#366 = CIRCLE('',#367,0.4445); -#367 = AXIS2_PLACEMENT_3D('',#368,#369,#370); -#368 = CARTESIAN_POINT('',(0.,0.,0.)); -#369 = DIRECTION('',(0.,0.,1.)); -#370 = DIRECTION('',(1.,0.,-0.)); -#371 = PCURVE('',#372,#377); -#372 = PLANE('',#373); -#373 = AXIS2_PLACEMENT_3D('',#374,#375,#376); -#374 = CARTESIAN_POINT('',(-1.201701466306E-17,5.888845918762E-18,0.)); -#375 = DIRECTION('',(0.,0.,1.)); -#376 = DIRECTION('',(1.,0.,-0.)); -#377 = DEFINITIONAL_REPRESENTATION('',(#378),#382); -#378 = CIRCLE('',#379,0.4445); -#379 = AXIS2_PLACEMENT_2D('',#380,#381); -#380 = CARTESIAN_POINT('',(1.201701466306E-17,-5.888845918762E-18)); -#381 = DIRECTION('',(1.,0.)); -#382 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#383 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#387)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#384,#385,#386)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#384 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#385 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#386 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#387 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#384, - 'distance_accuracy_value','confusion accuracy'); -#388 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#389,#391); -#389 = ( REPRESENTATION_RELATIONSHIP('','',#355,#282) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#390) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#390 = ITEM_DEFINED_TRANSFORMATION('','',#11,#287); -#391 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#392 - ); -#392 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('18','Dielectric_002','',#277,#350 - ,$); -#393 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#352)); -#394 = SHAPE_DEFINITION_REPRESENTATION(#395,#401); -#395 = PRODUCT_DEFINITION_SHAPE('','',#396); -#396 = PRODUCT_DEFINITION('design','',#397,#400); -#397 = PRODUCT_DEFINITION_FORMATION('','',#398); -#398 = PRODUCT('OpenBoundary_0','OpenBoundary_0','',(#399)); -#399 = PRODUCT_CONTEXT('',#2,'mechanical'); -#400 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#401 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#402),#429); -#402 = SHELL_BASED_SURFACE_MODEL('',(#403)); -#403 = OPEN_SHELL('',(#404)); -#404 = ADVANCED_FACE('',(#405),#418,.T.); -#405 = FACE_BOUND('',#406,.T.); -#406 = EDGE_LOOP('',(#407)); -#407 = ORIENTED_EDGE('',*,*,#408,.T.); -#408 = EDGE_CURVE('',#409,#409,#411,.T.); -#409 = VERTEX_POINT('',#410); -#410 = CARTESIAN_POINT('',(150.,0.,0.)); -#411 = SURFACE_CURVE('',#412,(#417),.PCURVE_S1.); -#412 = CIRCLE('',#413,150.); -#413 = AXIS2_PLACEMENT_3D('',#414,#415,#416); -#414 = CARTESIAN_POINT('',(0.,0.,0.)); -#415 = DIRECTION('',(0.,0.,1.)); -#416 = DIRECTION('',(1.,0.,0.)); -#417 = PCURVE('',#418,#423); -#418 = PLANE('',#419); -#419 = AXIS2_PLACEMENT_3D('',#420,#421,#422); -#420 = CARTESIAN_POINT('',(-2.333764492867E-14,3.211823975732E-15,0.)); -#421 = DIRECTION('',(0.,0.,1.)); -#422 = DIRECTION('',(1.,0.,0.)); -#423 = DEFINITIONAL_REPRESENTATION('',(#424),#428); -#424 = CIRCLE('',#425,150.); -#425 = AXIS2_PLACEMENT_2D('',#426,#427); -#426 = CARTESIAN_POINT('',(2.333764492867E-14,-3.211823975732E-15)); -#427 = DIRECTION('',(1.,0.)); -#428 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#429 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#433)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#430,#431,#432)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#430 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#431 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#432 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#433 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#430, - 'distance_accuracy_value','confusion accuracy'); -#434 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#435,#437); -#435 = ( REPRESENTATION_RELATIONSHIP('','',#401,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#436) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#436 = ITEM_DEFINED_TRANSFORMATION('','',#11,#27); -#437 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#438 +#271 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('22','Dielectric_002','',#5,#237,$ ); -#438 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('20','OpenBoundary_0','',#5,#396,$); -#439 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#398)); -#440 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#441) - ,#145); -#441 = STYLED_ITEM('color',(#442),#120); -#442 = PRESENTATION_STYLE_ASSIGNMENT((#443,#451)); -#443 = SURFACE_STYLE_USAGE(.BOTH.,#444); -#444 = SURFACE_SIDE_STYLE('',(#445,#449)); -#445 = SURFACE_STYLE_FILL_AREA(#446); -#446 = FILL_AREA_STYLE('',(#447)); -#447 = FILL_AREA_STYLE_COLOUR('',#448); -#448 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); -#449 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #450)); -#450 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#451 = CURVE_STYLE('',#452,POSITIVE_LENGTH_MEASURE(0.1),#453); -#452 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#453 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, +#272 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#239)); +#273 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#274) + ,#186); +#274 = STYLED_ITEM('color',(#275),#169); +#275 = PRESENTATION_STYLE_ASSIGNMENT((#276,#284)); +#276 = SURFACE_STYLE_USAGE(.BOTH.,#277); +#277 = SURFACE_SIDE_STYLE('',(#278,#282)); +#278 = SURFACE_STYLE_FILL_AREA(#279); +#279 = FILL_AREA_STYLE('',(#280)); +#280 = FILL_AREA_STYLE_COLOUR('',#281); +#281 = DRAUGHTING_PRE_DEFINED_COLOUR('red'); +#282 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #283)); +#283 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#284 = CURVE_STYLE('',#285,POSITIVE_LENGTH_MEASURE(0.1),#286); +#285 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#286 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); -#454 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#455) - ,#337); -#455 = STYLED_ITEM('color',(#456),#312); -#456 = PRESENTATION_STYLE_ASSIGNMENT((#457,#463)); -#457 = SURFACE_STYLE_USAGE(.BOTH.,#458); -#458 = SURFACE_SIDE_STYLE('',(#459)); -#459 = SURFACE_STYLE_FILL_AREA(#460); -#460 = FILL_AREA_STYLE('',(#461)); -#461 = FILL_AREA_STYLE_COLOUR('',#462); -#462 = COLOUR_RGB('',1.,0.333333345507,0.); -#463 = CURVE_STYLE('',#464,POSITIVE_LENGTH_MEASURE(0.1),#453); -#464 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#465 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#466) - ,#264); -#466 = STYLED_ITEM('color',(#467),#239); -#467 = PRESENTATION_STYLE_ASSIGNMENT((#468,#475)); -#468 = SURFACE_STYLE_USAGE(.BOTH.,#469); -#469 = SURFACE_SIDE_STYLE('',(#470,#473)); -#470 = SURFACE_STYLE_FILL_AREA(#471); -#471 = FILL_AREA_STYLE('',(#472)); -#472 = FILL_AREA_STYLE_COLOUR('',#448); -#473 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #474)); -#474 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#475 = CURVE_STYLE('',#476,POSITIVE_LENGTH_MEASURE(0.1),#453); -#476 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#477 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#478) - ,#383); -#478 = STYLED_ITEM('color',(#479),#358); -#479 = PRESENTATION_STYLE_ASSIGNMENT((#480,#487)); -#480 = SURFACE_STYLE_USAGE(.BOTH.,#481); -#481 = SURFACE_SIDE_STYLE('',(#482,#485)); -#482 = SURFACE_STYLE_FILL_AREA(#483); -#483 = FILL_AREA_STYLE('',(#484)); -#484 = FILL_AREA_STYLE_COLOUR('',#448); -#485 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#448,( - #486)); -#486 = SURFACE_STYLE_TRANSPARENT(0.899999976158); -#487 = CURVE_STYLE('',#488,POSITIVE_LENGTH_MEASURE(0.1),#453); -#488 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#489 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#490) - ,#99); -#490 = STYLED_ITEM('color',(#491),#74); -#491 = PRESENTATION_STYLE_ASSIGNMENT((#492,#497)); -#492 = SURFACE_STYLE_USAGE(.BOTH.,#493); -#493 = SURFACE_SIDE_STYLE('',(#494)); -#494 = SURFACE_STYLE_FILL_AREA(#495); -#495 = FILL_AREA_STYLE('',(#496)); -#496 = FILL_AREA_STYLE_COLOUR('',#462); -#497 = CURVE_STYLE('',#498,POSITIVE_LENGTH_MEASURE(0.1),#453); -#498 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#499 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#500) - ,#429); -#500 = STYLED_ITEM('color',(#501),#404); -#501 = PRESENTATION_STYLE_ASSIGNMENT((#502,#508)); -#502 = SURFACE_STYLE_USAGE(.BOTH.,#503); -#503 = SURFACE_SIDE_STYLE('',(#504)); -#504 = SURFACE_STYLE_FILL_AREA(#505); -#505 = FILL_AREA_STYLE('',(#506)); -#506 = FILL_AREA_STYLE_COLOUR('',#507); -#507 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#508 = CURVE_STYLE('',#509,POSITIVE_LENGTH_MEASURE(0.1),#453); -#509 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#510 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#511) - ,#218); -#511 = STYLED_ITEM('color',(#512),#193); -#512 = PRESENTATION_STYLE_ASSIGNMENT((#513,#518)); -#513 = SURFACE_STYLE_USAGE(.BOTH.,#514); -#514 = SURFACE_SIDE_STYLE('',(#515)); -#515 = SURFACE_STYLE_FILL_AREA(#516); -#516 = FILL_AREA_STYLE('',(#517)); -#517 = FILL_AREA_STYLE_COLOUR('',#462); -#518 = CURVE_STYLE('',#519,POSITIVE_LENGTH_MEASURE(0.1),#453); -#519 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#287 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#288) + ,#110); +#288 = STYLED_ITEM('color',(#289),#93); +#289 = PRESENTATION_STYLE_ASSIGNMENT((#290,#297)); +#290 = SURFACE_STYLE_USAGE(.BOTH.,#291); +#291 = SURFACE_SIDE_STYLE('',(#292,#295)); +#292 = SURFACE_STYLE_FILL_AREA(#293); +#293 = FILL_AREA_STYLE('',(#294)); +#294 = FILL_AREA_STYLE_COLOUR('',#281); +#295 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #296)); +#296 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#297 = CURVE_STYLE('',#298,POSITIVE_LENGTH_MEASURE(0.1),#286); +#298 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#299 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#300) + ,#224); +#300 = STYLED_ITEM('color',(#301),#207); +#301 = PRESENTATION_STYLE_ASSIGNMENT((#302,#308)); +#302 = SURFACE_STYLE_USAGE(.BOTH.,#303); +#303 = SURFACE_SIDE_STYLE('',(#304)); +#304 = SURFACE_STYLE_FILL_AREA(#305); +#305 = FILL_AREA_STYLE('',(#306)); +#306 = FILL_AREA_STYLE_COLOUR('',#307); +#307 = COLOUR_RGB('',1.,0.333333345507,0.); +#308 = CURVE_STYLE('',#309,POSITIVE_LENGTH_MEASURE(0.1),#286); +#309 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#310 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#311) + ,#148); +#311 = STYLED_ITEM('color',(#312),#131); +#312 = PRESENTATION_STYLE_ASSIGNMENT((#313,#318)); +#313 = SURFACE_STYLE_USAGE(.BOTH.,#314); +#314 = SURFACE_SIDE_STYLE('',(#315)); +#315 = SURFACE_STYLE_FILL_AREA(#316); +#316 = FILL_AREA_STYLE('',(#317)); +#317 = FILL_AREA_STYLE_COLOUR('',#307); +#318 = CURVE_STYLE('',#319,POSITIVE_LENGTH_MEASURE(0.1),#286); +#319 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#320 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#321) + ,#72); +#321 = STYLED_ITEM('color',(#322),#55); +#322 = PRESENTATION_STYLE_ASSIGNMENT((#323,#328)); +#323 = SURFACE_STYLE_USAGE(.BOTH.,#324); +#324 = SURFACE_SIDE_STYLE('',(#325)); +#325 = SURFACE_STYLE_FILL_AREA(#326); +#326 = FILL_AREA_STYLE('',(#327)); +#327 = FILL_AREA_STYLE_COLOUR('',#307); +#328 = CURVE_STYLE('',#329,POSITIVE_LENGTH_MEASURE(0.1),#286); +#329 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#330 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#331) + ,#262); +#331 = STYLED_ITEM('color',(#332),#245); +#332 = PRESENTATION_STYLE_ASSIGNMENT((#333,#340)); +#333 = SURFACE_STYLE_USAGE(.BOTH.,#334); +#334 = SURFACE_SIDE_STYLE('',(#335,#338)); +#335 = SURFACE_STYLE_FILL_AREA(#336); +#336 = FILL_AREA_STYLE('',(#337)); +#337 = FILL_AREA_STYLE_COLOUR('',#281); +#338 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#281,( + #339)); +#339 = SURFACE_STYLE_TRANSPARENT(0.899999976158); +#340 = CURVE_STYLE('',#341,POSITIVE_LENGTH_MEASURE(0.1),#286); +#341 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); ENDSEC; END-ISO-10303-21; diff --git a/testData/two_wires_coax/two_wires_coax.json b/testData/two_wires_coax/two_wires_coax.json new file mode 100644 index 0000000..c82189f --- /dev/null +++ b/testData/two_wires_coax/two_wires_coax.json @@ -0,0 +1,22 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_2", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/two_wires_open/two_wires_open.20250709-095732.FCBak b/testData/two_wires_open/two_wires_open.20250709-095732.FCBak new file mode 100644 index 0000000..56cbc22 Binary files /dev/null and b/testData/two_wires_open/two_wires_open.20250709-095732.FCBak differ diff --git a/testData/two_wires_open/two_wires_open.FCStd b/testData/two_wires_open/two_wires_open.FCStd index 56cbc22..dd8efe5 100644 Binary files a/testData/two_wires_open/two_wires_open.FCStd and b/testData/two_wires_open/two_wires_open.FCStd differ diff --git a/testData/two_wires_open/two_wires_open.json b/testData/two_wires_open/two_wires_open.json new file mode 100644 index 0000000..ac13926 --- /dev/null +++ b/testData/two_wires_open/two_wires_open.json @@ -0,0 +1,16 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + } + ] +} \ No newline at end of file diff --git a/testData/two_wires_open/two_wires_open.step b/testData/two_wires_open/two_wires_open.step index 132e64c..65d4bea 100644 --- a/testData/two_wires_open/two_wires_open.step +++ b/testData/two_wires_open/two_wires_open.step @@ -1,8 +1,8 @@ ISO-10303-21; HEADER; FILE_DESCRIPTION(('FreeCAD Model'),'2;1'); -FILE_NAME('Open CASCADE Shape Model','2023-10-20T18:14:48',(''),(''), - 'Open CASCADE STEP processor 7.6','FreeCAD','Unknown'); +FILE_NAME('Open CASCADE Shape Model','2025-10-02T13:11:23',(''),(''), + 'Open CASCADE STEP processor 7.8','FreeCAD','Unknown'); FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }')); ENDSEC; DATA; @@ -17,236 +17,142 @@ DATA; #7 = PRODUCT('two_wires_open','two_wires_open','',(#8)); #8 = PRODUCT_CONTEXT('',#2,'mechanical'); #9 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#10 = SHAPE_REPRESENTATION('',(#11,#15,#19,#23),#27); +#10 = SHAPE_REPRESENTATION('',(#11,#15,#19),#23); #11 = AXIS2_PLACEMENT_3D('',#12,#13,#14); #12 = CARTESIAN_POINT('',(0.,0.,0.)); #13 = DIRECTION('',(0.,0.,1.)); #14 = DIRECTION('',(1.,0.,-0.)); #15 = AXIS2_PLACEMENT_3D('',#16,#17,#18); -#16 = CARTESIAN_POINT('',(0.,0.,0.)); +#16 = CARTESIAN_POINT('',(-25.,0.,0.)); #17 = DIRECTION('',(0.,0.,1.)); #18 = DIRECTION('',(1.,0.,0.)); #19 = AXIS2_PLACEMENT_3D('',#20,#21,#22); -#20 = CARTESIAN_POINT('',(-25.,0.,0.)); +#20 = CARTESIAN_POINT('',(25.,0.,0.)); #21 = DIRECTION('',(0.,0.,1.)); #22 = DIRECTION('',(1.,0.,0.)); -#23 = AXIS2_PLACEMENT_3D('',#24,#25,#26); -#24 = CARTESIAN_POINT('',(25.,0.,0.)); -#25 = DIRECTION('',(0.,0.,1.)); -#26 = DIRECTION('',(1.,0.,0.)); -#27 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#31)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#28,#29,#30)) REPRESENTATION_CONTEXT('Context #1', +#23 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#27)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#24,#25,#26)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#28 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#29 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#30 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#31 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#28, +#24 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#25 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#26 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#27 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#24, 'distance_accuracy_value','confusion accuracy'); -#32 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); -#33 = SHAPE_DEFINITION_REPRESENTATION(#34,#40); -#34 = PRODUCT_DEFINITION_SHAPE('','',#35); -#35 = PRODUCT_DEFINITION('design','',#36,#39); -#36 = PRODUCT_DEFINITION_FORMATION('','',#37); -#37 = PRODUCT('OpenBoundary_0','OpenBoundary_0','',(#38)); -#38 = PRODUCT_CONTEXT('',#2,'mechanical'); -#39 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#40 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#41),#68); -#41 = SHELL_BASED_SURFACE_MODEL('',(#42)); -#42 = OPEN_SHELL('',(#43)); -#43 = ADVANCED_FACE('',(#44),#57,.T.); -#44 = FACE_BOUND('',#45,.T.); -#45 = EDGE_LOOP('',(#46)); -#46 = ORIENTED_EDGE('',*,*,#47,.T.); -#47 = EDGE_CURVE('',#48,#48,#50,.T.); -#48 = VERTEX_POINT('',#49); -#49 = CARTESIAN_POINT('',(500.,0.,0.)); -#50 = SURFACE_CURVE('',#51,(#56),.PCURVE_S1.); -#51 = CIRCLE('',#52,500.); +#28 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#7)); +#29 = SHAPE_DEFINITION_REPRESENTATION(#30,#36); +#30 = PRODUCT_DEFINITION_SHAPE('','',#31); +#31 = PRODUCT_DEFINITION('design','',#32,#35); +#32 = PRODUCT_DEFINITION_FORMATION('','',#33); +#33 = PRODUCT('Conductor_0','Conductor_0','',(#34)); +#34 = PRODUCT_CONTEXT('',#2,'mechanical'); +#35 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#36 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#37),#56); +#37 = SHELL_BASED_SURFACE_MODEL('',(#38)); +#38 = OPEN_SHELL('',(#39)); +#39 = ADVANCED_FACE('',(#40),#51,.T.); +#40 = FACE_BOUND('',#41,.T.); +#41 = EDGE_LOOP('',(#42)); +#42 = ORIENTED_EDGE('',*,*,#43,.T.); +#43 = EDGE_CURVE('',#44,#44,#46,.T.); +#44 = VERTEX_POINT('',#45); +#45 = CARTESIAN_POINT('',(2.,0.,0.)); +#46 = CIRCLE('',#47,2.); +#47 = AXIS2_PLACEMENT_3D('',#48,#49,#50); +#48 = CARTESIAN_POINT('',(0.,0.,0.)); +#49 = DIRECTION('',(0.,0.,1.)); +#50 = DIRECTION('',(1.,0.,0.)); +#51 = PLANE('',#52); #52 = AXIS2_PLACEMENT_3D('',#53,#54,#55); -#53 = CARTESIAN_POINT('',(0.,0.,0.)); +#53 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); #54 = DIRECTION('',(0.,0.,1.)); -#55 = DIRECTION('',(1.,0.,-0.)); -#56 = PCURVE('',#57,#62); -#57 = PLANE('',#58); -#58 = AXIS2_PLACEMENT_3D('',#59,#60,#61); -#59 = CARTESIAN_POINT('',(-2.24E-14,1.99E-15,0.)); -#60 = DIRECTION('',(0.,0.,1.)); -#61 = DIRECTION('',(1.,0.,-0.)); -#62 = DEFINITIONAL_REPRESENTATION('',(#63),#67); -#63 = CIRCLE('',#64,500.); -#64 = AXIS2_PLACEMENT_2D('',#65,#66); -#65 = CARTESIAN_POINT('',(2.24E-14,-1.99E-15)); -#66 = DIRECTION('',(1.,0.)); -#67 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#68 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#72)) GLOBAL_UNIT_ASSIGNED_CONTEXT( -(#69,#70,#71)) REPRESENTATION_CONTEXT('Context #1', +#55 = DIRECTION('',(1.,0.,0.)); +#56 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#60)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#57,#58,#59)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#69 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#70 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#71 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#72 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#69, +#57 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#58 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#59 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#60 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#57, 'distance_accuracy_value','confusion accuracy'); -#73 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#74,#76); -#74 = ( REPRESENTATION_RELATIONSHIP('','',#40,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#75) +#61 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#62,#64); +#62 = ( REPRESENTATION_RELATIONSHIP('','',#36,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#63) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#75 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); -#76 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#77); -#77 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('1','OpenBoundary_0','',#5,#35,$); -#78 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#37)); -#79 = SHAPE_DEFINITION_REPRESENTATION(#80,#86); -#80 = PRODUCT_DEFINITION_SHAPE('','',#81); -#81 = PRODUCT_DEFINITION('design','',#82,#85); -#82 = PRODUCT_DEFINITION_FORMATION('','',#83); -#83 = PRODUCT('Conductor_0','Conductor_0','',(#84)); -#84 = PRODUCT_CONTEXT('',#2,'mechanical'); -#85 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#86 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#87),#114); -#87 = SHELL_BASED_SURFACE_MODEL('',(#88)); -#88 = OPEN_SHELL('',(#89)); -#89 = ADVANCED_FACE('',(#90),#103,.T.); -#90 = FACE_BOUND('',#91,.T.); -#91 = EDGE_LOOP('',(#92)); -#92 = ORIENTED_EDGE('',*,*,#93,.T.); -#93 = EDGE_CURVE('',#94,#94,#96,.T.); -#94 = VERTEX_POINT('',#95); -#95 = CARTESIAN_POINT('',(2.,0.,0.)); -#96 = SURFACE_CURVE('',#97,(#102),.PCURVE_S1.); -#97 = CIRCLE('',#98,2.); -#98 = AXIS2_PLACEMENT_3D('',#99,#100,#101); -#99 = CARTESIAN_POINT('',(0.,0.,0.)); -#100 = DIRECTION('',(0.,0.,1.)); -#101 = DIRECTION('',(1.,0.,0.)); -#102 = PCURVE('',#103,#108); -#103 = PLANE('',#104); -#104 = AXIS2_PLACEMENT_3D('',#105,#106,#107); -#105 = CARTESIAN_POINT('',(-1.3E-16,0.,0.)); -#106 = DIRECTION('',(0.,0.,1.)); -#107 = DIRECTION('',(1.,0.,0.)); -#108 = DEFINITIONAL_REPRESENTATION('',(#109),#113); -#109 = CIRCLE('',#110,2.); -#110 = AXIS2_PLACEMENT_2D('',#111,#112); -#111 = CARTESIAN_POINT('',(1.3E-16,0.)); -#112 = DIRECTION('',(1.,0.)); -#113 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#114 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#118)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#115,#116,#117)) REPRESENTATION_CONTEXT('Context #1', +#63 = ITEM_DEFINED_TRANSFORMATION('','',#11,#15); +#64 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#65); +#65 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Conductor_0','',#5,#31,$); +#66 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#33)); +#67 = SHAPE_DEFINITION_REPRESENTATION(#68,#74); +#68 = PRODUCT_DEFINITION_SHAPE('','',#69); +#69 = PRODUCT_DEFINITION('design','',#70,#73); +#70 = PRODUCT_DEFINITION_FORMATION('','',#71); +#71 = PRODUCT('Conductor_1','Conductor_1','',(#72)); +#72 = PRODUCT_CONTEXT('',#2,'mechanical'); +#73 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); +#74 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#75),#94); +#75 = SHELL_BASED_SURFACE_MODEL('',(#76)); +#76 = OPEN_SHELL('',(#77)); +#77 = ADVANCED_FACE('',(#78),#89,.T.); +#78 = FACE_BOUND('',#79,.T.); +#79 = EDGE_LOOP('',(#80)); +#80 = ORIENTED_EDGE('',*,*,#81,.T.); +#81 = EDGE_CURVE('',#82,#82,#84,.T.); +#82 = VERTEX_POINT('',#83); +#83 = CARTESIAN_POINT('',(2.,0.,0.)); +#84 = CIRCLE('',#85,2.); +#85 = AXIS2_PLACEMENT_3D('',#86,#87,#88); +#86 = CARTESIAN_POINT('',(0.,0.,0.)); +#87 = DIRECTION('',(0.,0.,1.)); +#88 = DIRECTION('',(1.,0.,0.)); +#89 = PLANE('',#90); +#90 = AXIS2_PLACEMENT_3D('',#91,#92,#93); +#91 = CARTESIAN_POINT('',(-1.281975124256E-16,3.821888340557E-18,0.)); +#92 = DIRECTION('',(0.,0.,1.)); +#93 = DIRECTION('',(1.,0.,0.)); +#94 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) +GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#98)) GLOBAL_UNIT_ASSIGNED_CONTEXT( +(#95,#96,#97)) REPRESENTATION_CONTEXT('Context #1', '3D Context with UNIT and UNCERTAINTY') ); -#115 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#116 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#117 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#118 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#115, +#95 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); +#96 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); +#97 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); +#98 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#95, 'distance_accuracy_value','confusion accuracy'); -#119 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#120,#122); -#120 = ( REPRESENTATION_RELATIONSHIP('','',#86,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#121) +#99 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#100,#102); +#100 = ( REPRESENTATION_RELATIONSHIP('','',#74,#10) +REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#101) SHAPE_REPRESENTATION_RELATIONSHIP() ); -#121 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); -#122 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#123 +#101 = ITEM_DEFINED_TRANSFORMATION('','',#11,#19); +#102 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#103 ); -#123 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('2','Conductor_0','',#5,#81,$); -#124 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#83)); -#125 = SHAPE_DEFINITION_REPRESENTATION(#126,#132); -#126 = PRODUCT_DEFINITION_SHAPE('','',#127); -#127 = PRODUCT_DEFINITION('design','',#128,#131); -#128 = PRODUCT_DEFINITION_FORMATION('','',#129); -#129 = PRODUCT('Conductor_1','Conductor_1','',(#130)); -#130 = PRODUCT_CONTEXT('',#2,'mechanical'); -#131 = PRODUCT_DEFINITION_CONTEXT('part definition',#2,'design'); -#132 = MANIFOLD_SURFACE_SHAPE_REPRESENTATION('',(#11,#133),#160); -#133 = SHELL_BASED_SURFACE_MODEL('',(#134)); -#134 = OPEN_SHELL('',(#135)); -#135 = ADVANCED_FACE('',(#136),#149,.T.); -#136 = FACE_BOUND('',#137,.T.); -#137 = EDGE_LOOP('',(#138)); -#138 = ORIENTED_EDGE('',*,*,#139,.T.); -#139 = EDGE_CURVE('',#140,#140,#142,.T.); -#140 = VERTEX_POINT('',#141); -#141 = CARTESIAN_POINT('',(2.,0.,0.)); -#142 = SURFACE_CURVE('',#143,(#148),.PCURVE_S1.); -#143 = CIRCLE('',#144,2.); -#144 = AXIS2_PLACEMENT_3D('',#145,#146,#147); -#145 = CARTESIAN_POINT('',(0.,0.,0.)); -#146 = DIRECTION('',(0.,0.,1.)); -#147 = DIRECTION('',(1.,0.,0.)); -#148 = PCURVE('',#149,#154); -#149 = PLANE('',#150); -#150 = AXIS2_PLACEMENT_3D('',#151,#152,#153); -#151 = CARTESIAN_POINT('',(-1.3E-16,0.,0.)); -#152 = DIRECTION('',(0.,0.,1.)); -#153 = DIRECTION('',(1.,0.,0.)); -#154 = DEFINITIONAL_REPRESENTATION('',(#155),#159); -#155 = CIRCLE('',#156,2.); -#156 = AXIS2_PLACEMENT_2D('',#157,#158); -#157 = CARTESIAN_POINT('',(1.3E-16,0.)); -#158 = DIRECTION('',(1.,0.)); -#159 = ( GEOMETRIC_REPRESENTATION_CONTEXT(2) -PARAMETRIC_REPRESENTATION_CONTEXT() REPRESENTATION_CONTEXT('2D SPACE','' - ) ); -#160 = ( GEOMETRIC_REPRESENTATION_CONTEXT(3) -GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#164)) GLOBAL_UNIT_ASSIGNED_CONTEXT -((#161,#162,#163)) REPRESENTATION_CONTEXT('Context #1', - '3D Context with UNIT and UNCERTAINTY') ); -#161 = ( LENGTH_UNIT() NAMED_UNIT(*) SI_UNIT(.MILLI.,.METRE.) ); -#162 = ( NAMED_UNIT(*) PLANE_ANGLE_UNIT() SI_UNIT($,.RADIAN.) ); -#163 = ( NAMED_UNIT(*) SI_UNIT($,.STERADIAN.) SOLID_ANGLE_UNIT() ); -#164 = UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(1.E-07),#161, - 'distance_accuracy_value','confusion accuracy'); -#165 = CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#166,#168); -#166 = ( REPRESENTATION_RELATIONSHIP('','',#132,#10) -REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#167) -SHAPE_REPRESENTATION_RELATIONSHIP() ); -#167 = ITEM_DEFINED_TRANSFORMATION('','',#11,#23); -#168 = PRODUCT_DEFINITION_SHAPE('Placement','Placement of an item',#169 - ); -#169 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('3','Conductor_1','',#5,#127,$); -#170 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#129)); -#171 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#172) - ,#68); -#172 = STYLED_ITEM('color',(#173),#43); -#173 = PRESENTATION_STYLE_ASSIGNMENT((#174,#182)); -#174 = SURFACE_STYLE_USAGE(.BOTH.,#175); -#175 = SURFACE_SIDE_STYLE('',(#176,#180)); -#176 = SURFACE_STYLE_FILL_AREA(#177); -#177 = FILL_AREA_STYLE('',(#178)); -#178 = FILL_AREA_STYLE_COLOUR('',#179); -#179 = COLOUR_RGB('',0.800000010877,0.800000010877,0.800000010877); -#180 = SURFACE_STYLE_RENDERING_WITH_PROPERTIES(.NORMAL_SHADING.,#179,( - #181)); -#181 = SURFACE_STYLE_TRANSPARENT(0.990000009537); -#182 = CURVE_STYLE('',#183,POSITIVE_LENGTH_MEASURE(0.1),#184); -#183 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#184 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, +#103 = NEXT_ASSEMBLY_USAGE_OCCURRENCE('4','Conductor_1','',#5,#69,$); +#104 = PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#71)); +#105 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#106) + ,#94); +#106 = STYLED_ITEM('color',(#107),#77); +#107 = PRESENTATION_STYLE_ASSIGNMENT((#108,#114)); +#108 = SURFACE_STYLE_USAGE(.BOTH.,#109); +#109 = SURFACE_SIDE_STYLE('',(#110)); +#110 = SURFACE_STYLE_FILL_AREA(#111); +#111 = FILL_AREA_STYLE('',(#112)); +#112 = FILL_AREA_STYLE_COLOUR('',#113); +#113 = COLOUR_RGB('',1.,0.666666687201,0.); +#114 = CURVE_STYLE('',#115,POSITIVE_LENGTH_MEASURE(0.1),#116); +#115 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#116 = COLOUR_RGB('',9.803921802644E-02,9.803921802644E-02, 9.803921802644E-02); -#185 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#186) - ,#160); -#186 = STYLED_ITEM('color',(#187),#135); -#187 = PRESENTATION_STYLE_ASSIGNMENT((#188,#194)); -#188 = SURFACE_STYLE_USAGE(.BOTH.,#189); -#189 = SURFACE_SIDE_STYLE('',(#190)); -#190 = SURFACE_STYLE_FILL_AREA(#191); -#191 = FILL_AREA_STYLE('',(#192)); -#192 = FILL_AREA_STYLE_COLOUR('',#193); -#193 = COLOUR_RGB('',1.,0.666666687201,0.); -#194 = CURVE_STYLE('',#195,POSITIVE_LENGTH_MEASURE(0.1),#184); -#195 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); -#196 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#197) - ,#114); -#197 = STYLED_ITEM('color',(#198),#89); -#198 = PRESENTATION_STYLE_ASSIGNMENT((#199,#204)); -#199 = SURFACE_STYLE_USAGE(.BOTH.,#200); -#200 = SURFACE_SIDE_STYLE('',(#201)); -#201 = SURFACE_STYLE_FILL_AREA(#202); -#202 = FILL_AREA_STYLE('',(#203)); -#203 = FILL_AREA_STYLE_COLOUR('',#193); -#204 = CURVE_STYLE('',#205,POSITIVE_LENGTH_MEASURE(0.1),#184); -#205 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); +#117 = MECHANICAL_DESIGN_GEOMETRIC_PRESENTATION_REPRESENTATION('',(#118) + ,#56); +#118 = STYLED_ITEM('color',(#119),#39); +#119 = PRESENTATION_STYLE_ASSIGNMENT((#120,#125)); +#120 = SURFACE_STYLE_USAGE(.BOTH.,#121); +#121 = SURFACE_SIDE_STYLE('',(#122)); +#122 = SURFACE_STYLE_FILL_AREA(#123); +#123 = FILL_AREA_STYLE('',(#124)); +#124 = FILL_AREA_STYLE_COLOUR('',#113); +#125 = CURVE_STYLE('',#126,POSITIVE_LENGTH_MEASURE(0.1),#116); +#126 = DRAUGHTING_PRE_DEFINED_CURVE_FONT('continuous'); ENDSEC; END-ISO-10303-21; diff --git a/testData/unshielded_multiwire/unshielded_multiwire.json b/testData/unshielded_multiwire/unshielded_multiwire.json new file mode 100644 index 0000000..38c9723 --- /dev/null +++ b/testData/unshielded_multiwire/unshielded_multiwire.json @@ -0,0 +1,22 @@ +{ + "CrossSection":[ + { + "name":"Conductor_0", + "material":{ + "type":"PEC" + } + }, + { + "name":"Conductor_1", + "material":{ + "type":"PEC" + } + }, + { + "name":"Dielectric_1", + "material":{ + "type":"Dielectric" + } + } + ] +} \ No newline at end of file