Skip to content

Commit

Permalink
some fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
jriegel committed Jan 8, 2014
1 parent 7cf3b61 commit 9a702d2
Show file tree
Hide file tree
Showing 3 changed files with 101 additions and 16 deletions.
81 changes: 81 additions & 0 deletions src/Mod/Import/App/SCL/Aufspannung.stp
@@ -0,0 +1,81 @@
ISO-10303-21;
HEADER;
FILE_DESCRIPTION(('CATIA V5 STEP Exchange'),'2;1');

FILE_NAME('E:\\fem-dev\\src\\Mod\\Import\\App\\SCL\\Aufspannung.stp','2014-01-08T14:51:35+00:00',('none'),('none'),'CATIA Version 5 Release 19 SP 9 (IN-10)','CATIA V5 STEP AP214','none');

FILE_SCHEMA(('AUTOMOTIVE_DESIGN { 1 0 10303 214 1 1 1 1 }'));

ENDSEC;
/* file written by CATIA V5R19 */
DATA;
#5=PRODUCT('Aufspannung','','',(#2)) ;
#27=PRODUCT('DemlerTisch2000','','',(#2)) ;
#50=PRODUCT('Mittelstrebe_ZB-Fr\X2\00E4\X0\sen','','',(#2)) ;
#2=PRODUCT_CONTEXT(' ',#1,'mechanical') ;
#1=APPLICATION_CONTEXT('automotive design') ;
#31=DOCUMENT('1','DemlerTisch2000.CATPart','CATPart document',#30) ;
#54=DOCUMENT('2','Mittelstrebe_ZB-Fraesen.CATPart','CATPart document',#53) ;
#30=DOCUMENT_TYPE('') ;
#53=DOCUMENT_TYPE('') ;
#13=PRODUCT_DEFINITION('',' ',#6,#3) ;
#3=PRODUCT_DEFINITION_CONTEXT('part definition',#1,' ') ;
#16=PRODUCT_DEFINITION_SHAPE(' ',' ',#13) ;
#32=PRODUCT_DEFINITION_SHAPE(' ',' ',#29) ;
#34=PRODUCT_DEFINITION_SHAPE(' ',' ',#33) ;
#55=PRODUCT_DEFINITION_SHAPE(' ',' ',#52) ;
#57=PRODUCT_DEFINITION_SHAPE(' ',' ',#56) ;
#15=SHAPE_REPRESENTATION(' ',(#38,#61),#22) ;
#25=SHAPE_REPRESENTATION(' ',(#39),#24) ;
#48=SHAPE_REPRESENTATION(' ',(#62),#47) ;
#37=ITEM_DEFINED_TRANSFORMATION(' ',' ',#39,#38) ;
#60=ITEM_DEFINED_TRANSFORMATION(' ',' ',#62,#61) ;
#38=AXIS2_PLACEMENT_3D(' ',#41,#45,#44) ;
#39=AXIS2_PLACEMENT_3D(' ',#40,#43,#42) ;
#61=AXIS2_PLACEMENT_3D(' ',#64,#68,#67) ;
#62=AXIS2_PLACEMENT_3D(' ',#63,#66,#65) ;
#40=CARTESIAN_POINT('NONE',(0.,0.,0.)) ;
#41=CARTESIAN_POINT('NONE',(0.,0.,0.)) ;
#63=CARTESIAN_POINT('NONE',(0.,0.,0.)) ;
#64=CARTESIAN_POINT('NONE',(1302.5,1263.48243402,-125.5)) ;
#42=DIRECTION('NONE',(1.,0.,0.)) ;
#43=DIRECTION('NONE',(0.,0.,1.)) ;
#44=DIRECTION('NONE',(1.,0.,0.)) ;
#45=DIRECTION('NONE',(0.,0.,1.)) ;
#65=DIRECTION('NONE',(1.,0.,0.)) ;
#66=DIRECTION('NONE',(0.,0.,1.)) ;
#67=DIRECTION('NONE',(1.,0.,0.)) ;
#68=DIRECTION('NONE',(0.,0.,1.)) ;
#8=PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#27,#50)) ;
#11=PRODUCT_RELATED_PRODUCT_CATEGORY('part',$,(#5)) ;
#7=PRODUCT_CATEGORY('part','specification') ;
#10=PRODUCT_CATEGORY('part','specification') ;
#21=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#17,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ;
#23=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#17,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ;
#46=UNCERTAINTY_MEASURE_WITH_UNIT(LENGTH_MEASURE(0.005),#17,'distance_accuracy_value','CONFUSED CURVE UNCERTAINTY') ;
#35=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#36,#34) ;
#58=CONTEXT_DEPENDENT_SHAPE_REPRESENTATION(#59,#57) ;
#4=APPLICATION_PROTOCOL_DEFINITION('international standard','automotive_design',2001,#1) ;
#33=NEXT_ASSEMBLY_USAGE_OCCURRENCE('DemlerTisch2000.1','DemlerTisch2000.1','',#13,#29,' ') ;
#56=NEXT_ASSEMBLY_USAGE_OCCURRENCE('Mittelstrebe_ZB-Fr\X2\00E4\X0\sen.1','Mittelstrebe_ZB-Fr\X2\00E4\X0\sen.1','',#13,#52,' ') ;
#29=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS('',' ',#28,#3,(#31)) ;
#52=PRODUCT_DEFINITION_WITH_ASSOCIATED_DOCUMENTS('',' ',#51,#3,(#54)) ;
#19=PLANE_ANGLE_MEASURE_WITH_UNIT(PLANE_ANGLE_MEASURE(0.0174532925199),#18) ;
#9=PRODUCT_CATEGORY_RELATIONSHIP(' ',' ',#7,#8) ;
#12=PRODUCT_CATEGORY_RELATIONSHIP(' ',' ',#10,#11) ;
#6=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('',' ',#5,.NOT_KNOWN.) ;
#28=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('',' ',#27,.NOT_KNOWN.) ;
#51=PRODUCT_DEFINITION_FORMATION_WITH_SPECIFIED_SOURCE('',' ',#50,.NOT_KNOWN.) ;
#14=SHAPE_DEFINITION_REPRESENTATION(#16,#15) ;
#26=SHAPE_DEFINITION_REPRESENTATION(#32,#25) ;
#49=SHAPE_DEFINITION_REPRESENTATION(#55,#48) ;
#17=(LENGTH_UNIT()NAMED_UNIT(*)SI_UNIT(.MILLI.,.METRE.)) ;
#18=(NAMED_UNIT(*)PLANE_ANGLE_UNIT()SI_UNIT($,.RADIAN.)) ;
#20=(NAMED_UNIT(*)SI_UNIT($,.STERADIAN.)SOLID_ANGLE_UNIT()) ;
#22=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#21))GLOBAL_UNIT_ASSIGNED_CONTEXT((#17,#18,#20))REPRESENTATION_CONTEXT(' ',' ')) ;
#24=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#23))GLOBAL_UNIT_ASSIGNED_CONTEXT((#17,#18,#20))REPRESENTATION_CONTEXT(' ',' ')) ;
#47=(GEOMETRIC_REPRESENTATION_CONTEXT(3)GLOBAL_UNCERTAINTY_ASSIGNED_CONTEXT((#46))GLOBAL_UNIT_ASSIGNED_CONTEXT((#17,#18,#20))REPRESENTATION_CONTEXT(' ',' ')) ;
#36=(REPRESENTATION_RELATIONSHIP(' ',' ',#25,#15)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#37)SHAPE_REPRESENTATION_RELATIONSHIP()) ;
#59=(REPRESENTATION_RELATIONSHIP(' ',' ',#48,#15)REPRESENTATION_RELATIONSHIP_WITH_TRANSFORMATION(#60)SHAPE_REPRESENTATION_RELATIONSHIP()) ;
ENDSEC;
END-ISO-10303-21;
16 changes: 8 additions & 8 deletions src/Mod/Import/App/SCL/Part21.py
Expand Up @@ -106,14 +106,14 @@ def __init__(self, filename):
self._instances_definition = {}
# this dict contains lists of 0 ancestors, 1 ancestor, etc.
# initializes this dict
self._number_of_ancestors = {}
for i in range(2000):
self._number_of_ancestors[i]=[]
#self._number_of_ancestors = {} # this kind of sorting don't work on non-trivial files
#for i in range(2000):
# self._number_of_ancestors[i]=[]
self.parse_file()
# reduce number_of_ancestors dict
for item in self._number_of_ancestors.keys():
if len(self._number_of_ancestors[item])==0:
del self._number_of_ancestors[item]
#for item in self._number_of_ancestors.keys():
# if len(self._number_of_ancestors[item])==0:
# del self._number_of_ancestors[item]

def get_schema_name(self):
return self._schema_name
Expand All @@ -140,9 +140,9 @@ def parse_file(self):
instance_id, entity_name, entity_attrs = match_instance_definition.groups()
instance_int_id = int(instance_id)
# find number of ancestors
number_of_ancestors = entity_attrs.count('#')
#number_of_ancestors = entity_attrs.count('#')
# fill number of ancestors dict
self._number_of_ancestors[number_of_ancestors].append(instance_int_id)
#self._number_of_ancestors[number_of_ancestors].append(instance_int_id) # this kind of sorting don't work on non-trivial files
# parse attributes string
entity_attrs_list, str_len = Utils.process_nested_parent_str(entity_attrs)
# then finally append this instance to the disct instance
Expand Down
20 changes: 12 additions & 8 deletions src/Mod/Import/App/SCL/SimpleReader.py
Expand Up @@ -47,18 +47,19 @@


class SimpleParser:
"""
Loads all instances definition of a Part21 file into memory.
""" read the file
Part21.Part21Parser Loads all instances definition of a Part21 file into memory.
Two dicts are created:
self._instance_definition : stores attibutes, key is the instance integer id
self._number_of_ancestors : stores the number of ancestors of entity id. This enables
Part21.Part21Parser._instance_definition : stores attibutes, key is the instance integer id
Part21.Part21Parser._number_of_ancestors : stores the number of ancestors of entity id. This enables
to define the order of instances creation.
"""
def __init__(self, filename):
import time
import sys
self._p21loader = Part21.Part21Parser("gasket1.p21")
self._p21loader._number_of_ancestors = {} # not needed, save memory
self._p21loader = Part21.Part21Parser(filename)
#self._p21loader._number_of_ancestors = {} # not needed, save memory
self.schemaModule = None
self.schemaClasses = None
self.instanceMape = {}
Expand All @@ -83,7 +84,9 @@ def writeGraphViz(self,fileName):
for i in self._p21loader._instances_definition.keys():
entityStr = '#'+`i`
nameStr = self._p21loader._instances_definition[i][0].lower()
sttrStr = `self._p21loader._instances_definition[i][1]`.replace('"','').replace("'",'')
sttrStr = `self._p21loader._instances_definition[i][1]`.replace('"','').replace("'",'').replace(" ",'')
if len (sttrStr) > 40:
sttrStr = sttrStr[:39]+'....'
gvFile.write(' '+`i`+' [label="'+entityStr+'\n'+nameStr+'\n'+sttrStr+'"]\n')
self._writeGraphVizEdge( i,self._p21loader._instances_definition[i][1],gvFile)
gvFile.write('}\n')
Expand Down Expand Up @@ -162,6 +165,7 @@ def _transformAttributes(self,attrList):

if __name__ == "__main__":
sys.path.append('..') # path where config_control_design.py is found
parser = SimpleParser("gasket1.p21") # simple test file
parser = SimpleParser("Aufspannung.stp") # simple test file
#parser.instaciate()
parser.writeGraphViz('TestGrap.gv')
#dot.exe -Tsvg -o Test.svg e:\fem-dev\src\Mod\Import\App\SCL\TestGrap-geo.gv

0 comments on commit 9a702d2

Please sign in to comment.