@@ -17,7 +17,7 @@ module.exports = {
|
||||
'space-before-blocks': 'error',
|
||||
'space-infix-ops': 'error',
|
||||
'comma-dangle': [ 'error', 'never' ],
|
||||
'no-console': [ 'error', { allow: [ 'warn', 'error' ] } ],
|
||||
'no-console': [ 'warn', { allow: [ 'warn', 'error' ] } ],
|
||||
'space-unary-ops': 'error',
|
||||
'no-var': 'error',
|
||||
'no-alert': 'error',
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,647 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('ArchiCAD 9.00 Release 1 generated IFC file.','Build Number of the Ifc 2x3 interface: 63015 (11-04-2006)\X\0D\X\0A'),'2;1');
|
||||
FILE_NAME('C:\\Documents and Settings\\gkiss\\My Documents\\Ifc\\2x3\\MyPlans\\Railing.ifc','2006-05-26T11:14:01',('Architect'),('Building Designer Office'),'PreProc - EDM 4.5.0033','Windows System','The authorising person');
|
||||
FILE_SCHEMA(('IFC2X3'));
|
||||
ENDSEC;
|
||||
|
||||
DATA;
|
||||
#1= IFCORGANIZATION('GS','Graphisoft','Graphisoft',$,$);
|
||||
#5= IFCAPPLICATION(#1,'9.0','ArchiCAD 9.0','ArchiCAD');
|
||||
#6= IFCPERSON($,'Undefined',$,$,$,$,$,$);
|
||||
#8= IFCORGANIZATION($,'OrganizationName',$,$,$);
|
||||
#12= IFCPERSONANDORGANIZATION(#6,#8,$);
|
||||
#13= IFCOWNERHISTORY(#12,#5,$,.NOCHANGE.,$,$,$,1148634841);
|
||||
#14= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
|
||||
#15= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
|
||||
#16= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
|
||||
#17= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
|
||||
#18= IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453293),#17);
|
||||
#19= IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0);
|
||||
#20= IFCCONVERSIONBASEDUNIT(#19,.PLANEANGLEUNIT.,'DEGREE',#18);
|
||||
#21= IFCSIUNIT(*,.SOLIDANGLEUNIT.,$,.STERADIAN.);
|
||||
#22= IFCSIUNIT(*,.MASSUNIT.,$,.GRAM.);
|
||||
#23= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
|
||||
#24= IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.DEGREE_CELSIUS.);
|
||||
#25= IFCSIUNIT(*,.LUMINOUSINTENSITYUNIT.,$,.LUMEN.);
|
||||
#26= IFCUNITASSIGNMENT((#14,#15,#16,#20,#21,#22,#23,#24,#25));
|
||||
#28= IFCDIRECTION((1.,0.,0.));
|
||||
#32= IFCDIRECTION((0.,1.,0.));
|
||||
#36= IFCDIRECTION((0.,0.,1.));
|
||||
#40= IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#44= IFCAXIS2PLACEMENT3D(#40,#36,#28);
|
||||
#47= IFCDIRECTION((6.1230318E-17,1.));
|
||||
#51= IFCGEOMETRICREPRESENTATIONCONTEXT('Plan','Design',3,1.0000000E-5,#44,#47);
|
||||
#54= IFCPROJECT('24a_voSxrA7gHUExjc3Mp6',#13,'Default Project',$,$,$,$,(#51,#1747),#26);
|
||||
#61= IFCLOCALPLACEMENT($,#44);
|
||||
#64= IFCBUILDING('0pppMBzUn8wfkj9sseUD8m',#13,'Default Building',$,$,#61,$,$,.ELEMENT.,$,$,$);
|
||||
#74= IFCAXIS2PLACEMENT3D(#40,#36,#28);
|
||||
#77= IFCLOCALPLACEMENT(#61,#74);
|
||||
#80= IFCBUILDINGSTOREY('3cAh0AqML3CwQE2GizlXBd',#13,'',$,$,#77,$,$,.ELEMENT.,0.);
|
||||
#90= IFCCARTESIANPOINT((-150.,25.,875.));
|
||||
#94= IFCCARTESIANPOINT((-150.,-25.,875.));
|
||||
#98= IFCCARTESIANPOINT((-150.,-25.,900.));
|
||||
#102= IFCCARTESIANPOINT((-150.,25.,900.));
|
||||
#106= IFCCARTESIANPOINT((1650.,25.,875.));
|
||||
#111= IFCCARTESIANPOINT((1650.,-25.,875.));
|
||||
#115= IFCCARTESIANPOINT((1650.,-25.,900.));
|
||||
#119= IFCCARTESIANPOINT((1650.,25.,900.));
|
||||
#123= IFCCARTESIANPOINT((-17.5,-17.5,0.));
|
||||
#127= IFCCARTESIANPOINT((17.5,-17.5,0.));
|
||||
#131= IFCCARTESIANPOINT((17.5,-17.5,875.));
|
||||
#135= IFCCARTESIANPOINT((-17.5,-17.5,875.));
|
||||
#139= IFCCARTESIANPOINT((-17.5,17.5,0.));
|
||||
#143= IFCCARTESIANPOINT((17.5,17.5,0.));
|
||||
#147= IFCCARTESIANPOINT((17.5,17.5,875.));
|
||||
#151= IFCCARTESIANPOINT((-17.5,17.5,875.));
|
||||
#155= IFCCARTESIANPOINT((732.5,-17.5,0.));
|
||||
#159= IFCCARTESIANPOINT((767.5,-17.5,0.));
|
||||
#163= IFCCARTESIANPOINT((767.5,-17.5,875.));
|
||||
#167= IFCCARTESIANPOINT((732.5,-17.5,875.));
|
||||
#171= IFCCARTESIANPOINT((732.5,17.5,0.));
|
||||
#175= IFCCARTESIANPOINT((767.5,17.5,0.));
|
||||
#179= IFCCARTESIANPOINT((767.5,17.5,875.));
|
||||
#183= IFCCARTESIANPOINT((732.5,17.5,875.));
|
||||
#187= IFCCARTESIANPOINT((1482.5,-17.5,0.));
|
||||
#191= IFCCARTESIANPOINT((1517.5,-17.5,0.));
|
||||
#195= IFCCARTESIANPOINT((1517.5,-17.5,875.));
|
||||
#199= IFCCARTESIANPOINT((1482.5,-17.5,875.));
|
||||
#203= IFCCARTESIANPOINT((1482.5,17.5,0.));
|
||||
#207= IFCCARTESIANPOINT((1517.5,17.5,0.));
|
||||
#211= IFCCARTESIANPOINT((1517.5,17.5,875.));
|
||||
#215= IFCCARTESIANPOINT((1482.5,17.5,875.));
|
||||
#219= IFCCARTESIANPOINT((732.5,-10.,170.));
|
||||
#223= IFCCARTESIANPOINT((732.5,10.,170.));
|
||||
#227= IFCCARTESIANPOINT((17.5,10.,170.));
|
||||
#231= IFCCARTESIANPOINT((17.5,-10.,170.));
|
||||
#235= IFCCARTESIANPOINT((732.5,10.,150.));
|
||||
#240= IFCCARTESIANPOINT((732.5,-10.,150.));
|
||||
#244= IFCCARTESIANPOINT((17.5,10.,150.));
|
||||
#248= IFCCARTESIANPOINT((17.5,-10.,150.));
|
||||
#252= IFCCARTESIANPOINT((1482.5,-10.,170.));
|
||||
#256= IFCCARTESIANPOINT((1482.5,10.,170.));
|
||||
#260= IFCCARTESIANPOINT((767.5,10.,170.));
|
||||
#264= IFCCARTESIANPOINT((767.5,-10.,170.));
|
||||
#268= IFCCARTESIANPOINT((1482.5,10.,150.));
|
||||
#272= IFCCARTESIANPOINT((1482.5,-10.,150.));
|
||||
#276= IFCCARTESIANPOINT((767.5,10.,150.));
|
||||
#280= IFCCARTESIANPOINT((767.5,-10.,150.));
|
||||
#284= IFCCARTESIANPOINT((144.5,-10.,170.));
|
||||
#288= IFCCARTESIANPOINT((164.5,-10.,170.));
|
||||
#292= IFCCARTESIANPOINT((164.5,-10.,875.));
|
||||
#296= IFCCARTESIANPOINT((144.5,-10.,875.));
|
||||
#300= IFCCARTESIANPOINT((144.5,10.,170.));
|
||||
#304= IFCCARTESIANPOINT((164.5,10.,170.));
|
||||
#308= IFCCARTESIANPOINT((164.5,10.,875.));
|
||||
#312= IFCCARTESIANPOINT((144.5,10.,875.));
|
||||
#316= IFCCARTESIANPOINT((291.5,-10.,170.));
|
||||
#320= IFCCARTESIANPOINT((311.5,-10.,170.));
|
||||
#324= IFCCARTESIANPOINT((311.5,-10.,875.));
|
||||
#328= IFCCARTESIANPOINT((291.5,-10.,875.));
|
||||
#332= IFCCARTESIANPOINT((291.5,10.,170.));
|
||||
#336= IFCCARTESIANPOINT((311.5,10.,170.));
|
||||
#340= IFCCARTESIANPOINT((311.5,10.,875.));
|
||||
#344= IFCCARTESIANPOINT((291.5,10.,875.));
|
||||
#348= IFCCARTESIANPOINT((438.5,-10.,170.));
|
||||
#352= IFCCARTESIANPOINT((458.5,-10.,170.));
|
||||
#356= IFCCARTESIANPOINT((458.5,-10.,875.));
|
||||
#360= IFCCARTESIANPOINT((438.5,-10.,875.));
|
||||
#364= IFCCARTESIANPOINT((438.5,10.,170.));
|
||||
#369= IFCCARTESIANPOINT((458.5,10.,170.));
|
||||
#373= IFCCARTESIANPOINT((458.5,10.,875.));
|
||||
#377= IFCCARTESIANPOINT((438.5,10.,875.));
|
||||
#381= IFCCARTESIANPOINT((585.5,-10.,170.));
|
||||
#385= IFCCARTESIANPOINT((605.5,-10.,170.));
|
||||
#389= IFCCARTESIANPOINT((605.5,-10.,875.));
|
||||
#393= IFCCARTESIANPOINT((585.5,-10.,875.));
|
||||
#397= IFCCARTESIANPOINT((585.5,10.,170.));
|
||||
#401= IFCCARTESIANPOINT((605.5,10.,170.));
|
||||
#405= IFCCARTESIANPOINT((605.5,10.,875.));
|
||||
#409= IFCCARTESIANPOINT((585.5,10.,875.));
|
||||
#413= IFCCARTESIANPOINT((894.5,-10.,170.));
|
||||
#417= IFCCARTESIANPOINT((914.5,-10.,170.));
|
||||
#421= IFCCARTESIANPOINT((914.5,-10.,875.));
|
||||
#425= IFCCARTESIANPOINT((894.5,-10.,875.));
|
||||
#429= IFCCARTESIANPOINT((894.5,10.,170.));
|
||||
#433= IFCCARTESIANPOINT((914.5,10.,170.));
|
||||
#437= IFCCARTESIANPOINT((914.5,10.,875.));
|
||||
#441= IFCCARTESIANPOINT((894.5,10.,875.));
|
||||
#445= IFCCARTESIANPOINT((1041.5,-10.,170.));
|
||||
#449= IFCCARTESIANPOINT((1061.5,-10.,170.));
|
||||
#453= IFCCARTESIANPOINT((1061.5,-10.,875.));
|
||||
#457= IFCCARTESIANPOINT((1041.5,-10.,875.));
|
||||
#461= IFCCARTESIANPOINT((1041.5,10.,170.));
|
||||
#465= IFCCARTESIANPOINT((1061.5,10.,170.));
|
||||
#469= IFCCARTESIANPOINT((1061.5,10.,875.));
|
||||
#473= IFCCARTESIANPOINT((1041.5,10.,875.));
|
||||
#477= IFCCARTESIANPOINT((1188.5,-10.,170.));
|
||||
#481= IFCCARTESIANPOINT((1208.5,-10.,170.));
|
||||
#485= IFCCARTESIANPOINT((1208.5,-10.,875.));
|
||||
#489= IFCCARTESIANPOINT((1188.5,-10.,875.));
|
||||
#494= IFCCARTESIANPOINT((1188.5,10.,170.));
|
||||
#498= IFCCARTESIANPOINT((1208.5,10.,170.));
|
||||
#502= IFCCARTESIANPOINT((1208.5,10.,875.));
|
||||
#506= IFCCARTESIANPOINT((1188.5,10.,875.));
|
||||
#510= IFCCARTESIANPOINT((1335.5,-10.,170.));
|
||||
#514= IFCCARTESIANPOINT((1355.5,-10.,170.));
|
||||
#518= IFCCARTESIANPOINT((1355.5,-10.,875.));
|
||||
#522= IFCCARTESIANPOINT((1335.5,-10.,875.));
|
||||
#526= IFCCARTESIANPOINT((1335.5,10.,170.));
|
||||
#530= IFCCARTESIANPOINT((1355.5,10.,170.));
|
||||
#534= IFCCARTESIANPOINT((1355.5,10.,875.));
|
||||
#538= IFCCARTESIANPOINT((1335.5,10.,875.));
|
||||
#542= IFCPOLYLOOP((#90,#94,#98,#102));
|
||||
#546= IFCFACEOUTERBOUND(#542,.T.);
|
||||
#549= IFCFACE((#546));
|
||||
#553= IFCPOLYLOOP((#90,#106,#111,#94));
|
||||
#557= IFCFACEOUTERBOUND(#553,.T.);
|
||||
#560= IFCFACE((#557));
|
||||
#564= IFCPOLYLOOP((#94,#111,#115,#98));
|
||||
#568= IFCFACEOUTERBOUND(#564,.T.);
|
||||
#571= IFCFACE((#568));
|
||||
#575= IFCPOLYLOOP((#102,#98,#115,#119));
|
||||
#579= IFCFACEOUTERBOUND(#575,.T.);
|
||||
#582= IFCFACE((#579));
|
||||
#586= IFCPOLYLOOP((#106,#90,#102,#119));
|
||||
#590= IFCFACEOUTERBOUND(#586,.T.);
|
||||
#593= IFCFACE((#590));
|
||||
#597= IFCPOLYLOOP((#111,#106,#119,#115));
|
||||
#601= IFCFACEOUTERBOUND(#597,.T.);
|
||||
#604= IFCFACE((#601));
|
||||
#608= IFCCLOSEDSHELL((#549,#560,#571,#582,#593,#604));
|
||||
#612= IFCFACETEDBREP(#608);
|
||||
#615= IFCCOLOURRGB($,0.88227665,0.40103761,0.22470436);
|
||||
#616= IFCSURFACESTYLERENDERING(#615,0.,IFCNORMALISEDRATIOMEASURE(0.),$,$,$,IFCNORMALISEDRATIOMEASURE(0.),$,.NOTDEFINED.);
|
||||
#617= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#619= IFCPRESENTATIONSTYLEASSIGNMENT((#617));
|
||||
#622= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#624= IFCPRESENTATIONSTYLEASSIGNMENT((#622));
|
||||
#626= IFCSTYLEDITEM(#612,(#624),$);
|
||||
#630= IFCPOLYLOOP((#123,#127,#131,#135));
|
||||
#634= IFCFACEOUTERBOUND(#630,.T.);
|
||||
#637= IFCFACE((#634));
|
||||
#641= IFCPOLYLOOP((#123,#139,#143,#127));
|
||||
#645= IFCFACEOUTERBOUND(#641,.T.);
|
||||
#648= IFCFACE((#645));
|
||||
#652= IFCPOLYLOOP((#127,#143,#147,#131));
|
||||
#656= IFCFACEOUTERBOUND(#652,.T.);
|
||||
#659= IFCFACE((#656));
|
||||
#663= IFCPOLYLOOP((#135,#131,#147,#151));
|
||||
#667= IFCFACEOUTERBOUND(#663,.T.);
|
||||
#670= IFCFACE((#667));
|
||||
#674= IFCPOLYLOOP((#139,#123,#135,#151));
|
||||
#678= IFCFACEOUTERBOUND(#674,.T.);
|
||||
#681= IFCFACE((#678));
|
||||
#685= IFCPOLYLOOP((#143,#139,#151,#147));
|
||||
#689= IFCFACEOUTERBOUND(#685,.T.);
|
||||
#692= IFCFACE((#689));
|
||||
#696= IFCCLOSEDSHELL((#637,#648,#659,#670,#681,#692));
|
||||
#700= IFCFACETEDBREP(#696);
|
||||
#703= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#705= IFCPRESENTATIONSTYLEASSIGNMENT((#703));
|
||||
#707= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#709= IFCPRESENTATIONSTYLEASSIGNMENT((#707));
|
||||
#711= IFCSTYLEDITEM(#700,(#709),$);
|
||||
#715= IFCPOLYLOOP((#155,#159,#163,#167));
|
||||
#719= IFCFACEOUTERBOUND(#715,.T.);
|
||||
#722= IFCFACE((#719));
|
||||
#726= IFCPOLYLOOP((#155,#171,#175,#159));
|
||||
#730= IFCFACEOUTERBOUND(#726,.T.);
|
||||
#733= IFCFACE((#730));
|
||||
#737= IFCPOLYLOOP((#159,#175,#179,#163));
|
||||
#741= IFCFACEOUTERBOUND(#737,.T.);
|
||||
#744= IFCFACE((#741));
|
||||
#748= IFCPOLYLOOP((#167,#163,#179,#183));
|
||||
#753= IFCFACEOUTERBOUND(#748,.T.);
|
||||
#756= IFCFACE((#753));
|
||||
#760= IFCPOLYLOOP((#171,#155,#167,#183));
|
||||
#764= IFCFACEOUTERBOUND(#760,.T.);
|
||||
#767= IFCFACE((#764));
|
||||
#771= IFCPOLYLOOP((#175,#171,#183,#179));
|
||||
#775= IFCFACEOUTERBOUND(#771,.T.);
|
||||
#778= IFCFACE((#775));
|
||||
#782= IFCCLOSEDSHELL((#722,#733,#744,#756,#767,#778));
|
||||
#786= IFCFACETEDBREP(#782);
|
||||
#789= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#791= IFCPRESENTATIONSTYLEASSIGNMENT((#789));
|
||||
#793= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#795= IFCPRESENTATIONSTYLEASSIGNMENT((#793));
|
||||
#797= IFCSTYLEDITEM(#786,(#795),$);
|
||||
#801= IFCPOLYLOOP((#187,#191,#195,#199));
|
||||
#805= IFCFACEOUTERBOUND(#801,.T.);
|
||||
#808= IFCFACE((#805));
|
||||
#812= IFCPOLYLOOP((#187,#203,#207,#191));
|
||||
#816= IFCFACEOUTERBOUND(#812,.T.);
|
||||
#819= IFCFACE((#816));
|
||||
#823= IFCPOLYLOOP((#191,#207,#211,#195));
|
||||
#827= IFCFACEOUTERBOUND(#823,.T.);
|
||||
#830= IFCFACE((#827));
|
||||
#834= IFCPOLYLOOP((#199,#195,#211,#215));
|
||||
#838= IFCFACEOUTERBOUND(#834,.T.);
|
||||
#841= IFCFACE((#838));
|
||||
#845= IFCPOLYLOOP((#203,#187,#199,#215));
|
||||
#849= IFCFACEOUTERBOUND(#845,.T.);
|
||||
#852= IFCFACE((#849));
|
||||
#856= IFCPOLYLOOP((#207,#203,#215,#211));
|
||||
#860= IFCFACEOUTERBOUND(#856,.T.);
|
||||
#863= IFCFACE((#860));
|
||||
#867= IFCCLOSEDSHELL((#808,#819,#830,#841,#852,#863));
|
||||
#871= IFCFACETEDBREP(#867);
|
||||
#874= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#876= IFCPRESENTATIONSTYLEASSIGNMENT((#874));
|
||||
#879= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#881= IFCPRESENTATIONSTYLEASSIGNMENT((#879));
|
||||
#883= IFCSTYLEDITEM(#871,(#881),$);
|
||||
#887= IFCPOLYLOOP((#219,#223,#227,#231));
|
||||
#891= IFCFACEOUTERBOUND(#887,.T.);
|
||||
#894= IFCFACE((#891));
|
||||
#898= IFCPOLYLOOP((#235,#223,#219,#240));
|
||||
#902= IFCFACEOUTERBOUND(#898,.T.);
|
||||
#905= IFCFACE((#902));
|
||||
#909= IFCPOLYLOOP((#223,#235,#244,#227));
|
||||
#913= IFCFACEOUTERBOUND(#909,.T.);
|
||||
#916= IFCFACE((#913));
|
||||
#920= IFCPOLYLOOP((#248,#231,#227,#244));
|
||||
#924= IFCFACEOUTERBOUND(#920,.T.);
|
||||
#927= IFCFACE((#924));
|
||||
#931= IFCPOLYLOOP((#240,#219,#231,#248));
|
||||
#935= IFCFACEOUTERBOUND(#931,.T.);
|
||||
#938= IFCFACE((#935));
|
||||
#942= IFCPOLYLOOP((#235,#240,#248,#244));
|
||||
#946= IFCFACEOUTERBOUND(#942,.T.);
|
||||
#949= IFCFACE((#946));
|
||||
#953= IFCCLOSEDSHELL((#894,#905,#916,#927,#938,#949));
|
||||
#957= IFCFACETEDBREP(#953);
|
||||
#960= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#962= IFCPRESENTATIONSTYLEASSIGNMENT((#960));
|
||||
#964= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#966= IFCPRESENTATIONSTYLEASSIGNMENT((#964));
|
||||
#968= IFCSTYLEDITEM(#957,(#966),$);
|
||||
#972= IFCPOLYLOOP((#252,#256,#260,#264));
|
||||
#976= IFCFACEOUTERBOUND(#972,.T.);
|
||||
#979= IFCFACE((#976));
|
||||
#983= IFCPOLYLOOP((#268,#256,#252,#272));
|
||||
#987= IFCFACEOUTERBOUND(#983,.T.);
|
||||
#990= IFCFACE((#987));
|
||||
#994= IFCPOLYLOOP((#256,#268,#276,#260));
|
||||
#998= IFCFACEOUTERBOUND(#994,.T.);
|
||||
#1001= IFCFACE((#998));
|
||||
#1006= IFCPOLYLOOP((#280,#264,#260,#276));
|
||||
#1010= IFCFACEOUTERBOUND(#1006,.T.);
|
||||
#1013= IFCFACE((#1010));
|
||||
#1017= IFCPOLYLOOP((#272,#252,#264,#280));
|
||||
#1021= IFCFACEOUTERBOUND(#1017,.T.);
|
||||
#1024= IFCFACE((#1021));
|
||||
#1028= IFCPOLYLOOP((#268,#272,#280,#276));
|
||||
#1032= IFCFACEOUTERBOUND(#1028,.T.);
|
||||
#1035= IFCFACE((#1032));
|
||||
#1039= IFCCLOSEDSHELL((#979,#990,#1001,#1013,#1024,#1035));
|
||||
#1043= IFCFACETEDBREP(#1039);
|
||||
#1046= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1048= IFCPRESENTATIONSTYLEASSIGNMENT((#1046));
|
||||
#1050= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1052= IFCPRESENTATIONSTYLEASSIGNMENT((#1050));
|
||||
#1054= IFCSTYLEDITEM(#1043,(#1052),$);
|
||||
#1058= IFCPOLYLOOP((#284,#288,#292,#296));
|
||||
#1062= IFCFACEOUTERBOUND(#1058,.T.);
|
||||
#1065= IFCFACE((#1062));
|
||||
#1069= IFCPOLYLOOP((#284,#300,#304,#288));
|
||||
#1073= IFCFACEOUTERBOUND(#1069,.T.);
|
||||
#1076= IFCFACE((#1073));
|
||||
#1080= IFCPOLYLOOP((#288,#304,#308,#292));
|
||||
#1084= IFCFACEOUTERBOUND(#1080,.T.);
|
||||
#1087= IFCFACE((#1084));
|
||||
#1091= IFCPOLYLOOP((#296,#292,#308,#312));
|
||||
#1095= IFCFACEOUTERBOUND(#1091,.T.);
|
||||
#1098= IFCFACE((#1095));
|
||||
#1102= IFCPOLYLOOP((#300,#284,#296,#312));
|
||||
#1106= IFCFACEOUTERBOUND(#1102,.T.);
|
||||
#1109= IFCFACE((#1106));
|
||||
#1113= IFCPOLYLOOP((#304,#300,#312,#308));
|
||||
#1117= IFCFACEOUTERBOUND(#1113,.T.);
|
||||
#1120= IFCFACE((#1117));
|
||||
#1124= IFCCLOSEDSHELL((#1065,#1076,#1087,#1098,#1109,#1120));
|
||||
#1128= IFCFACETEDBREP(#1124);
|
||||
#1131= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1134= IFCPRESENTATIONSTYLEASSIGNMENT((#1131));
|
||||
#1136= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1138= IFCPRESENTATIONSTYLEASSIGNMENT((#1136));
|
||||
#1140= IFCSTYLEDITEM(#1128,(#1138),$);
|
||||
#1144= IFCPOLYLOOP((#316,#320,#324,#328));
|
||||
#1148= IFCFACEOUTERBOUND(#1144,.T.);
|
||||
#1151= IFCFACE((#1148));
|
||||
#1155= IFCPOLYLOOP((#316,#332,#336,#320));
|
||||
#1159= IFCFACEOUTERBOUND(#1155,.T.);
|
||||
#1162= IFCFACE((#1159));
|
||||
#1166= IFCPOLYLOOP((#320,#336,#340,#324));
|
||||
#1170= IFCFACEOUTERBOUND(#1166,.T.);
|
||||
#1173= IFCFACE((#1170));
|
||||
#1177= IFCPOLYLOOP((#328,#324,#340,#344));
|
||||
#1181= IFCFACEOUTERBOUND(#1177,.T.);
|
||||
#1184= IFCFACE((#1181));
|
||||
#1188= IFCPOLYLOOP((#332,#316,#328,#344));
|
||||
#1192= IFCFACEOUTERBOUND(#1188,.T.);
|
||||
#1195= IFCFACE((#1192));
|
||||
#1199= IFCPOLYLOOP((#336,#332,#344,#340));
|
||||
#1203= IFCFACEOUTERBOUND(#1199,.T.);
|
||||
#1206= IFCFACE((#1203));
|
||||
#1210= IFCCLOSEDSHELL((#1151,#1162,#1173,#1184,#1195,#1206));
|
||||
#1214= IFCFACETEDBREP(#1210);
|
||||
#1217= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1219= IFCPRESENTATIONSTYLEASSIGNMENT((#1217));
|
||||
#1221= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1223= IFCPRESENTATIONSTYLEASSIGNMENT((#1221));
|
||||
#1225= IFCSTYLEDITEM(#1214,(#1223),$);
|
||||
#1229= IFCPOLYLOOP((#348,#352,#356,#360));
|
||||
#1233= IFCFACEOUTERBOUND(#1229,.T.);
|
||||
#1236= IFCFACE((#1233));
|
||||
#1240= IFCPOLYLOOP((#348,#364,#369,#352));
|
||||
#1244= IFCFACEOUTERBOUND(#1240,.T.);
|
||||
#1247= IFCFACE((#1244));
|
||||
#1251= IFCPOLYLOOP((#352,#369,#373,#356));
|
||||
#1255= IFCFACEOUTERBOUND(#1251,.T.);
|
||||
#1258= IFCFACE((#1255));
|
||||
#1263= IFCPOLYLOOP((#360,#356,#373,#377));
|
||||
#1267= IFCFACEOUTERBOUND(#1263,.T.);
|
||||
#1270= IFCFACE((#1267));
|
||||
#1274= IFCPOLYLOOP((#364,#348,#360,#377));
|
||||
#1278= IFCFACEOUTERBOUND(#1274,.T.);
|
||||
#1281= IFCFACE((#1278));
|
||||
#1285= IFCPOLYLOOP((#369,#364,#377,#373));
|
||||
#1289= IFCFACEOUTERBOUND(#1285,.T.);
|
||||
#1292= IFCFACE((#1289));
|
||||
#1296= IFCCLOSEDSHELL((#1236,#1247,#1258,#1270,#1281,#1292));
|
||||
#1300= IFCFACETEDBREP(#1296);
|
||||
#1303= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1305= IFCPRESENTATIONSTYLEASSIGNMENT((#1303));
|
||||
#1307= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1309= IFCPRESENTATIONSTYLEASSIGNMENT((#1307));
|
||||
#1311= IFCSTYLEDITEM(#1300,(#1309),$);
|
||||
#1315= IFCPOLYLOOP((#381,#385,#389,#393));
|
||||
#1319= IFCFACEOUTERBOUND(#1315,.T.);
|
||||
#1322= IFCFACE((#1319));
|
||||
#1326= IFCPOLYLOOP((#381,#397,#401,#385));
|
||||
#1330= IFCFACEOUTERBOUND(#1326,.T.);
|
||||
#1333= IFCFACE((#1330));
|
||||
#1337= IFCPOLYLOOP((#385,#401,#405,#389));
|
||||
#1341= IFCFACEOUTERBOUND(#1337,.T.);
|
||||
#1344= IFCFACE((#1341));
|
||||
#1348= IFCPOLYLOOP((#393,#389,#405,#409));
|
||||
#1352= IFCFACEOUTERBOUND(#1348,.T.);
|
||||
#1355= IFCFACE((#1352));
|
||||
#1359= IFCPOLYLOOP((#397,#381,#393,#409));
|
||||
#1363= IFCFACEOUTERBOUND(#1359,.T.);
|
||||
#1366= IFCFACE((#1363));
|
||||
#1370= IFCPOLYLOOP((#401,#397,#409,#405));
|
||||
#1374= IFCFACEOUTERBOUND(#1370,.T.);
|
||||
#1377= IFCFACE((#1374));
|
||||
#1381= IFCCLOSEDSHELL((#1322,#1333,#1344,#1355,#1366,#1377));
|
||||
#1385= IFCFACETEDBREP(#1381);
|
||||
#1388= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1391= IFCPRESENTATIONSTYLEASSIGNMENT((#1388));
|
||||
#1393= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1395= IFCPRESENTATIONSTYLEASSIGNMENT((#1393));
|
||||
#1397= IFCSTYLEDITEM(#1385,(#1395),$);
|
||||
#1401= IFCPOLYLOOP((#413,#417,#421,#425));
|
||||
#1405= IFCFACEOUTERBOUND(#1401,.T.);
|
||||
#1408= IFCFACE((#1405));
|
||||
#1412= IFCPOLYLOOP((#413,#429,#433,#417));
|
||||
#1416= IFCFACEOUTERBOUND(#1412,.T.);
|
||||
#1419= IFCFACE((#1416));
|
||||
#1423= IFCPOLYLOOP((#417,#433,#437,#421));
|
||||
#1427= IFCFACEOUTERBOUND(#1423,.T.);
|
||||
#1430= IFCFACE((#1427));
|
||||
#1434= IFCPOLYLOOP((#425,#421,#437,#441));
|
||||
#1438= IFCFACEOUTERBOUND(#1434,.T.);
|
||||
#1441= IFCFACE((#1438));
|
||||
#1445= IFCPOLYLOOP((#429,#413,#425,#441));
|
||||
#1449= IFCFACEOUTERBOUND(#1445,.T.);
|
||||
#1452= IFCFACE((#1449));
|
||||
#1456= IFCPOLYLOOP((#433,#429,#441,#437));
|
||||
#1460= IFCFACEOUTERBOUND(#1456,.T.);
|
||||
#1463= IFCFACE((#1460));
|
||||
#1467= IFCCLOSEDSHELL((#1408,#1419,#1430,#1441,#1452,#1463));
|
||||
#1471= IFCFACETEDBREP(#1467);
|
||||
#1474= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1476= IFCPRESENTATIONSTYLEASSIGNMENT((#1474));
|
||||
#1478= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1480= IFCPRESENTATIONSTYLEASSIGNMENT((#1478));
|
||||
#1482= IFCSTYLEDITEM(#1471,(#1480),$);
|
||||
#1486= IFCPOLYLOOP((#445,#449,#453,#457));
|
||||
#1490= IFCFACEOUTERBOUND(#1486,.T.);
|
||||
#1493= IFCFACE((#1490));
|
||||
#1497= IFCPOLYLOOP((#445,#461,#465,#449));
|
||||
#1501= IFCFACEOUTERBOUND(#1497,.T.);
|
||||
#1504= IFCFACE((#1501));
|
||||
#1508= IFCPOLYLOOP((#449,#465,#469,#453));
|
||||
#1512= IFCFACEOUTERBOUND(#1508,.T.);
|
||||
#1515= IFCFACE((#1512));
|
||||
#1520= IFCPOLYLOOP((#457,#453,#469,#473));
|
||||
#1524= IFCFACEOUTERBOUND(#1520,.T.);
|
||||
#1527= IFCFACE((#1524));
|
||||
#1531= IFCPOLYLOOP((#461,#445,#457,#473));
|
||||
#1535= IFCFACEOUTERBOUND(#1531,.T.);
|
||||
#1538= IFCFACE((#1535));
|
||||
#1542= IFCPOLYLOOP((#465,#461,#473,#469));
|
||||
#1546= IFCFACEOUTERBOUND(#1542,.T.);
|
||||
#1549= IFCFACE((#1546));
|
||||
#1553= IFCCLOSEDSHELL((#1493,#1504,#1515,#1527,#1538,#1549));
|
||||
#1557= IFCFACETEDBREP(#1553);
|
||||
#1560= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1562= IFCPRESENTATIONSTYLEASSIGNMENT((#1560));
|
||||
#1564= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1566= IFCPRESENTATIONSTYLEASSIGNMENT((#1564));
|
||||
#1568= IFCSTYLEDITEM(#1557,(#1566),$);
|
||||
#1572= IFCPOLYLOOP((#477,#481,#485,#489));
|
||||
#1576= IFCFACEOUTERBOUND(#1572,.T.);
|
||||
#1579= IFCFACE((#1576));
|
||||
#1583= IFCPOLYLOOP((#477,#494,#498,#481));
|
||||
#1587= IFCFACEOUTERBOUND(#1583,.T.);
|
||||
#1590= IFCFACE((#1587));
|
||||
#1594= IFCPOLYLOOP((#481,#498,#502,#485));
|
||||
#1598= IFCFACEOUTERBOUND(#1594,.T.);
|
||||
#1601= IFCFACE((#1598));
|
||||
#1605= IFCPOLYLOOP((#489,#485,#502,#506));
|
||||
#1609= IFCFACEOUTERBOUND(#1605,.T.);
|
||||
#1612= IFCFACE((#1609));
|
||||
#1616= IFCPOLYLOOP((#494,#477,#489,#506));
|
||||
#1620= IFCFACEOUTERBOUND(#1616,.T.);
|
||||
#1623= IFCFACE((#1620));
|
||||
#1627= IFCPOLYLOOP((#498,#494,#506,#502));
|
||||
#1631= IFCFACEOUTERBOUND(#1627,.T.);
|
||||
#1634= IFCFACE((#1631));
|
||||
#1638= IFCCLOSEDSHELL((#1579,#1590,#1601,#1612,#1623,#1634));
|
||||
#1642= IFCFACETEDBREP(#1638);
|
||||
#1646= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1648= IFCPRESENTATIONSTYLEASSIGNMENT((#1646));
|
||||
#1650= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1652= IFCPRESENTATIONSTYLEASSIGNMENT((#1650));
|
||||
#1654= IFCSTYLEDITEM(#1642,(#1652),$);
|
||||
#1658= IFCPOLYLOOP((#510,#514,#518,#522));
|
||||
#1662= IFCFACEOUTERBOUND(#1658,.T.);
|
||||
#1665= IFCFACE((#1662));
|
||||
#1669= IFCPOLYLOOP((#510,#526,#530,#514));
|
||||
#1673= IFCFACEOUTERBOUND(#1669,.T.);
|
||||
#1676= IFCFACE((#1673));
|
||||
#1680= IFCPOLYLOOP((#514,#530,#534,#518));
|
||||
#1684= IFCFACEOUTERBOUND(#1680,.T.);
|
||||
#1687= IFCFACE((#1684));
|
||||
#1691= IFCPOLYLOOP((#522,#518,#534,#538));
|
||||
#1695= IFCFACEOUTERBOUND(#1691,.T.);
|
||||
#1698= IFCFACE((#1695));
|
||||
#1702= IFCPOLYLOOP((#526,#510,#522,#538));
|
||||
#1706= IFCFACEOUTERBOUND(#1702,.T.);
|
||||
#1709= IFCFACE((#1706));
|
||||
#1713= IFCPOLYLOOP((#530,#526,#538,#534));
|
||||
#1717= IFCFACEOUTERBOUND(#1713,.T.);
|
||||
#1720= IFCFACE((#1717));
|
||||
#1724= IFCCLOSEDSHELL((#1665,#1676,#1687,#1698,#1709,#1720));
|
||||
#1728= IFCFACETEDBREP(#1724);
|
||||
#1731= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1733= IFCPRESENTATIONSTYLEASSIGNMENT((#1731));
|
||||
#1735= IFCSURFACESTYLE($,.BOTH.,(#616));
|
||||
#1737= IFCPRESENTATIONSTYLEASSIGNMENT((#1735));
|
||||
#1739= IFCSTYLEDITEM(#1728,(#1737),$);
|
||||
#1743= IFCDIRECTION((6.1230318E-17,1.));
|
||||
#1747= IFCGEOMETRICREPRESENTATIONCONTEXT('Plan','Model',3,1.0000000E-5,#44,#1743);
|
||||
#1751= IFCSHAPEREPRESENTATION(#1747,'Body','Brep',(#612,#700,#786,#871,#957,#1043,#1128,#1214,#1300,#1385,#1471,#1557,#1642,#1728));
|
||||
#1757= IFCPRODUCTDEFINITIONSHAPE($,$,(#1751));
|
||||
#1761= IFCCARTESIANPOINT((203.55989,128.43353,0.));
|
||||
#1765= IFCAXIS2PLACEMENT3D(#1761,#36,#28);
|
||||
#1768= IFCLOCALPLACEMENT(#77,#1765);
|
||||
#1771= IFCRAILING('0zUE$sW7XAm9ihLEhV0q1w',#13,'',$,$,#1768,#1757,$,.HANDRAIL.);
|
||||
#1791= IFCPROPERTYSINGLEVALUE('ArchiCAD_UID',$,IFCINTEGER(235),$);
|
||||
#1795= IFCCOMPLEXPROPERTY('OBJECT',$,'ArchiCAD',(#1791));
|
||||
#1800= IFCPROPERTYSET('3KvQZMWnbAZeaaPcRQxbJ7',#13,'Graphisoft AC90 OBJECT','Graphisoft AC90',(#1795,#2119));
|
||||
#1805= IFCPROPERTYSINGLEVALUE('API_LIBNAME',$,IFCLABEL('Rail Post with Balusters'),$);
|
||||
#1809= IFCPROPERTYSINGLEVALUE('A',$,IFCNUMERICMEASURE(1.8),$);
|
||||
#1813= IFCPROPERTYSINGLEVALUE('B',$,IFCNUMERICMEASURE(0.05),$);
|
||||
#1817= IFCPROPERTYSINGLEVALUE('ZZYZX',$,IFCNUMERICMEASURE(0.9),$);
|
||||
#1821= IFCPROPERTYSINGLEVALUE('gs_detlevel_3D',$,IFCLABEL('Detailed'),$);
|
||||
#1825= IFCPROPERTYSINGLEVALUE('cfs',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1829= IFCPROPERTYSINGLEVALUE('ptyp',$,IFCLABEL('Straight'),$);
|
||||
#1833= IFCPROPERTYSINGLEVALUE('ani',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1837= IFCPROPERTYSINGLEVALUE('rom',$,IFCLABEL('Vertical'),$);
|
||||
#1841= IFCPROPERTYSINGLEVALUE('rmm',$,IFCLABEL('Vertical'),$);
|
||||
#1845= IFCPROPERTYSINGLEVALUE('LengthSize',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1849= IFCPROPERTYSINGLEVALUE('lra',$,IFCNUMERICMEASURE(1.5),$);
|
||||
#1853= IFCPROPERTYSINGLEVALUE('lrah',$,IFCNUMERICMEASURE(1.5),$);
|
||||
#1857= IFCPROPERTYSINGLEVALUE('hr',$,IFCNUMERICMEASURE(0.75),$);
|
||||
#1861= IFCPROPERTYSINGLEVALUE('hrPerp',$,IFCNUMERICMEASURE(0.75),$);
|
||||
#1865= IFCPROPERTYSINGLEVALUE('ab',$,IFCNUMERICMEASURE(1.5707963),$);
|
||||
#1869= IFCPROPERTYSINGLEVALUE('rb',$,IFCNUMERICMEASURE(1.),$);
|
||||
#1873= IFCPROPERTYSINGLEVALUE('ds',$,IFCNUMERICMEASURE(0.15),$);
|
||||
#1877= IFCPROPERTYSINGLEVALUE('dsPerp',$,IFCNUMERICMEASURE(0.15),$);
|
||||
#1881= IFCPROPERTYSINGLEVALUE('gs_AngleL',$,IFCNUMERICMEASURE(90.),$);
|
||||
#1885= IFCPROPERTYSINGLEVALUE('gs_AngleR',$,IFCNUMERICMEASURE(90.),$);
|
||||
#1889= IFCPROPERTYSINGLEVALUE('hrt',$,IFCLABEL('Rectangular'),$);
|
||||
#1893= IFCPROPERTYSINGLEVALUE('hrd',$,IFCNUMERICMEASURE(0.05),$);
|
||||
#1897= IFCPROPERTYSINGLEVALUE('hrw',$,IFCNUMERICMEASURE(0.05),$);
|
||||
#1902= IFCPROPERTYSINGLEVALUE('hrh',$,IFCNUMERICMEASURE(0.025),$);
|
||||
#1906= IFCPROPERTYSINGLEVALUE('hro',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1910= IFCPROPERTYSINGLEVALUE('hroL',$,IFCNUMERICMEASURE(0.15),$);
|
||||
#1914= IFCPROPERTYSINGLEVALUE('hroR',$,IFCNUMERICMEASURE(0.15),$);
|
||||
#1918= IFCPROPERTYSINGLEVALUE('hroLDiagonal',$,IFCNUMERICMEASURE(0.15),$);
|
||||
#1922= IFCPROPERTYSINGLEVALUE('hroRDiagonal',$,IFCNUMERICMEASURE(0.15),$);
|
||||
#1926= IFCPROPERTYSINGLEVALUE('pt',$,IFCLABEL('Rectangular'),$);
|
||||
#1930= IFCPROPERTYSINGLEVALUE('np',$,IFCNUMERICMEASURE(3.),$);
|
||||
#1934= IFCPROPERTYSINGLEVALUE('pd',$,IFCNUMERICMEASURE(0.035),$);
|
||||
#1938= IFCPROPERTYSINGLEVALUE('pw',$,IFCNUMERICMEASURE(0.035),$);
|
||||
#1942= IFCPROPERTYSINGLEVALUE('pth',$,IFCNUMERICMEASURE(0.035),$);
|
||||
#1946= IFCPROPERTYSINGLEVALUE('gs_PostBaseOverhang',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1950= IFCPROPERTYSINGLEVALUE('gs_PostBaseOverhangPerp',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1954= IFCPROPERTYSINGLEVALUE('bt',$,IFCLABEL('Rectangular'),$);
|
||||
#1958= IFCPROPERTYSINGLEVALUE('nb',$,IFCNUMERICMEASURE(4.),$);
|
||||
#1962= IFCPROPERTYSINGLEVALUE('bd',$,IFCNUMERICMEASURE(0.02),$);
|
||||
#1966= IFCPROPERTYSINGLEVALUE('bth',$,IFCNUMERICMEASURE(0.02),$);
|
||||
#1970= IFCPROPERTYSINGLEVALUE('bw',$,IFCNUMERICMEASURE(0.02),$);
|
||||
#1974= IFCPROPERTYSINGLEVALUE('res',$,IFCNUMERICMEASURE(32.),$);
|
||||
#1978= IFCPROPERTYSINGLEVALUE('rescs',$,IFCNUMERICMEASURE(12.),$);
|
||||
#1982= IFCPROPERTYSINGLEVALUE('gs_shadow',$,IFCNUMERICMEASURE(1.),$);
|
||||
#1986= IFCPROPERTYSINGLEVALUE('AC_show2DHotspotsIn3D',$,IFCNUMERICMEASURE(0.),$);
|
||||
#1990= IFCPROPERTYSINGLEVALUE('gs_cont_pen',$,IFCNUMERICMEASURE(2.),$);
|
||||
#1994= IFCPROPERTYSINGLEVALUE('gs_fill_type',$,IFCNUMERICMEASURE(65.),$);
|
||||
#1998= IFCPROPERTYSINGLEVALUE('gs_fill_pen',$,IFCNUMERICMEASURE(91.),$);
|
||||
#2002= IFCPROPERTYSINGLEVALUE('gs_back_pen',$,IFCNUMERICMEASURE(91.),$);
|
||||
#2006= IFCPROPERTYSINGLEVALUE('sa',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2010= IFCPROPERTYSINGLEVALUE('al',$,IFCNUMERICMEASURE(6.),$);
|
||||
#2014= IFCPROPERTYSINGLEVALUE('fmat',$,IFCNUMERICMEASURE(15.),$);
|
||||
#2018= IFCPROPERTYSINGLEVALUE('pmat',$,IFCNUMERICMEASURE(15.),$);
|
||||
#2022= IFCPROPERTYSINGLEVALUE('bmat',$,IFCNUMERICMEASURE(15.),$);
|
||||
#2026= IFCPROPERTYSINGLEVALUE('gs_list_cost',$,IFCNUMERICMEASURE(0.),$);
|
||||
#2031= IFCPROPERTYSINGLEVALUE('gs_list_manufacturer',$,IFCLABEL(''),$);
|
||||
#2035= IFCPROPERTYSINGLEVALUE('gs_list_note',$,IFCLABEL(''),$);
|
||||
#2039= IFCPROPERTYSINGLEVALUE('gs_list_location',$,IFCLABEL(''),$);
|
||||
#2043= IFCPROPERTYSINGLEVALUE('gs_list_accessories',$,IFCLABEL(''),$);
|
||||
#2047= IFCPROPERTYSINGLEVALUE('FM_Type',$,IFCLABEL('Others'),$);
|
||||
#2051= IFCPROPERTYSINGLEVALUE('FM_InventoryNumber',$,IFCLABEL(''),$);
|
||||
#2055= IFCPROPERTYSINGLEVALUE('FM_SerialNumber',$,IFCLABEL(''),$);
|
||||
#2059= IFCPROPERTYSINGLEVALUE('FM_ProductionYear',$,IFCLABEL(''),$);
|
||||
#2063= IFCPROPERTYSINGLEVALUE('FM_ObjectWeight',$,IFCNUMERICMEASURE(0.),$);
|
||||
#2067= IFCPROPERTYSINGLEVALUE('FM_ObjectWeightUnit',$,IFCLABEL('kg'),$);
|
||||
#2071= IFCPROPERTYSINGLEVALUE('gs_list_custom1',$,IFCLABEL(''),$);
|
||||
#2075= IFCPROPERTYSINGLEVALUE('gs_list_custom2',$,IFCLABEL(''),$);
|
||||
#2079= IFCPROPERTYSINGLEVALUE('gs_list_custom3',$,IFCLABEL(''),$);
|
||||
#2083= IFCPROPERTYSINGLEVALUE('gs_list_custom4',$,IFCLABEL(''),$);
|
||||
#2087= IFCPROPERTYSINGLEVALUE('gs_list_custom5',$,IFCLABEL(''),$);
|
||||
#2091= IFCPROPERTYSINGLEVALUE('gs_detlevel_3d_m',$,IFCNUMERICMEASURE(2.),$);
|
||||
#2095= IFCPROPERTYSINGLEVALUE('ptyp_m',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2099= IFCPROPERTYSINGLEVALUE('rom_m',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2103= IFCPROPERTYSINGLEVALUE('rmm_m',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2107= IFCPROPERTYSINGLEVALUE('hrt_m',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2111= IFCPROPERTYSINGLEVALUE('pt_m',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2115= IFCPROPERTYSINGLEVALUE('bt_m',$,IFCNUMERICMEASURE(1.),$);
|
||||
#2119= IFCCOMPLEXPROPERTY('LIBPARAM',$,'ArchiCAD',(#1805,#1809,#1813,#1817,#1821,#1825,#1829,#1833,#1837,#1841,#1845,#1849,#1853,#1857,#1861,#1865,#1869,#1873,#1877,#1881,#1885,#1889,#1893,#1897,#1902,#1906,#1910,#1914,#1918,#1922,#1926,#1930,#1934,#1938,#1942,#1946,#1950,#1954,#1958,#1962,#1966,#1970,#1974,#1978,#1982,#1986,#1990,#1994,#1998,#2002,#2006,#2010,#2014,#2018,#2022,#2026,#2031,#2035,#2039,#2043,#2047,#2051,#2055,#2059,#2063,#2067,#2071,#2075,#2079,#2083,#2087,#2091,#2095,#2099,#2103,#2107,#2111,#2115));
|
||||
#2125= IFCRELDEFINESBYPROPERTIES('3kqdyy5N1ETPObqZJVJPbH',#13,'ArchiCAD','ExtendedProperties',(#1771),#1800);
|
||||
#2127= IFCPROPERTYSINGLEVALUE('Layername',$,IFCLABEL('Furniture & Equipment'),$);
|
||||
#2131= IFCPROPERTYSINGLEVALUE('Red',$,IFCINTEGER(2),$);
|
||||
#2135= IFCPROPERTYSINGLEVALUE('Green',$,IFCINTEGER(157),$);
|
||||
#2139= IFCPROPERTYSINGLEVALUE('Blue',$,IFCINTEGER(33),$);
|
||||
#2143= IFCCOMPLEXPROPERTY('Color',$,'Color',(#2131,#2135,#2139));
|
||||
#2148= IFCPROPERTYSET('2Sp8gWvUj9yBMn9klggsIS',#13,'PSet_Draughting',$,(#2127,#2143));
|
||||
#2153= IFCRELDEFINESBYPROPERTIES('1PVkHJilvBSxvjXlwjL27x',#13,$,$,(#1771),#2148);
|
||||
#2155= IFCMATERIAL('50 %');
|
||||
#2159= IFCRELASSOCIATESMATERIAL('1GhOPX9UHE9fErZyyZyEzx',#13,$,$,(#1771),#2155);
|
||||
#2161= IFCSLAB('1_g0UhnsD11uLx01z1JWyj',#13,'Slab-004',$,$,#2224,#2213,$,.FLOOR.);
|
||||
#2180= IFCCARTESIANPOINT((0.,0.));
|
||||
#2184= IFCCARTESIANPOINT((1939.3575,0.));
|
||||
#2188= IFCCARTESIANPOINT((1939.3575,945.02591));
|
||||
#2192= IFCCARTESIANPOINT((0.,945.02591));
|
||||
#2196= IFCPOLYLINE((#2180,#2184,#2188,#2192,#2180));
|
||||
#2200= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,$,#2196);
|
||||
#2201= IFCAXIS2PLACEMENT3D(#40,#36,#28);
|
||||
#2204= IFCEXTRUDEDAREASOLID(#2200,#2201,#36,300.);
|
||||
#2207= IFCSHAPEREPRESENTATION(#51,'Body','SweptSolid',(#2204));
|
||||
#2213= IFCPRODUCTDEFINITIONSHAPE($,$,(#2207));
|
||||
#2217= IFCCARTESIANPOINT((0.,0.,-300.));
|
||||
#2221= IFCAXIS2PLACEMENT3D(#2217,#36,#28);
|
||||
#2224= IFCLOCALPLACEMENT(#77,#2221);
|
||||
#2227= IFCAXIS2PLACEMENT3D(#40,#36,#28);
|
||||
#2230= IFCMATERIAL('Wood');
|
||||
#2233= IFCMATERIALLAYER(#2230,20.,.U.);
|
||||
#2235= IFCMATERIAL('Lightweight Concrete');
|
||||
#2238= IFCMATERIALLAYER(#2235,50.,.U.);
|
||||
#2240= IFCMATERIAL('Batt Insulation');
|
||||
#2243= IFCMATERIALLAYER(#2240,30.,.U.);
|
||||
#2245= IFCMATERIAL('Structural Concrete');
|
||||
#2248= IFCMATERIALLAYER(#2245,200.,.U.);
|
||||
#2250= IFCMATERIALLAYERSET((#2233,#2238,#2243,#2248),'concrete floor, insul+parquet');
|
||||
#2252= IFCMATERIALLAYERSETUSAGE(#2250,.AXIS3.,.NEGATIVE.,300.);
|
||||
#2253= IFCRELASSOCIATESMATERIAL('3eTSGAwqf69xWG27aIAN0$',#13,$,$,(#2161),#2252);
|
||||
#2255= IFCPROPERTYSINGLEVALUE('ArchiCAD_UID',$,IFCINTEGER(237),$);
|
||||
#2259= IFCCOMPLEXPROPERTY('SLAB',$,'ArchiCAD',(#2255));
|
||||
#2264= IFCPROPERTYSET('1EehdkAGTAR8C1OYr_OYbq',#13,'Graphisoft AC90 SLAB','Graphisoft AC90',(#2259));
|
||||
#2269= IFCRELDEFINESBYPROPERTIES('2fg$8mogD3RuMTkPATPAUY',#13,'ArchiCAD','ExtendedProperties',(#2161),#2264);
|
||||
#2271= IFCPROPERTYSINGLEVALUE('Layername',$,IFCLABEL('Floors'),$);
|
||||
#2275= IFCPROPERTYSINGLEVALUE('Red',$,IFCINTEGER(204),$);
|
||||
#2279= IFCPROPERTYSINGLEVALUE('Green',$,IFCINTEGER(101),$);
|
||||
#2283= IFCPROPERTYSINGLEVALUE('Blue',$,IFCINTEGER(0),$);
|
||||
#2288= IFCCOMPLEXPROPERTY('Color',$,'Color',(#2275,#2279,#2283));
|
||||
#2293= IFCPROPERTYSET('1iB4HrvuP5BQ0yWb3LjOaM',#13,'PSet_Draughting',$,(#2271,#2288));
|
||||
#2298= IFCRELDEFINESBYPROPERTIES('2dvo0puPT2wPMPbhcPM1zN',#13,$,$,(#2161),#2293);
|
||||
#2300= IFCRELCONTAINEDINSPATIALSTRUCTURE('2fZhnPphjAfunQkj2tDz6W',#13,'BuildingStoreyContainer','BuildingStoreyContainer for Building Elements',(#1771,#2161),#80);
|
||||
#2302= IFCRELAGGREGATES('1$$MJTMxn3_8AeVGnO8szo',#13,'BuildingContainer','BuildingContainer for BuildigStories',#64,(#80));
|
||||
#2304= IFCRELAGGREGATES('1c7zmztwX08w$enkKE9lJ6',#13,'ProjectContainer','ProjectContainer for Sites',#54,(#64));
|
||||
ENDSEC;
|
||||
|
||||
END-ISO-10303-21;
|
||||
@@ -0,0 +1,421 @@
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('IFC2X3.exp'),'2;1');
|
||||
FILE_NAME('C:\\TeklaStructuresModels\\Acis_Sat\\plate_steel_example-tek_1fix.ifc','2006-05-12T10:07:38',('Steel2 macro version:12.0 Build:179423,2.5.2006'),('Structural Designer'),'EXPRESS Data Manager version:20040806','Tekla Structures 12.0','');
|
||||
FILE_SCHEMA(('IFC2X3'));
|
||||
ENDSEC;
|
||||
|
||||
DATA;
|
||||
#1= IFCPERSON('TEKLAAD/lli','Undefined',$,$,$,$,$,$);
|
||||
#3= IFCORGANIZATION($,'Tekla Corporation',$,$,$);
|
||||
#7= IFCPERSONANDORGANIZATION(#1,#3,$);
|
||||
#8= IFCAPPLICATION(#3,'12.0','Tekla Structures','Multi material modeling');
|
||||
#9= IFCOWNERHISTORY(#7,#8,$,.ADDED.,$,$,$,1147417657);
|
||||
#10= IFCSIUNIT(*,.LENGTHUNIT.,.MILLI.,.METRE.);
|
||||
#11= IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.);
|
||||
#12= IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.);
|
||||
#13= IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.);
|
||||
#14= IFCSIUNIT(*,.SOLIDANGLEUNIT.,$,.STERADIAN.);
|
||||
#15= IFCSIUNIT(*,.MASSUNIT.,.KILO.,.GRAM.);
|
||||
#16= IFCSIUNIT(*,.TIMEUNIT.,$,.SECOND.);
|
||||
#17= IFCSIUNIT(*,.THERMODYNAMICTEMPERATUREUNIT.,$,.DEGREE_CELSIUS.);
|
||||
#18= IFCSIUNIT(*,.LUMINOUSINTENSITYUNIT.,$,.LUMEN.);
|
||||
#19= IFCUNITASSIGNMENT((#10,#11,#12,#13,#14,#15,#16,#17,#18));
|
||||
#21= IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#25= IFCDIRECTION((1.,0.,0.));
|
||||
#29= IFCDIRECTION((0.,1.,0.));
|
||||
#33= IFCDIRECTION((0.,0.,1.));
|
||||
#37= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#40= IFCGEOMETRICREPRESENTATIONCONTEXT('Plan','Design',3,1.0000000E-5,#37,$);
|
||||
#43= IFCGEOMETRICREPRESENTATIONCONTEXT('Plan','Sketch',3,1.0000000E-5,#37,$);
|
||||
#46= IFCPROJECT('2gPUQOiNz2FR1H6lWQ8j0k',#9,'PROJ: NAME','Description','Object type','LongName','Phase',(#40,#43),#19);
|
||||
#53= IFCMATERIAL('A36');
|
||||
#56= IFCMATERIAL('A992');
|
||||
#59= IFCMATERIAL('A500-GR.B');
|
||||
#62= IFCPERSON('TEKLAAD/chke','Undefined',$,$,$,$,$,$);
|
||||
#64= IFCPERSONANDORGANIZATION(#62,#3,$);
|
||||
#65= IFCOWNERHISTORY(#64,#8,$,.ADDED.,$,$,$,1147417657);
|
||||
#66= IFCSITE('1_WapmNXfFdOqQ3garaDJn',#65,'Undefined',$,$,$,$,$,.ELEMENT.,$,$,$,$,$);
|
||||
#76= IFCRELAGGREGATES('36yaCMhuT2DxfpF3ieGira',#65,$,$,#46,(#66));
|
||||
#78= IFCBUILDING('2iHnVT4$n9JQE18R_2cJEI',#65,'Undefined',$,$,$,$,$,.ELEMENT.,$,$,$);
|
||||
#88= IFCRELAGGREGATES('0A543zcq1Fdv_lsrHHX8Kv',#65,$,$,#66,(#78));
|
||||
#90= IFCBUILDINGSTOREY('0UguZM0$L8L9OUA114_ZEd',#65,'Undefined',$,$,$,$,$,.ELEMENT.,$);
|
||||
#100= IFCRELAGGREGATES('09$Ux3Y999qBeEKV8wCsfA',#65,$,$,#78,(#90));
|
||||
#102= IFCPOLYLINE((#106,#111,#115,#119,#123,#127,#131));
|
||||
#106= IFCCARTESIANPOINT((0.,318.8494));
|
||||
#111= IFCCARTESIANPOINT((95.250002,318.8494));
|
||||
#115= IFCCARTESIANPOINT((120.65,293.4494));
|
||||
#119= IFCCARTESIANPOINT((120.65,25.4));
|
||||
#123= IFCCARTESIANPOINT((95.250002,0.));
|
||||
#127= IFCCARTESIANPOINT((0.,0.));
|
||||
#131= IFCCARTESIANPOINT((0.,318.8494));
|
||||
#135= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PL19.1',#102);
|
||||
#136= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#139= IFCEXTRUDEDAREASOLID(#135,#136,#33,19.1);
|
||||
#142= IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#146= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#139));
|
||||
#152= IFCPRODUCTDEFINITIONSHAPE($,$,(#146));
|
||||
#156= IFCCARTESIANPOINT((5240.3064,7493.,-337.7327));
|
||||
#160= IFCDIRECTION((1.,0.,0.));
|
||||
#164= IFCDIRECTION((0.,1.,0.));
|
||||
#168= IFCAXIS2PLACEMENT3D(#156,#160,#164);
|
||||
#171= IFCLOCALPLACEMENT($,#168);
|
||||
#174= IFCPLATE('13c6Dt0003iJ4nCpGmDZ4q',#65,'PLATE','PL19.1',$,#171,#152,$);
|
||||
#193= IFCRELCONTAINEDINSPATIALSTRUCTURE('0119IaMyb8cxCzo7l7Qnbw',#65,$,$,(#174,#268,#350,#434,#521,#633,#720,#808,#895,#982,#1078,#1193,#1385,#1473),#90);
|
||||
#195= IFCSTRUCTURALPROFILEPROPERTIES('PL19.1',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#196= IFCPOLYLINE((#200,#204,#208,#212,#216,#220,#224));
|
||||
#200= IFCCARTESIANPOINT((0.,293.4494));
|
||||
#204= IFCCARTESIANPOINT((25.4,318.8494));
|
||||
#208= IFCCARTESIANPOINT((120.65,318.8494));
|
||||
#212= IFCCARTESIANPOINT((120.65,0.));
|
||||
#216= IFCCARTESIANPOINT((25.4,0.));
|
||||
#220= IFCCARTESIANPOINT((0.,25.4));
|
||||
#224= IFCCARTESIANPOINT((0.,293.4494));
|
||||
#228= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PL19.1',#196);
|
||||
#229= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#232= IFCEXTRUDEDAREASOLID(#228,#229,#33,19.1);
|
||||
#235= IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#240= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#232));
|
||||
#246= IFCPRODUCTDEFINITIONSHAPE($,$,(#240));
|
||||
#250= IFCCARTESIANPOINT((5240.3064,7626.35,-337.7327));
|
||||
#254= IFCDIRECTION((1.,0.,0.));
|
||||
#258= IFCDIRECTION((0.,1.,0.));
|
||||
#262= IFCAXIS2PLACEMENT3D(#250,#254,#258);
|
||||
#265= IFCLOCALPLACEMENT($,#262);
|
||||
#268= IFCPLATE('13c6Dt0003gZ4nCpGmDZ4q',#65,'PLATE','PL19.1',$,#265,#246,$);
|
||||
#287= IFCPOLYLINE((#291,#295,#299,#303,#307));
|
||||
#291= IFCCARTESIANPOINT((0.,0.));
|
||||
#295= IFCCARTESIANPOINT((0.,318.45248));
|
||||
#299= IFCCARTESIANPOINT((99.695007,318.45248));
|
||||
#303= IFCCARTESIANPOINT((99.695007,0.));
|
||||
#307= IFCCARTESIANPOINT((0.,0.));
|
||||
#311= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PL9.5',#287);
|
||||
#312= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#315= IFCEXTRUDEDAREASOLID(#311,#312,#33,9.5);
|
||||
#318= IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#322= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#315));
|
||||
#328= IFCPRODUCTDEFINITIONSHAPE($,$,(#322));
|
||||
#332= IFCCARTESIANPOINT((4411.98,7492.5555,-342.9125));
|
||||
#336= IFCDIRECTION((0.,0.,-1.));
|
||||
#340= IFCDIRECTION((0.,1.,0.));
|
||||
#344= IFCAXIS2PLACEMENT3D(#332,#336,#340);
|
||||
#347= IFCLOCALPLACEMENT($,#344);
|
||||
#350= IFCPLATE('13c6Dt0002ip4nCpGmDZ4o',#65,'PLATE','PL9.5',$,#347,#328,$);
|
||||
#370= IFCSTRUCTURALPROFILEPROPERTIES('PL9.5',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#371= IFCPOLYLINE((#375,#379,#383,#387,#391));
|
||||
#375= IFCCARTESIANPOINT((0.,0.));
|
||||
#379= IFCCARTESIANPOINT((0.,318.45248));
|
||||
#383= IFCCARTESIANPOINT((99.695007,318.45248));
|
||||
#387= IFCCARTESIANPOINT((99.695007,0.));
|
||||
#391= IFCCARTESIANPOINT((0.,0.));
|
||||
#395= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PL9.5',#371);
|
||||
#396= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#399= IFCEXTRUDEDAREASOLID(#395,#396,#33,9.5);
|
||||
#402= IFCCARTESIANPOINT((0.,0.,0.));
|
||||
#406= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#399));
|
||||
#412= IFCPRODUCTDEFINITIONSHAPE($,$,(#406));
|
||||
#416= IFCCARTESIANPOINT((4411.98,7492.5555,-28.5875));
|
||||
#420= IFCDIRECTION((0.,0.,-1.));
|
||||
#424= IFCDIRECTION((0.,1.,0.));
|
||||
#428= IFCAXIS2PLACEMENT3D(#416,#420,#424);
|
||||
#431= IFCLOCALPLACEMENT($,#428);
|
||||
#434= IFCPLATE('13c6Dt0002hp4nCpGmDZ4o',#65,'PLATE','PL9.5',$,#431,#412,$);
|
||||
#453= IFCCARTESIANPOINT((0.,0.));
|
||||
#457= IFCDIRECTION((1.,0.));
|
||||
#461= IFCAXIS2PLACEMENT2D(#453,#457);
|
||||
#464= IFCRECTANGLEPROFILEDEF(.AREA.,$,#461,9.5,234.9);
|
||||
#465= IFCDIRECTION((0.,0.,-1.));
|
||||
#469= IFCDIRECTION((-1.,0.,0.));
|
||||
#473= IFCAXIS2PLACEMENT3D(#21,#469,#33);
|
||||
#476= IFCEXTRUDEDAREASOLID(#464,#473,#465,304.8);
|
||||
#479= IFCCARTESIANPOINT((0.,-117.45,-4.75));
|
||||
#483= IFCBOUNDINGBOX(#479,304.8,234.9,9.5);
|
||||
#486= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#476));
|
||||
#492= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#483));
|
||||
#499= IFCPRODUCTDEFINITIONSHAPE($,$,(#486,#492));
|
||||
#503= IFCCARTESIANPOINT((4581.8225,7496.2,-342.9));
|
||||
#507= IFCDIRECTION((-1.,0.,0.));
|
||||
#511= IFCDIRECTION((0.,0.,1.));
|
||||
#515= IFCAXIS2PLACEMENT3D(#503,#507,#511);
|
||||
#518= IFCLOCALPLACEMENT($,#515);
|
||||
#521= IFCCOLUMN('13c6Dt0002c34nCpGmDZ4o',#65,'PLATE','PL9.5X234.9',$,#518,#499,$);
|
||||
#540= IFCSTRUCTURALPROFILEPROPERTIES('PL9.5X234.9',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#541= IFCCARTESIANPOINT((0.,0.));
|
||||
#545= IFCDIRECTION((1.,0.));
|
||||
#549= IFCAXIS2PLACEMENT2D(#541,#545);
|
||||
#552= IFCISHAPEPROFILEDEF(.AREA.,$,#549,177.41901,402.84399,9.5249996,10.922,17.653);
|
||||
#553= IFCDIRECTION((0.,0.,-1.));
|
||||
#557= IFCDIRECTION((-1.,0.,0.));
|
||||
#561= IFCAXIS2PLACEMENT3D(#21,#557,#33);
|
||||
#564= IFCEXTRUDEDAREASOLID(#552,#561,#553,2278.7992);
|
||||
#567= IFCCARTESIANPOINT((0.,-201.422,-88.709503));
|
||||
#571= IFCBOUNDINGBOX(#567,778.79918,402.84399,177.41901);
|
||||
#574= IFCCARTESIANPOINT((778.79918,301.422,0.));
|
||||
#578= IFCDIRECTION((1.,0.,0.));
|
||||
#582= IFCDIRECTION((0.,0.,-1.));
|
||||
#586= IFCAXIS2PLACEMENT3D(#574,#578,#582);
|
||||
#589= IFCPLANE(#586);
|
||||
#592= IFCHALFSPACESOLID(#589,.F.);
|
||||
#595= IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#564,#592);
|
||||
#598= IFCSHAPEREPRESENTATION(#40,'Body','Clipping',(#595));
|
||||
#604= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#571));
|
||||
#610= IFCPRODUCTDEFINITIONSHAPE($,$,(#598,#604));
|
||||
#614= IFCCARTESIANPOINT((4572.,6688.3563,-201.422));
|
||||
#618= IFCDIRECTION((1.,0.,0.));
|
||||
#623= IFCDIRECTION((0.,1.,0.));
|
||||
#627= IFCAXIS2PLACEMENT3D(#614,#618,#623);
|
||||
#630= IFCLOCALPLACEMENT($,#627);
|
||||
#633= IFCBEAM('13c6Dt0001iZ4nCpGmDZ0v',#65,'BEAM','W16X36',$,#630,#610,$);
|
||||
#652= IFCSTRUCTURALPROFILEPROPERTIES('W16X36',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#653= IFCCARTESIANPOINT((0.,0.));
|
||||
#657= IFCDIRECTION((1.,0.));
|
||||
#661= IFCAXIS2PLACEMENT2D(#653,#657);
|
||||
#664= IFCLSHAPEPROFILEDEF(.AREA.,$,#661,101.6,88.900002,9.5249996,9.525,$,$,$,$);
|
||||
#665= IFCDIRECTION((0.,0.,-1.));
|
||||
#669= IFCDIRECTION((-1.,0.,0.));
|
||||
#673= IFCAXIS2PLACEMENT3D(#21,#669,#33);
|
||||
#676= IFCEXTRUDEDAREASOLID(#664,#673,#665,254.);
|
||||
#679= IFCCARTESIANPOINT((0.,-50.799999,-44.450001));
|
||||
#683= IFCBOUNDINGBOX(#679,254.,101.6,88.900002);
|
||||
#686= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#676));
|
||||
#692= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#683));
|
||||
#698= IFCPRODUCTDEFINITIONSHAPE($,$,(#686,#692));
|
||||
#702= IFCCARTESIANPOINT((4794.758,7562.85,-298.45));
|
||||
#706= IFCDIRECTION((1.,0.,0.));
|
||||
#710= IFCDIRECTION((0.,0.,1.));
|
||||
#714= IFCAXIS2PLACEMENT3D(#702,#706,#710);
|
||||
#717= IFCLOCALPLACEMENT($,#714);
|
||||
#720= IFCCOLUMN('13c6Dt0001GZ4nCpGmDZ0u',#65,'ANGLE','L4X3-1/2X3/8',$,#717,#698,$);
|
||||
#739= IFCSTRUCTURALPROFILEPROPERTIES('L4X3-1/2X3/8',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#740= IFCCARTESIANPOINT((0.,0.));
|
||||
#744= IFCDIRECTION((1.,0.));
|
||||
#748= IFCAXIS2PLACEMENT2D(#740,#744);
|
||||
#752= IFCLSHAPEPROFILEDEF(.AREA.,$,#748,101.6,88.900002,9.5249996,9.525,$,$,$,$);
|
||||
#753= IFCDIRECTION((0.,0.,-1.));
|
||||
#757= IFCDIRECTION((-1.,0.,0.));
|
||||
#761= IFCAXIS2PLACEMENT3D(#21,#757,#33);
|
||||
#764= IFCEXTRUDEDAREASOLID(#752,#761,#753,254.);
|
||||
#767= IFCCARTESIANPOINT((0.,-50.799999,-44.450001));
|
||||
#771= IFCBOUNDINGBOX(#767,254.,101.6,88.900002);
|
||||
#774= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#764));
|
||||
#780= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#771));
|
||||
#786= IFCPRODUCTDEFINITIONSHAPE($,$,(#774,#780));
|
||||
#790= IFCCARTESIANPOINT((4794.758,7677.15,-44.45));
|
||||
#794= IFCDIRECTION((1.,0.,0.));
|
||||
#798= IFCDIRECTION((0.,0.,-1.));
|
||||
#802= IFCAXIS2PLACEMENT3D(#790,#794,#798);
|
||||
#805= IFCLOCALPLACEMENT($,#802);
|
||||
#808= IFCBEAM('13c6Dt0001FZ4nCpGmDZ0u',#65,'ANGLE','L4X3-1/2X3/8',$,#805,#786,$);
|
||||
#827= IFCCARTESIANPOINT((0.,0.));
|
||||
#831= IFCDIRECTION((1.,0.));
|
||||
#835= IFCAXIS2PLACEMENT2D(#827,#831);
|
||||
#838= IFCLSHAPEPROFILEDEF(.AREA.,$,#835,101.6,101.60025,9.5249996,9.525,$,$,$,$);
|
||||
#839= IFCDIRECTION((0.,0.,-1.));
|
||||
#843= IFCDIRECTION((-1.,0.,0.));
|
||||
#847= IFCAXIS2PLACEMENT3D(#21,#843,#33);
|
||||
#850= IFCEXTRUDEDAREASOLID(#838,#847,#839,292.1);
|
||||
#853= IFCCARTESIANPOINT((0.,-50.799999,-50.800125));
|
||||
#857= IFCBOUNDINGBOX(#853,292.1,101.6,101.60025);
|
||||
#860= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#850));
|
||||
#866= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#857));
|
||||
#872= IFCPRODUCTDEFINITIONSHAPE($,$,(#860,#866));
|
||||
#876= IFCCARTESIANPOINT((4915.409,7564.4494,50.799999));
|
||||
#881= IFCDIRECTION((0.,-1.,0.));
|
||||
#885= IFCDIRECTION((1.,0.,0.));
|
||||
#889= IFCAXIS2PLACEMENT3D(#876,#881,#885);
|
||||
#892= IFCLOCALPLACEMENT($,#889);
|
||||
#895= IFCBEAM('13c6Dt0000F34nCpGmDZ0s',#65,'BEAM','L4X4X3/8',$,#892,#872,$);
|
||||
#914= IFCSTRUCTURALPROFILEPROPERTIES('L4X4X3/8',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#915= IFCCARTESIANPOINT((0.,0.));
|
||||
#919= IFCDIRECTION((1.,0.));
|
||||
#923= IFCAXIS2PLACEMENT2D(#915,#919);
|
||||
#926= IFCLSHAPEPROFILEDEF(.AREA.,$,#923,101.6,101.60025,9.5249996,9.525,$,$,$,$);
|
||||
#927= IFCDIRECTION((0.,0.,-1.));
|
||||
#931= IFCDIRECTION((-1.,0.,0.));
|
||||
#935= IFCAXIS2PLACEMENT3D(#21,#931,#33);
|
||||
#938= IFCEXTRUDEDAREASOLID(#926,#935,#927,330.2);
|
||||
#941= IFCCARTESIANPOINT((0.,-50.799999,-50.800125));
|
||||
#945= IFCBOUNDINGBOX(#941,330.2,101.6,101.60025);
|
||||
#948= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#938));
|
||||
#954= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#945));
|
||||
#960= IFCPRODUCTDEFINITIONSHAPE($,$,(#948,#954));
|
||||
#964= IFCCARTESIANPOINT((4801.108,7564.4494,495.301));
|
||||
#968= IFCDIRECTION((0.,-1.,0.));
|
||||
#972= IFCDIRECTION((0.,0.,-1.));
|
||||
#976= IFCAXIS2PLACEMENT3D(#964,#968,#972);
|
||||
#979= IFCLOCALPLACEMENT($,#976);
|
||||
#982= IFCBEAM('13c6Dt00006J4nCpGmDZ0s',#65,'BEAM','L4X4X3/8',$,#979,#960,$);
|
||||
#1001= IFCPOLYLINE((#1006,#1010,#1014,#1018,#1022,#1026));
|
||||
#1006= IFCCARTESIANPOINT((0.,0.));
|
||||
#1010= IFCCARTESIANPOINT((-0.001,486.84845));
|
||||
#1014= IFCCARTESIANPOINT((369.07135,486.84845));
|
||||
#1018= IFCCARTESIANPOINT((512.75543,343.16437));
|
||||
#1022= IFCCARTESIANPOINT((512.75543,0.));
|
||||
#1026= IFCCARTESIANPOINT((0.,0.));
|
||||
#1030= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PL9.5',#1001);
|
||||
#1031= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#1034= IFCEXTRUDEDAREASOLID(#1030,#1031,#33,9.5);
|
||||
#1037= IFCCARTESIANPOINT((-0.0010532137,0.,-4.75));
|
||||
#1041= IFCBOUNDINGBOX(#1037,486.8495,512.75614,9.5);
|
||||
#1044= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#1034));
|
||||
#1050= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#1041));
|
||||
#1056= IFCPRODUCTDEFINITIONSHAPE($,$,(#1044,#1050));
|
||||
#1060= IFCCARTESIANPOINT((4763.008,7615.262,12.701));
|
||||
#1064= IFCDIRECTION((0.,1.,0.));
|
||||
#1068= IFCDIRECTION((0.,0.,1.));
|
||||
#1072= IFCAXIS2PLACEMENT3D(#1060,#1064,#1068);
|
||||
#1075= IFCLOCALPLACEMENT($,#1072);
|
||||
#1078= IFCPLATE('13c6Dt00005J4nCpGmDZ0s',#65,'PLATE','PL9.5',$,#1075,#1056,$);
|
||||
#1097= IFCCARTESIANPOINT((0.,0.));
|
||||
#1101= IFCDIRECTION((1.,0.));
|
||||
#1105= IFCAXIS2PLACEMENT2D(#1097,#1101);
|
||||
#1108= IFCRECTANGLEHOLLOWPROFILEDEF(.AREA.,$,#1105,152.39999,152.39999,9.5249996,9.5250004,19.05);
|
||||
#1109= IFCDIRECTION((0.,0.,-1.));
|
||||
#1113= IFCDIRECTION((-1.,0.,0.));
|
||||
#1117= IFCAXIS2PLACEMENT3D(#1130,#1113,#33);
|
||||
#1120= IFCEXTRUDEDAREASOLID(#1108,#1117,#1109,2177.4228);
|
||||
#1123= IFCCARTESIANPOINT((-1.2141754E-10,-76.199997,-76.199997));
|
||||
#1127= IFCBOUNDINGBOX(#1123,677.4228,152.39999,152.39999);
|
||||
#1130= IFCCARTESIANPOINT((-1500.,0.,0.));
|
||||
#1135= IFCCARTESIANPOINT((-1.0913936E-10,-9.0949470E-12,4.7379999));
|
||||
#1139= IFCDIRECTION((-1.,-1.6052583E-13,0.));
|
||||
#1143= IFCDIRECTION((-1.6052583E-13,1.,0.));
|
||||
#1147= IFCAXIS2PLACEMENT3D(#1135,#1139,#1143);
|
||||
#1150= IFCPLANE(#1147);
|
||||
#1153= IFCHALFSPACESOLID(#1150,.F.);
|
||||
#1156= IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#1120,#1153);
|
||||
#1159= IFCSHAPEREPRESENTATION(#40,'Body','Clipping',(#1156));
|
||||
#1165= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#1127));
|
||||
#1171= IFCPRODUCTDEFINITIONSHAPE($,$,(#1159,#1165));
|
||||
#1175= IFCCARTESIANPOINT((5007.3895,7620.,282.98953));
|
||||
#1179= IFCDIRECTION((0.,-1.,0.));
|
||||
#1183= IFCDIRECTION((0.70710678,0.,0.70710678));
|
||||
#1187= IFCAXIS2PLACEMENT3D(#1175,#1179,#1183);
|
||||
#1190= IFCLOCALPLACEMENT($,#1187);
|
||||
#1193= IFCBEAM('13c6Dt00003p4nCpGmDZ0r',#65,'BRACE','TS6X6X3/8',$,#1190,#1171,$);
|
||||
#1212= IFCCARTESIANPOINT((5153.6546,7620.012,307.34937));
|
||||
#1216= IFCDIRECTION((0.,-1.,0.));
|
||||
#1220= IFCDIRECTION((-0.70710678,0.,0.70710678));
|
||||
#1224= IFCAXIS2PLACEMENT3D(#1212,#1216,#1220);
|
||||
#1227= IFCLOCALPLACEMENT($,#1224);
|
||||
#1230= IFCCARTESIANPOINT((0.,0.));
|
||||
#1234= IFCDIRECTION((1.,0.));
|
||||
#1238= IFCAXIS2PLACEMENT2D(#1230,#1234);
|
||||
#1241= IFCRECTANGLEPROFILEDEF(.AREA.,$,#1238,9.5,266.7);
|
||||
#1242= IFCDIRECTION((0.,0.,-1.));
|
||||
#1246= IFCDIRECTION((-1.,0.,0.));
|
||||
#1250= IFCAXIS2PLACEMENT3D(#21,#1246,#33);
|
||||
#1253= IFCEXTRUDEDAREASOLID(#1241,#1250,#1242,172.39997);
|
||||
#1256= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#1253));
|
||||
#1263= IFCPRODUCTDEFINITIONSHAPE($,$,(#1256));
|
||||
#1267= IFCOPENINGELEMENT('13c6Dt0000Ip4nCpGmDZ0s',#65,$,$,$,#1227,#1263,$);
|
||||
#1288= IFCRELVOIDSELEMENT('3gz_1FcMHExhEMJzH8zl$M',#65,$,$,#1193,#1267);
|
||||
#1289= IFCSTRUCTURALPROFILEPROPERTIES('TS6X6X3/8',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#1290= IFCCARTESIANPOINT((0.,0.));
|
||||
#1294= IFCDIRECTION((1.,0.));
|
||||
#1298= IFCAXIS2PLACEMENT2D(#1290,#1294);
|
||||
#1301= IFCISHAPEPROFILEDEF(.AREA.,$,#1298,254.88901,356.616,12.7,18.288,21.3995);
|
||||
#1302= IFCDIRECTION((0.,0.,-1.));
|
||||
#1306= IFCDIRECTION((-1.,0.,0.));
|
||||
#1310= IFCAXIS2PLACEMENT3D(#1323,#1306,#33);
|
||||
#1313= IFCEXTRUDEDAREASOLID(#1301,#1310,#1302,2768.2595);
|
||||
#1316= IFCCARTESIANPOINT((0.,-178.308,-127.4445));
|
||||
#1320= IFCBOUNDINGBOX(#1316,1268.2595,356.616,254.88901);
|
||||
#1323= IFCCARTESIANPOINT((-1500.,0.,0.));
|
||||
#1327= IFCCARTESIANPOINT((0.,278.308,0.));
|
||||
#1331= IFCDIRECTION((-1.,0.,0.));
|
||||
#1335= IFCDIRECTION((0.,0.,1.));
|
||||
#1339= IFCAXIS2PLACEMENT3D(#1327,#1331,#1335);
|
||||
#1342= IFCPLANE(#1339);
|
||||
#1345= IFCHALFSPACESOLID(#1342,.F.);
|
||||
#1348= IFCBOOLEANCLIPPINGRESULT(.DIFFERENCE.,#1313,#1345);
|
||||
#1351= IFCSHAPEREPRESENTATION(#40,'Body','Clipping',(#1348));
|
||||
#1357= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#1320));
|
||||
#1363= IFCPRODUCTDEFINITIONSHAPE($,$,(#1351,#1357));
|
||||
#1367= IFCCARTESIANPOINT((4763.008,7620.,-178.308));
|
||||
#1371= IFCDIRECTION((0.,-1.,0.));
|
||||
#1375= IFCDIRECTION((1.,0.,-7.2832534E-15));
|
||||
#1379= IFCAXIS2PLACEMENT3D(#1367,#1371,#1375);
|
||||
#1382= IFCLOCALPLACEMENT($,#1379);
|
||||
#1385= IFCBEAM('13c6Dt00002p4nCpGmDZ0r',#65,'BEAM','W14X68',$,#1382,#1363,$);
|
||||
#1405= IFCSTRUCTURALPROFILEPROPERTIES('W14X68',$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$,$);
|
||||
#1406= IFCCARTESIANPOINT((0.,0.));
|
||||
#1410= IFCDIRECTION((1.,0.));
|
||||
#1414= IFCAXIS2PLACEMENT2D(#1406,#1410);
|
||||
#1417= IFCISHAPEPROFILEDEF(.AREA.,$,#1414,254.88901,356.616,12.7,18.288,21.3995);
|
||||
#1418= IFCDIRECTION((0.,0.,-1.));
|
||||
#1422= IFCDIRECTION((-1.,0.,0.));
|
||||
#1426= IFCAXIS2PLACEMENT3D(#21,#1422,#33);
|
||||
#1429= IFCEXTRUDEDAREASOLID(#1417,#1426,#1418,1524.);
|
||||
#1432= IFCCARTESIANPOINT((0.,-178.308,-127.4445));
|
||||
#1436= IFCBOUNDINGBOX(#1432,1524.,356.616,254.88901);
|
||||
#1439= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#1429));
|
||||
#1445= IFCSHAPEREPRESENTATION(#43,$,'BoundingBox',(#1436));
|
||||
#1451= IFCPRODUCTDEFINITIONSHAPE($,$,(#1439,#1445));
|
||||
#1455= IFCCARTESIANPOINT((4572.,7620.,-609.6));
|
||||
#1459= IFCDIRECTION((0.,-1.,0.));
|
||||
#1463= IFCDIRECTION((7.1613756E-15,0.,1.));
|
||||
#1467= IFCAXIS2PLACEMENT3D(#1455,#1459,#1463);
|
||||
#1470= IFCLOCALPLACEMENT($,#1467);
|
||||
#1473= IFCCOLUMN('13c6Dt00001p4nCpGmDZ0q',#65,'COLUMN','W14X68',$,#1470,#1451,$);
|
||||
#1492= IFCCARTESIANPOINT((4661.154,7490.05,308.83104));
|
||||
#1496= IFCDIRECTION((0.,1.,0.));
|
||||
#1500= IFCDIRECTION((-1.,0.,7.0134555E-15));
|
||||
#1504= IFCAXIS2PLACEMENT3D(#1492,#1496,#1500);
|
||||
#1507= IFCLOCALPLACEMENT($,#1504);
|
||||
#1510= IFCPOLYLINE((#1514,#1519,#1523,#1527,#1531,#1535,#1539,#1543,#1547,#1551,#1555,#1559,#1563,#1567,#1571,#1575,#1579,#1583,#1587,#1591,#1595,#1599,#1603,#1607,#1611,#1615,#1619,#1623,#1627,#1631,#1635,#1639,#1643,#1648,#1652,#1656,#1660));
|
||||
#1514= IFCCARTESIANPOINT((0.38429439,16.098194));
|
||||
#1519= IFCCARTESIANPOINT((0.,20.));
|
||||
#1523= IFCCARTESIANPOINT((0.,336.616));
|
||||
#1527= IFCCARTESIANPOINT((0.38429439,340.5178));
|
||||
#1531= IFCCARTESIANPOINT((1.5224093,344.26967));
|
||||
#1535= IFCCARTESIANPOINT((3.3706078,347.7274));
|
||||
#1539= IFCCARTESIANPOINT((5.8578644,350.75813));
|
||||
#1543= IFCCARTESIANPOINT((8.8885953,353.24539));
|
||||
#1547= IFCCARTESIANPOINT((12.346331,355.09359));
|
||||
#1551= IFCCARTESIANPOINT((16.098194,356.2317));
|
||||
#1555= IFCCARTESIANPOINT((20.,356.616));
|
||||
#1559= IFCCARTESIANPOINT((158.308,356.616));
|
||||
#1563= IFCCARTESIANPOINT((162.20981,356.2317));
|
||||
#1567= IFCCARTESIANPOINT((165.96167,355.09359));
|
||||
#1571= IFCCARTESIANPOINT((169.4194,353.24539));
|
||||
#1575= IFCCARTESIANPOINT((172.45013,350.75813));
|
||||
#1579= IFCCARTESIANPOINT((174.93739,347.7274));
|
||||
#1583= IFCCARTESIANPOINT((176.78559,344.26967));
|
||||
#1587= IFCCARTESIANPOINT((177.9237,340.5178));
|
||||
#1591= IFCCARTESIANPOINT((178.308,336.616));
|
||||
#1595= IFCCARTESIANPOINT((178.308,20.));
|
||||
#1599= IFCCARTESIANPOINT((177.9237,16.098194));
|
||||
#1603= IFCCARTESIANPOINT((176.78559,12.346331));
|
||||
#1607= IFCCARTESIANPOINT((174.93739,8.8885953));
|
||||
#1611= IFCCARTESIANPOINT((172.45013,5.8578644));
|
||||
#1615= IFCCARTESIANPOINT((169.4194,3.3706078));
|
||||
#1619= IFCCARTESIANPOINT((165.96167,1.5224093));
|
||||
#1623= IFCCARTESIANPOINT((162.20981,0.38429439));
|
||||
#1627= IFCCARTESIANPOINT((158.308,0.));
|
||||
#1631= IFCCARTESIANPOINT((20.,0.));
|
||||
#1635= IFCCARTESIANPOINT((16.098194,0.38429439));
|
||||
#1639= IFCCARTESIANPOINT((12.346331,1.5224093));
|
||||
#1643= IFCCARTESIANPOINT((8.8885953,3.3706078));
|
||||
#1648= IFCCARTESIANPOINT((5.8578644,5.8578644));
|
||||
#1652= IFCCARTESIANPOINT((3.3706078,8.8885953));
|
||||
#1656= IFCCARTESIANPOINT((1.5224093,12.346331));
|
||||
#1660= IFCCARTESIANPOINT((0.38429439,16.098194));
|
||||
#1664= IFCARBITRARYCLOSEDPROFILEDEF(.AREA.,'PL259.9',#1510);
|
||||
#1665= IFCAXIS2PLACEMENT3D(#21,#33,#25);
|
||||
#1668= IFCEXTRUDEDAREASOLID(#1664,#1665,#33,259.9);
|
||||
#1671= IFCSHAPEREPRESENTATION(#40,'Body','SweptSolid',(#1668));
|
||||
#1677= IFCPRODUCTDEFINITIONSHAPE($,$,(#1671));
|
||||
#1681= IFCOPENINGELEMENT('13c6Dt0002m34nCpGmDZ4o',#65,$,$,$,#1507,#1677,$);
|
||||
#1702= IFCRELVOIDSELEMENT('2WI1gpRhj1dwB5Pft5vGvO',#65,$,$,#1473,#1681);
|
||||
#1703= IFCRELASSOCIATESMATERIAL('1GOaWfy957kRCtp2R28$a9',#9,$,$,(#1193),#59);
|
||||
#1705= IFCRELASSOCIATESMATERIAL('3Vqwp2DmT3TeKWHZyFzO7N',#9,$,$,(#1473,#1385,#633),#56);
|
||||
#1707= IFCRELASSOCIATESMATERIAL('0SMrmHf_5BRAYDVih2VNTN',#9,$,$,(#1078,#982,#895,#808,#720,#521,#434,#350,#268,#174),#53);
|
||||
#1709= IFCRELASSOCIATESPROFILEPROPERTIES('2mzP0x3pj2GwUm7Wy7Xfs0',#9,$,$,(#633),#652,$,$);
|
||||
#1711= IFCRELASSOCIATESPROFILEPROPERTIES('1iUJLoCsfD6ug6keUDRGVW',#9,$,$,(#808),#739,$,$);
|
||||
#1713= IFCRELASSOCIATESPROFILEPROPERTIES('1LidMEK_vEQuG8Js1MD1ND',#9,$,$,(#895,#982),#914,$,$);
|
||||
#1715= IFCRELASSOCIATESPROFILEPROPERTIES('22dp9maVb0sAxZG8F2xTIR',#9,$,$,(#1193),#1289,$,$);
|
||||
#1717= IFCRELASSOCIATESPROFILEPROPERTIES('36LPEeuXn6VgX3frK_urjy',#9,$,$,(#1385),#1405,$,$);
|
||||
ENDSEC;
|
||||
|
||||
END-ISO-10303-21;
|
||||
@@ -1,16 +0,0 @@
|
||||
const fs = require( 'fs' )
|
||||
const Parser = require( './parser' )
|
||||
|
||||
const myParser = new Parser()
|
||||
// const data = fs.readFileSync( './ifcs/20160414office_model_CV2_fordesign.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/231110AC11-Institute-Var-2-IFC.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/231110ADT-FZK-Haus-2005-2006.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/small.ifc' )
|
||||
const data = fs.readFileSync( './ifcs/example.ifc' )
|
||||
|
||||
async function load() {
|
||||
const parsed = await myParser.parse( data )
|
||||
console.log( parsed )
|
||||
}
|
||||
|
||||
load()
|
||||
@@ -0,0 +1,8 @@
|
||||
'use strict'
|
||||
|
||||
module.exports = require( 'knex' )( {
|
||||
client: 'pg',
|
||||
connection: process.env.PG_CONNECTION_STRING || 'postgres://speckle:speckle@localhost/speckle',
|
||||
pool: { min: 1, max: 1 }
|
||||
// migrations are in managed in the server package
|
||||
} )
|
||||
Generated
+271
-1149
File diff suppressed because it is too large
Load Diff
@@ -17,7 +17,10 @@
|
||||
"url": "https://github.com/specklesystems/speckle-server/issues"
|
||||
},
|
||||
"dependencies": {
|
||||
"crypto-random-string": "^3.3.1",
|
||||
"eslint": "^7.29.0",
|
||||
"web-ifc": "0.0.19"
|
||||
"knex": "^0.95.11",
|
||||
"pg": "^8.7.1",
|
||||
"web-ifc": "0.0.24"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,198 +0,0 @@
|
||||
const WebIFC = require( 'web-ifc/web-ifc-api-node' )
|
||||
|
||||
module.exports = class IFCParser {
|
||||
constructor() {
|
||||
this.api = new WebIFC.IfcAPI()
|
||||
}
|
||||
|
||||
async parse( data ) {
|
||||
if ( this.api.wasmModule === undefined ) await this.api.Init()
|
||||
|
||||
this.modelId = this.api.OpenModel( data, { COORDINATE_TO_ORIGIN: true, USE_FAST_BOOLS: true } )
|
||||
|
||||
this.projectId = this.api.GetLineIDsWithType( this.modelId, WebIFC.IFCPROJECT ).get( 0 )
|
||||
|
||||
this.project = this.api.GetLine( this.modelId, this.projectId, true )
|
||||
|
||||
this.createGeometries()
|
||||
let map = {}
|
||||
this.traverse( this.project, true, 0, map )
|
||||
|
||||
return this.project
|
||||
}
|
||||
|
||||
createGeometries() {
|
||||
// NOTE: this is where we can alreadt create speckle meshes and plop them in the db.
|
||||
this.rawGeo = this.api.LoadAllGeometry( this.modelId )
|
||||
this.productGeo = {}
|
||||
let materialMap = {}
|
||||
for( let i = 0; i < this.rawGeo.size(); i++ ) {
|
||||
const mesh = this.rawGeo.get( i )
|
||||
const prodId = mesh.expressID
|
||||
this.productGeo[prodId ] = []
|
||||
|
||||
for( let j = 0; j < mesh.geometries.size(); j++ ) {
|
||||
let geom = this.api.GetGeometry( this.modelId, mesh.geometries.get( j ).geometryExpressID )
|
||||
|
||||
let raw = {
|
||||
color: geom.color, // NOTE: material: x, y, z = rgb, w = opacity
|
||||
vertices: this.api.GetVertexArray( geom.GetVertexData(), geom.GetVertexDataSize() ),
|
||||
indices: this.api.GetIndexArray( geom.GetIndexData(), geom.GetIndexDataSize() )
|
||||
}
|
||||
|
||||
// Since all faces are triangles, we must add a `0` before each group of 3.
|
||||
let spcklFaces = [ ]
|
||||
for ( let i = 0; i < raw.indices.length; i++ ) {
|
||||
if( i % 3 === 0 )
|
||||
spcklFaces.push( 0 )
|
||||
spcklFaces.push( raw.indices[i] )
|
||||
|
||||
}
|
||||
|
||||
// Create a propper Speckle Mesh
|
||||
let spcklMesh = {
|
||||
speckle_type: 'Objects.Geometry.Mesh',
|
||||
units: 'm',
|
||||
volume: 0,
|
||||
area: 0,
|
||||
faces: spcklFaces,
|
||||
vertices: raw.vertices,
|
||||
renderMaterial: geom.color ? this.colorToSpeckleMaterial( geom.color.r, geom.color.g, geom.color.b, materialMap ) : undefined
|
||||
}
|
||||
|
||||
//TODO: Send the mesh and swap for speckle ref
|
||||
let ref = spcklMesh
|
||||
|
||||
this.productGeo[prodId].push( ref )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
traverse( element, recursive = true, depth = 0, map = {} ) {
|
||||
|
||||
// Fast exit if null/undefined
|
||||
if ( !element ) return
|
||||
|
||||
depth++
|
||||
|
||||
// If array, traverse all items in it.
|
||||
if( Array.isArray( element ) ) {
|
||||
return element.map( el => this.traverse( el,recursive,depth, map ) )
|
||||
}
|
||||
|
||||
// If it has no expressID, its either a simple type or a { type, value } object.
|
||||
if( !element.expressID ) {
|
||||
return element.value !== null && element.value !== undefined ? element.value : element
|
||||
}
|
||||
|
||||
// If the expressID already exists in the map, return whatever is in there.
|
||||
if( map[element.expressID] ) {
|
||||
return map[element.expressID]
|
||||
}
|
||||
|
||||
// If you got here -> It's an IFC Element: create base object, upload and return ref.
|
||||
console.log( `Traversing element ${element.expressID}; Recurse: ${recursive}; Stack ${depth}` )
|
||||
|
||||
// Traverse all key/value pairs first.
|
||||
Object.keys( element ).forEach( key => {
|
||||
element[key] = this.traverse( element[key], recursive, depth, map )
|
||||
} )
|
||||
|
||||
// Assign speckle_type and empty closure table.
|
||||
element.speckle_type = element.constructor.name
|
||||
element.__closure = {}
|
||||
|
||||
// Find spatial children and assign to element
|
||||
const spatialChildrenIds = this.getAllRelatedItemsOfType( element.expressID, WebIFC.IFCRELAGGREGATES, 'RelatingObject', 'RelatedObjects' )
|
||||
if( spatialChildrenIds.length > 0 ) element.spatialChildren = spatialChildrenIds.map( ( childId ) => this.api.GetLine( this.modelId, childId, true ) )
|
||||
|
||||
// Find children and populate element
|
||||
const childrenIds = this.getAllRelatedItemsOfType( element.expressID, WebIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE, 'RelatingStructure', 'RelatedElements' )
|
||||
if( childrenIds.length > 0 ) element.children = childrenIds.map( ( childId ) => this.api.GetLine( this.modelId, childId, true ) )
|
||||
|
||||
// Lookup geometry in generated geometries object
|
||||
if( this.productGeo[element.expressID] ) {
|
||||
element['@displayMesh'] = this.productGeo[element.expressID]
|
||||
// TODO: Add detached mesh to closure table.
|
||||
}
|
||||
|
||||
// Recurse all children
|
||||
if ( recursive ) {
|
||||
if( element.spatialChildren ) element.spatialChildren.forEach( ( child ) => this.traverse( child, recursive, depth, map ) )
|
||||
// NOTE: unsure if this is needed.
|
||||
if ( element.children ) element.children.forEach( ( child ) => this.traverse( child, recursive, depth, map ) )
|
||||
}
|
||||
|
||||
// TODO: Detach and swap `element.expressID` for ref!
|
||||
let ref = element.expressID
|
||||
|
||||
// Create ref object with returned id, add it to the map and return the ref back.
|
||||
const refObject = { referenceId: ref, speckle_type: 'reference' }
|
||||
map[element.expressID] = refObject
|
||||
return refObject
|
||||
}
|
||||
|
||||
// (c) https://github.com/agviegas/web-ifc-three/blob/907e08b5673d5e1c18261a4fceade7189d6b2db7/src/IFC/PropertyManager.ts#L110
|
||||
getAllRelatedItemsOfType( elementID, type, relation, relatedProperty ) {
|
||||
const lines = this.api.GetLineIDsWithType( this.modelId, type )
|
||||
const IDs = []
|
||||
|
||||
for ( let i = 0; i < lines.size(); i++ ) {
|
||||
const relID = lines.get( i )
|
||||
const rel = this.api.GetLine( this.modelId, relID )
|
||||
const relatedItems = rel[relation]
|
||||
let foundElement = false
|
||||
|
||||
if ( Array.isArray( relatedItems ) ) {
|
||||
const values = relatedItems.map( ( item ) => item.value )
|
||||
foundElement = values.includes( elementID )
|
||||
} else foundElement = ( relatedItems.value === elementID )
|
||||
|
||||
if ( foundElement ) {
|
||||
const element = rel[relatedProperty]
|
||||
if ( !Array.isArray( element ) ) IDs.push( element.value )
|
||||
else element.forEach( ( ele ) => IDs.push( ele.value ) )
|
||||
}
|
||||
}
|
||||
|
||||
return IDs
|
||||
}
|
||||
|
||||
/** Returns a ref object for the material given (r,g,b) values with an optional map for memoization. */
|
||||
colorToSpeckleMaterial( r,g,b, materialMap = {} ) {
|
||||
function rgba2int( r, g, b, a ) {
|
||||
if ( typeof r === 'string' && arguments.length === 1 ) {
|
||||
const [ r1, g1, b1, a1 ] = r
|
||||
.match( /^rgba?\((\d+\.?\d*)[,\s]*(\d+\.?\d*)[,\s]*(\d+\.?\d*)[,\s\/]*(.+)?\)$/ )
|
||||
.slice( 1 );
|
||||
[ r, g, b ] = [ r1, g1, b1 ].map( ( v ) => parseFloat( v ) )
|
||||
a = a1
|
||||
? a1.endsWith( '%' )
|
||||
? parseInt( a1.substring( 0, a1.length - 1 ), 10 ) / 100
|
||||
: parseFloat( a1 )
|
||||
: null
|
||||
}
|
||||
return a
|
||||
? ( ( r & 0xff ) << 24 ) + ( ( g & 0xff ) << 16 ) + ( ( b & 0xff ) << 8 ) + ( Math.floor( a * 0xff ) & 0xff )
|
||||
: ( ( r & 0xff ) << 16 ) + ( ( g & 0xff ) << 8 ) + ( b & 0xff )
|
||||
}
|
||||
let intColor = rgba2int( r, g, b )
|
||||
if( materialMap[intColor] ) return materialMap[intColor]
|
||||
|
||||
let material = {
|
||||
diffuse: intColor,
|
||||
opacity: 1,
|
||||
emissive: rgba2int( 0, 0, 0 ),
|
||||
metalness: 0,
|
||||
roughness: 1,
|
||||
speckle_type: 'Objects.Other.RenderMaterial'
|
||||
}
|
||||
|
||||
// TODO: Detach and swap for ref object!
|
||||
let ref = material
|
||||
|
||||
// Add ref to material map
|
||||
materialMap[intColor] = ref
|
||||
return ref
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,142 @@
|
||||
'use strict'
|
||||
const crypto = require( 'crypto' )
|
||||
const crs = require( 'crypto-random-string' )
|
||||
|
||||
const knex = require( '../knex' )
|
||||
const Streams = ( ) => knex( 'streams' )
|
||||
const Branches = ( ) => knex( 'branches' )
|
||||
const Commits = ( ) => knex( 'commits' )
|
||||
const Objects = ( ) => knex( 'objects' )
|
||||
const Closures = ( ) => knex( 'object_children_closure' )
|
||||
|
||||
const StreamCommits = ( ) => knex( 'stream_commits' )
|
||||
const BranchCommits = ( ) => knex( 'branch_commits' )
|
||||
|
||||
module.exports = class ServerAPI {
|
||||
|
||||
constructor( { streamId } ) {
|
||||
this.streamId = streamId
|
||||
this.isSending = false
|
||||
this.buffer = []
|
||||
}
|
||||
|
||||
async saveObject( obj ) {
|
||||
if( !obj ) throw new Error( 'Null object' )
|
||||
|
||||
if( !obj.id ) {
|
||||
obj.id = crypto.createHash( 'md5' ).update( JSON.stringify( obj ) ).digest( 'hex' )
|
||||
}
|
||||
|
||||
await this.createObject( this.streamId, obj )
|
||||
|
||||
return obj.id
|
||||
}
|
||||
|
||||
async createObject( streamId, object ) {
|
||||
let insertionObject = this.prepInsertionObject( streamId, object )
|
||||
|
||||
let closures = [ ]
|
||||
let totalChildrenCountByDepth = {}
|
||||
if ( object.__closure !== null ) {
|
||||
for ( const prop in object.__closure ) {
|
||||
closures.push( { streamId: streamId, parent: insertionObject.id, child: prop, minDepth: object.__closure[ prop ] } )
|
||||
|
||||
if ( totalChildrenCountByDepth[ object.__closure[ prop ].toString( ) ] )
|
||||
totalChildrenCountByDepth[ object.__closure[ prop ].toString( ) ]++
|
||||
else
|
||||
totalChildrenCountByDepth[ object.__closure[ prop ].toString( ) ] = 1
|
||||
}
|
||||
}
|
||||
|
||||
delete insertionObject.__tree
|
||||
delete insertionObject.__closure
|
||||
|
||||
insertionObject.totalChildrenCount = closures.length
|
||||
insertionObject.totalChildrenCountByDepth = JSON.stringify( totalChildrenCountByDepth )
|
||||
|
||||
let q1 = Objects( ).insert( insertionObject ).toString( ) + ' on conflict do nothing'
|
||||
await knex.raw( q1 )
|
||||
|
||||
if ( closures.length > 0 ) {
|
||||
let q2 = `${ Closures().insert( closures ).toString() } on conflict do nothing`
|
||||
await knex.raw( q2 )
|
||||
}
|
||||
|
||||
return insertionObject.id
|
||||
}
|
||||
|
||||
prepInsertionObject( streamId, obj ) {
|
||||
const MAX_OBJECT_SIZE = 10 * 1024 * 1024
|
||||
|
||||
if ( obj.hash )
|
||||
obj.id = obj.hash
|
||||
else
|
||||
obj.id = obj.id || crypto.createHash( 'md5' ).update( JSON.stringify( obj ) ).digest( 'hex' ) // generate a hash if none is present
|
||||
|
||||
let stringifiedObj = JSON.stringify( obj )
|
||||
if ( stringifiedObj.length > MAX_OBJECT_SIZE ) {
|
||||
throw new Error( `Object too large (${stringifiedObj.length} > ${MAX_OBJECT_SIZE})` )
|
||||
}
|
||||
|
||||
return {
|
||||
data: stringifiedObj, // stored in jsonb column
|
||||
streamId: streamId,
|
||||
id: obj.id,
|
||||
speckleType: obj.speckleType
|
||||
}
|
||||
}
|
||||
|
||||
async createCommitByBranchName( { streamId, branchName, objectId, authorId, message, sourceApplication, totalChildrenCount, parents } ) {
|
||||
branchName = branchName.toLowerCase( )
|
||||
let myBranch = await this.getBranchByNameAndStreamId( { streamId: streamId, name: branchName } )
|
||||
|
||||
if ( !myBranch )
|
||||
throw new Error( `Failed to find branch with name ${branchName}.` )
|
||||
|
||||
return await this.createCommitByBranchId( { streamId, branchId: myBranch.id, objectId, authorId, message, sourceApplication, totalChildrenCount, parents } )
|
||||
}
|
||||
|
||||
async getBranchByNameAndStreamId( { streamId, name } ) {
|
||||
let query = Branches( ).select( '*' ).where( { streamId: streamId } ).andWhere( knex.raw( 'LOWER(name) = ?', [ name ] ) ).first( )
|
||||
return await query
|
||||
}
|
||||
|
||||
async createBranch( { name, description, streamId, authorId } ) {
|
||||
let branch = {}
|
||||
branch.id = crs( { length: 10 } )
|
||||
branch.streamId = streamId
|
||||
branch.authorId = authorId
|
||||
branch.name = name.toLowerCase( )
|
||||
branch.description = description
|
||||
|
||||
await Branches( ).returning( 'id' ).insert( branch )
|
||||
|
||||
// update stream updated at
|
||||
await Streams().where( { id: streamId } ).update( { updatedAt: knex.fn.now() } )
|
||||
|
||||
return branch.id
|
||||
}
|
||||
|
||||
async createCommitByBranchId( { streamId, branchId, objectId, authorId, message, sourceApplication, totalChildrenCount, parents } ) {
|
||||
// Create main table entry
|
||||
let [ id ] = await Commits( ).returning( 'id' ).insert( {
|
||||
id: crs( { length: 10 } ),
|
||||
referencedObject: objectId,
|
||||
author: authorId,
|
||||
sourceApplication,
|
||||
totalChildrenCount,
|
||||
parents,
|
||||
message
|
||||
} )
|
||||
|
||||
// Link it to a branch
|
||||
await BranchCommits( ).insert( { branchId: branchId, commitId: id } )
|
||||
// Link it to a stream
|
||||
await StreamCommits( ).insert( { streamId: streamId,commitId: id } )
|
||||
|
||||
// update stream updated at
|
||||
await Streams().where( { id: streamId } ).update( { updatedAt: knex.fn.now() } )
|
||||
return id
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
const fs = require( 'fs' )
|
||||
const Parser = require( './parser' )
|
||||
const ServerAPI = require( './api.js' )
|
||||
|
||||
// Hard coded local vars
|
||||
const streamId = '27d29ef972'
|
||||
// const branchName = 'main'
|
||||
const userId = 'e24eb8e7e4'
|
||||
|
||||
// NOTE: not all the files below are present in the repo. Moreover, not all of the ones in the repo
|
||||
// work properly, as we're dependent on the web-ifc library, whose support is partially limited, and/or
|
||||
// the files are corrupt/do not pass validation. Welcome to IFC!
|
||||
// const data = fs.readFileSync( './ifcs/20160414office_model_CV2_fordesign.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/hospital.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/primark.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/231110AC11-Institute-Var-2-IFC.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/small.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/example.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/steelplates.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/piping.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/railing.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/hall.ifc' )
|
||||
// const data = fs.readFileSync( './ifcs/231110ADT-FZK-Haus-2005-2006.ifc' )
|
||||
const data = fs.readFileSync( './ifcs/crazy.ifc' )
|
||||
|
||||
async function parseAndCreateCommit( { data, streamId, branchName = 'uploads', userId, message = 'Manual IFC file upload' } ) {
|
||||
const serverApi = new ServerAPI( { streamId } )
|
||||
const myParser = new Parser( { serverApi } )
|
||||
|
||||
const { id, tCount } = await myParser.parse( data )
|
||||
|
||||
let commit = {
|
||||
streamId: streamId,
|
||||
branchName: branchName,
|
||||
objectId: id,
|
||||
authorId: userId,
|
||||
message: message,
|
||||
sourceApplication: 'IFC',
|
||||
totalChildrenCount: tCount
|
||||
}
|
||||
|
||||
let branch = await serverApi.getBranchByNameAndStreamId( { streamId: streamId, name: branchName } )
|
||||
|
||||
if( !branch ) {
|
||||
await serverApi.createBranch( {
|
||||
name: branchName,
|
||||
streamId: streamId,
|
||||
description: branchName === 'uploads' ? 'File upload branch' : null,
|
||||
authorId: userId
|
||||
} )
|
||||
}
|
||||
|
||||
await serverApi.createCommitByBranchName( commit )
|
||||
|
||||
console.log( commit )
|
||||
// console.log( "TODO: save commit" )
|
||||
}
|
||||
|
||||
parseAndCreateCommit( {
|
||||
data,
|
||||
streamId,
|
||||
userId
|
||||
} )
|
||||
@@ -0,0 +1,251 @@
|
||||
const WebIFC = require( 'web-ifc/web-ifc-api-node' )
|
||||
const ServerAPI = require( './api.js' )
|
||||
|
||||
module.exports = class IFCParser {
|
||||
|
||||
constructor( { serverApi } ) {
|
||||
this.api = new WebIFC.IfcAPI()
|
||||
this.serverApi = serverApi || new ServerAPI()
|
||||
}
|
||||
|
||||
async parse( data ) {
|
||||
if ( this.api.wasmModule === undefined ) await this.api.Init()
|
||||
|
||||
this.modelId = this.api.OpenModel( data, { COORDINATE_TO_ORIGIN: true, USE_FAST_BOOLS: true } )
|
||||
|
||||
this.projectId = this.api.GetLineIDsWithType( this.modelId, WebIFC.IFCPROJECT ).get( 0 )
|
||||
|
||||
this.project = this.api.GetLine( this.modelId, this.projectId, true )
|
||||
this.project.__closure = {}
|
||||
|
||||
this.cache = {}
|
||||
this.closureCache = {}
|
||||
|
||||
// Steps: create and store in speckle all the geometries (meshes) from this project and store them
|
||||
// as reference objects in this.productGeo
|
||||
this.productGeo = {}
|
||||
await this.createGeometries()
|
||||
console.log( `Geometries created: ${Object.keys( this.productGeo ).length} meshes.` )
|
||||
|
||||
// Lastly, traverse the ifc project object and parse it into something friendly; as well as
|
||||
// replace all its geometries with actual references to speckle meshes from the productGeo map
|
||||
|
||||
await this.traverse( this.project, true, 0 )
|
||||
|
||||
let id = await this.serverApi.saveObject( this.project )
|
||||
return { id, tCount: Object.keys( this.project.__closure ).length }
|
||||
}
|
||||
|
||||
async createGeometries() {
|
||||
this.rawGeo = this.api.LoadAllGeometry( this.modelId )
|
||||
|
||||
for( let i = 0; i < this.rawGeo.size(); i++ ) {
|
||||
const mesh = this.rawGeo.get( i )
|
||||
const prodId = mesh.expressID
|
||||
this.productGeo[prodId ] = []
|
||||
|
||||
for( let j = 0; j < mesh.geometries.size(); j++ ) {
|
||||
let placedGeom = mesh.geometries.get( j )
|
||||
let geom = this.api.GetGeometry( this.modelId, placedGeom.geometryExpressID )
|
||||
|
||||
let matrix = placedGeom.flatTransformation
|
||||
let raw = {
|
||||
color: geom.color, // NOTE: material: x, y, z = rgb, w = opacity
|
||||
vertices: this.api.GetVertexArray( geom.GetVertexData(), geom.GetVertexDataSize() ),
|
||||
indices: this.api.GetIndexArray( geom.GetIndexData(), geom.GetIndexDataSize() )
|
||||
}
|
||||
|
||||
const { vertices } = this.extractVertexData( raw.vertices )
|
||||
|
||||
for( let k = 0; k < vertices.length; k += 3 ) {
|
||||
let x = vertices[k], y = vertices[k + 1], z = vertices[k + 2]
|
||||
vertices[k] = matrix[0] * x + matrix[4] * y + matrix[8] * z + matrix[12]
|
||||
vertices[k + 1] = ( matrix[2] * x + matrix[6] * y + matrix[10] * z + matrix[14] ) * -1
|
||||
vertices[k + 2] = matrix[1] * x + matrix[5] * y + matrix[9] * z + matrix[13]
|
||||
}
|
||||
|
||||
// Since all faces are triangles, we must add a `0` before each group of 3.
|
||||
let spcklFaces = [ ]
|
||||
for ( let i = 0; i < raw.indices.length; i++ ) {
|
||||
if( i % 3 === 0 )
|
||||
spcklFaces.push( 0 )
|
||||
spcklFaces.push( raw.indices[i] )
|
||||
}
|
||||
|
||||
// Create a propper Speckle Mesh
|
||||
let spcklMesh = {
|
||||
speckle_type: 'Objects.Geometry.Mesh',
|
||||
units: 'm',
|
||||
volume: 0,
|
||||
area: 0,
|
||||
faces: spcklFaces,
|
||||
vertices: Array.from( vertices ),
|
||||
renderMaterial: placedGeom.color ? this.colorToMaterial( placedGeom.color ) : null
|
||||
}
|
||||
|
||||
let id = await this.serverApi.saveObject( spcklMesh )
|
||||
let ref = { speckle_type: 'reference', referencedId: id }
|
||||
this.productGeo[prodId].push( ref )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async traverse( element, recursive = true, depth = 0 ) {
|
||||
|
||||
// Fast exit if null/undefined
|
||||
if ( !element ) return
|
||||
|
||||
|
||||
// If array, traverse all items in it.
|
||||
if( Array.isArray( element ) ) {
|
||||
return element.map( async el => await this.traverse( el,recursive, depth + 1 ) )
|
||||
}
|
||||
|
||||
// If it has no expressID, its either a simple type or a { type, value } object.
|
||||
if( !element.expressID ) {
|
||||
return element.value !== null && element.value !== undefined ? element.value : element
|
||||
}
|
||||
|
||||
if( this.cache[element.expressID.toString()] ) return this.cache[element.expressID.toString()]
|
||||
// If you got here -> It's an IFC Element: create base object, upload and return ref.
|
||||
// console.log( `Traversing element ${element.expressID}; Recurse: ${recursive}; Stack ${depth}` )
|
||||
|
||||
// Traverse all key/value pairs first.
|
||||
for( let key of Object.keys( element ) ) {
|
||||
element[key] = await this.traverse( element[key], recursive, depth + 1 )
|
||||
}
|
||||
|
||||
// Assign speckle_type and empty closure table.
|
||||
element.speckle_type = element.constructor.name
|
||||
element.__closure = {}
|
||||
|
||||
// Find spatial children and assign to element
|
||||
const spatialChildrenIds = this.getAllRelatedItemsOfType( element.expressID, WebIFC.IFCRELAGGREGATES, 'RelatingObject', 'RelatedObjects' )
|
||||
if( spatialChildrenIds.length > 0 ) element.rawSpatialChildren = spatialChildrenIds.map( ( childId ) => this.api.GetLine( this.modelId, childId, true ) )
|
||||
|
||||
// Find children and populate element
|
||||
const childrenIds = this.getAllRelatedItemsOfType( element.expressID, WebIFC.IFCRELCONTAINEDINSPATIALSTRUCTURE, 'RelatingStructure', 'RelatedElements' )
|
||||
if( childrenIds.length > 0 ) element.rawChildren = childrenIds.map( ( childId ) => this.api.GetLine( this.modelId, childId, true ) )
|
||||
|
||||
// Lookup geometry in generated geometries object
|
||||
if( this.productGeo[element.expressID] ) {
|
||||
element['@displayValue'] = this.productGeo[element.expressID]
|
||||
this.productGeo[element.expressID].forEach( ref => {
|
||||
this.project.__closure[ref.referencedId.toString()] = depth
|
||||
element.__closure[ref.referencedId.toString()] = 1
|
||||
} )
|
||||
}
|
||||
|
||||
// Recurse all children
|
||||
if ( recursive ) {
|
||||
|
||||
if( element.rawSpatialChildren ) {
|
||||
element.spatialChildren = []
|
||||
for( let child of element.rawSpatialChildren ) {
|
||||
let res = await this.traverse( child, recursive, depth + 1 )
|
||||
if( res.referencedId ) {
|
||||
element.spatialChildren.push( res )
|
||||
this.project.__closure[res.referencedId.toString()] = depth
|
||||
element.__closure[res.referencedId.toString()] = 1
|
||||
|
||||
// adds to parent (this element) the child's closure tree.
|
||||
if( this.closureCache[child.expressID.toString()] ) {
|
||||
for( let key of Object.keys( this.closureCache[child.expressID.toString()] ) ) {
|
||||
element.__closure[key] = this.closureCache[child.expressID.toString()][key] + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delete element.rawSpatialChildren
|
||||
}
|
||||
|
||||
if ( element.rawChildren ) {
|
||||
element.children = []
|
||||
for( let child of element.rawChildren ) {
|
||||
let res = await this.traverse( child, recursive, depth + 1 )
|
||||
if( res.referencedId ) {
|
||||
element.children.push( res )
|
||||
this.project.__closure[res.referencedId.toString()] = depth
|
||||
element.__closure[res.referencedId.toString()] = 1
|
||||
|
||||
// adds to parent (this element) the child's closure tree.
|
||||
if( this.closureCache[child.expressID.toString()] ) {
|
||||
for( let key of Object.keys( this.closureCache[child.expressID.toString()] ) ) {
|
||||
element.__closure[key] = this.closureCache[child.expressID.toString()][key] + 1
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
delete element.rawChildren
|
||||
}
|
||||
|
||||
if( element.children || element.spatialChildren ) {
|
||||
console.log( `${element.constructor.name} ${element.GlobalId}: children count: ${ element.children ? element.children.length : '0'}; spatial children count: ${element.spatialChildren ? element.spatialChildren.length : '0'} ` )
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if( this.productGeo[element.expressID] || element.spatialChildren || element.children ) {
|
||||
let id = await this.serverApi.saveObject( element )
|
||||
let ref = { speckle_type: 'reference', referencedId: id }
|
||||
this.cache[element.expressID.toString()] = ref
|
||||
this.closureCache[element.expressID.toString()] = element.__closure
|
||||
return ref
|
||||
} else {
|
||||
this.cache[element.expressID.toString()] = element
|
||||
this.closureCache[element.expressID.toString()] = element.__closure
|
||||
return element
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// (c) https://github.com/agviegas/web-ifc-three
|
||||
extractVertexData( vertexData ) {
|
||||
const vertices = []
|
||||
const normals = []
|
||||
let isNormalData = false
|
||||
for ( let i = 0; i < vertexData.length; i++ ) {
|
||||
isNormalData ? normals.push( vertexData[i] ) : vertices.push( vertexData[i] )
|
||||
if ( ( i + 1 ) % 3 === 0 ) isNormalData = !isNormalData
|
||||
}
|
||||
return { vertices, normals }
|
||||
}
|
||||
|
||||
// (c) https://github.com/agviegas/web-ifc-three/blob/907e08b5673d5e1c18261a4fceade7189d6b2db7/src/IFC/PropertyManager.ts#L110
|
||||
getAllRelatedItemsOfType( elementID, type, relation, relatedProperty ) {
|
||||
const lines = this.api.GetLineIDsWithType( this.modelId, type )
|
||||
const IDs = []
|
||||
|
||||
for ( let i = 0; i < lines.size(); i++ ) {
|
||||
const relID = lines.get( i )
|
||||
const rel = this.api.GetLine( this.modelId, relID )
|
||||
const relatedItems = rel[relation]
|
||||
let foundElement = false
|
||||
|
||||
if ( Array.isArray( relatedItems ) ) {
|
||||
const values = relatedItems.map( ( item ) => item.value )
|
||||
foundElement = values.includes( elementID )
|
||||
} else foundElement = ( relatedItems.value === elementID )
|
||||
|
||||
if ( foundElement ) {
|
||||
const element = rel[relatedProperty]
|
||||
if ( !Array.isArray( element ) ) IDs.push( element.value )
|
||||
else element.forEach( ( ele ) => IDs.push( ele.value ) )
|
||||
}
|
||||
}
|
||||
|
||||
return IDs
|
||||
}
|
||||
|
||||
colorToMaterial( color ) {
|
||||
let intColor = ( color.w << 24 ) + ( ( color.x * 255 ) << 16 ) + ( ( color.y * 255 ) << 8 ) + ( ( color.z * 255 ) )
|
||||
|
||||
return {
|
||||
diffuse: intColor,
|
||||
opacity: color.w,
|
||||
metalness: 0,
|
||||
roughness: 1,
|
||||
speckle_type: 'Objects.Other.RenderMaterial'
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -74,7 +74,7 @@ export default class Coverter {
|
||||
let val = await this.resolveReference( element )
|
||||
if ( !val.units ) val.units = obj.units
|
||||
let { bufferGeometry } = await this.convert( val, scale )
|
||||
callback( new ObjectWrapper( bufferGeometry, { renderMaterial: val.renderMaterial } ) )
|
||||
callback( new ObjectWrapper( bufferGeometry, { renderMaterial: val.renderMaterial, ...obj } ) )
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user